HTML4/HTML5+CSS2/CSS3
一、HTML
1.什么是HTML 语义化,有什么好处
是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化),简单来说就是,标签用语义化的英文单词或者单词缩写,比如段落使用
缺点:
1)web storage和web socket这样的功能很容易被黑客利用,安全性差;
2)兼容性不好,很多浏览器的支持程度不一样;
3)有一定的技术门槛;
4)某些平台上的引擎问题导致HTML5性能低下
3.HTML4和HTML5有啥区别
1.DOCTYPE声明的简化 HTM5不基于SGML因此不需要引用DTD
2.指定字符编码
HTML5:
HTML4:
3.新增内联SVG和Canvas ,
Canvas和SVG的区别?
Canvas和SVG是html5支持的两种可视化技术。基于这两种技术,诞生了很多可视化工具。Echarts是基于Canvas技术的可视化工具,底层封装了原生的JavaScript的绘图 API。我们很容易联想到另一个同样很优秀的web前端可视化库D3,D3是也最流行的可视化库之一,它被很多其他的表格插件所使用。
D3底层基于SVG技术,与Canvas完全不一样,SVG的本质是一个XML 文档。这两种方式在功能上是等同的,任何一种都可以用另一种来模拟。它们都是有效的图形工具,可用来快速创建在网页中显示的轻型图形;它们都使用 JavaScript 和 HTML;它们都遵守万维网联合会 (W3C) 标准。Canvas和SVG都允许您在浏览器中创建图形,但是它们在根本上是不同的。它们很不相同,他们各有强项和弱点。
Canvas 通过JavaScript来绘制2D图形。Canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。
SVG 是一种使用 XML 描述 2D 图形的语言。SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
这两种技术之间的主要区别是:
Canvas 是基于像素的即时模式图形系统,最适合较小的表面或较大数量的对象,Canvas不支持鼠标键盘等事件。
SVG 是基于形状的保留模式图形系统,更加适合较大的表面或较小数量的对象。Canvas和SVG在修改方式上还存在着不同。绘制Canvas对象后,不能使用脚本和 CSS 对它进行修改。因为 SVG 对象是文档对象模型的一部分,所以可以随时使用脚本和 CSS 修改它们。
现在对两种技术做对比归纳如下:
Canvas
1)依赖分辨率
2)不支持事件处理器
3)弱的文本渲染能力
4)能够以 .png 或 .jpg 格式保存结果图像
5)最适合图像密集型的游戏,其中的许多对象会被频繁重绘
SVG
1)不依赖分辨率
2)支持事件处理器
3)最适合带有大型渲染区域的应用程序(比如谷歌地图)
4)复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
5)不适合游戏应用
新增的标签
area元素同a和link元素一样有了新的hreflang、type、rel属性
base元素同a一样可以有target属性
meta元素有了charset属性
script元素有了async属性将影响脚本的加载与运行
html元素有manifest属性,可用于指定缓存行为
link元素有了新的属性sizes,可以指定不同的大小的favicon
ol元素有了新的属性reversed,它代表着列表的顺序是逆序的
iframe元素有了sandbox和srcdoc属性以支持沙盒安全保护
object元素有了typemustmatch元素以保证更安全的嵌入顺序
img元素有crossorigin属性以在canvas中支持CORS
contenteditable
data-*代表了开发定制的属性,这种格式可以避免与将来的新HTML属性冲突
hidden属性代表一个元素不再与文档相关
role及aria-*用于支持无障碍访问
spellcheck用于指定内容是否允许进行拼写检查
translate用于指定内容是否应当翻译
废弃的属性,废弃的属性也有很多,a废弃属性:shape, coords, rev, charset
area废弃属性:nohref
form废弃属性:accept
head废弃属性:profile
html废弃属性:version
iframe废弃属性:longdesc
img废弃属性:name
input废弃属性:usemap
link废弃属性:target, rev, charset
meta废弃属性:scheme
object废弃属性:archive, classid, codebase, codetype, declare, standby
param废弃属性:valuetype, type
table废弃属性:summary
td废弃属性:axis, abbr, scope
th废弃属性:axis
HTML不再包含纯用于表现的属性,它们应当被CSS替代:
caption, iframe, img, input, object, legend, table, hr, div, h1, h2, h3, h4, h5, h6, p, col, colgroup,tbody, td, - tfoot, th, thead和tr的align属性被废弃
body的alink, link, text, background属性被废弃
table, tr, td, th和body的bgcolor属性被废弃
object的border属性被废弃
table的cellpadding和cellspacing属性被废弃
col, colgroup, tbody, td, tfoot, th, thead和tr的char和charoff属性被废弃
br的clear属性被废弃
dl, ol和ul的compact属性被废弃
table的frame属性被废弃
iframe的frameborder属性被废弃
td和th的height属性被废弃
img和object的hspace和vspace属性被废弃
iframe的marginheight和marginwidth属性被废弃
hr的noshade属性被废弃
td和th的nowrap属性被废弃
table的rules属性被废弃
iframe的scrolling属性被废弃
hr的size属性被废弃
li,和ul的type属性被废弃
col, colgroup, tbody, td, tfoot, th, thead和tr的valign属性被废弃
hr, table, td, th, col, colgroup和pre的width属性被废弃
8.本地数据存储类型(localStorage、sessionStorage)
HTML5 提供了两种在客户端存储数据的新方法:
1)localStorage - 没有时间限制的数据存储
2)sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。
对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。
HTML5 使用 JavaScript 来存储和访问数据。
行内元素:a span img input select label input button textarea select
块级元素:div ul ol li dl dt dd h1 p form
空元素:
类内部Hack:比如 IE6能识别下划线"“和星号” * “,IE7能识别星号” * “,但不能识别下划线”",而firefox两个都不能认识。
选择器Hack:比如 IE6能识别html .class{},IE7能识别+html .class{}或者*:first-child+html .class{}。
HTML头部引用(if IE)Hack:针对所有IE: ,针对IE6及以下版本: ,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
书写顺序,一般是将识别能力强的浏览器的CSS写在前面。
18.简述几个css hack?
• (1) 图片间隙
在div中插入图片,图片会将div下方撑大3px。hack1:将
111
222即便容器中条目的尺寸未知或是动态变化的,弹性盒布局模型也能正常的工作。在该布局模型中,容器会根据布局的需要,调整其中包含的条目的尺寸和顺序来最好地填充所有可用的空间。
当容器的尺寸由于屏幕大小或窗口尺寸发生变化时,其中包含的条目也会被动态地调整。比如当容器尺寸变大时,其中包含的条目会被拉伸以占满多余的空白空间;当容器尺寸变小时,条目会被缩小以防止超出容器的范围。弹性盒布局是与方向无关的。
在传统的布局方式中,block 布局是把块在垂直方向从上到下依次排列的;
而 inline 布局则是在水平方向来排列。弹性盒布局并没有这样内在的方向限制,可以由开发人员自由操作。
(2) flex和box的区别: display:box 是老规范,要兼顾古董机子就加上它; 父级元素有display:box;属性之后。他的子元素里面加上box-flex属性。可以让子元素按照父元素的宽度进行一定比例的分占空间。 flex是最新的,董机老机子不支持的;
父元素设置display:flex后,子元素宽度会随父元素宽度的改变而改变,而display:box不会。 Android UC浏览器只支持display: box语法;而iOS UC浏览器则支持两种方式。
27.为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式?
浮动元素碰到包含它的边框或者浮动元素的边框停留。由于浮动元素不在文档流中,所以文档流的块框表现得就像浮动框不存在一样。浮动元素会漂浮在文档流的块框上。
浮动带来的问题:
:nth-of-type(n)选择器和:nth-child(n)选择器非常类似,不同的是它只计算父元素中指定的某种类型的子元素。
:only-child表示的是一个元素是它的父元素的唯一一个子元素。
:first-line为某个元素的第一行文字使用样式。
:first-letter 为某个元素中的文字的首字母或第一个字使用样式。
:before 在某个元素之前插入一些内容。
:after 在某个元素之后插入一些内容。
c3中伪元素:
::first-line选择元素的第一行,比如说改变每个段落的第一行文本的样式
::before和::after这两个主要用来给元素的前面或后面插入内容,这两个常用"content"配合使用,见过最多的就是清除浮动
::selection用来改变浏览网页选中文的默认效果
30.placeholder?如何在ie8上兼容placeholder这个效果
• 方法一:
首先判断浏览器是否支持placeholder属性,如果不支持的话,就遍历所有input输入框,获取placeholder属性的值填充进输入框作为提示信息,同时字体设置成灰色。
当输入框获得焦点( focus )同时输入框内文字等于设置的提示信息时,就把输入框内清空;
当输入框失去焦点( blur )同时输入框内文字为空时,再把获取的placeholder属性的值填充
进输入框作为提示信息,同时字体设置成灰色;
当输入框内有输入( keydown )时,此时输入框内的提示信息已经由focus事件清除,此时只需要把字体再恢复成黑色即可
此方法的缺点是,不适用于加载完DOM时即获得焦点的输入框,因为在用户的角度,加载完页面时看到的获得焦点的那个输入框,它的提示文字是看不到的。
• HTML:
•
•
• CSS:
• .phcolor{ color:#999;}
•
• JS
• $(function(){
• //判断浏览器是否支持placeholder属性
• supportPlaceholder='placeholder’in document.createElement(‘input’),
• placeholder=function(input){
• var text = input.attr(‘placeholder’),
• defaultValue = input.defaultValue;
• if(!defaultValue){
• input.val(text).addClass(“phcolor”);
• }
• input.focus(function(){
• if(input.val() == text){
• $(this).val("");
• }
• });
• input.blur(function(){
• if(input.val() == “”){
• $(this).val(text).addClass(“phcolor”);
• }
• });
• //输入的字符不为灰色
• input.keydown(function(){
• $(this).removeClass(“phcolor”);
• });
• };
• //当浏览器不支持placeholder属性时,调用placeholder函数
• if(!supportPlaceholder){
• $(‘input’).each(function(){
• text = ( t h i s ) . a t t r ( " p l a c e h o l d e r " ) ; • i f ( (this).attr("placeholder"); • if( (this).attr("placeholder");•if((this).attr(“type”) == “text”){
• placeholder($(this));
• }
• });
• }
• });
• 方法二:
此方法的思路是做一张含有提示文字的图片作为input输入框的背景图,初始时获得焦点同时加载背景图;
当输入框不为空时,去掉背景图;
当输入框为空时,加载背景图;
当用户键盘按键且输入框不为空( 输入字符 )时,去掉背景图;
当用户键盘按键且输入框为空( 删除字符 )时,加载背景图。
此方法的缺点是:需要为每一个提示文字不同的input制作背景图片,并且设置input的样式。
• CSS:
• .phbg{ background:url(img/bg.jpg) 0 0 no-repeat;}
•
• JS
• $(function(){
• //判断浏览器是否支持placeholder属性
• supportPlaceholder=‘placeholder’ in document.createElement(‘input’);
• if(!supportPlaceholder){
• //初始状态添加背景图片
• $("#uname").attr(“class”,“phbg”);
• //初始状态获得焦点
• KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲uname").focus; …("#uname").val() != “”){
• $("#uname").removeClass(“phbg”);
• }else{
• $("#uname").attr(“class”,“phbg”);
• }
• }
• //当输入框为空时,添加背景图片;有值时去掉背景图片
• destyle();
• $("#uname").keyup(function(){
• //当输入框有按键输入同时输入框不为空时,去掉背景图片;有按键输入同时为空时(删除字符),添加背景图片
• destyle();
• });
• $("#uname").keydown(function(){
• //keydown事件可以在按键按下的第一时间去掉背景图片
• $("#uname").removeClass(“phbg”);
• });
• }
• });
• 方法三:
使用插件:Placeholders.js
31.常见兼容性问题?
• * png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理。
浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。
浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。) #box{ float:left; width:10px; margin:0 0 0 100px;} 这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
渐进识别的方式,从总体中逐渐排除局部。 首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。 接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。
css// .bb{ background-color:#f1ee18; .background-color:#00deff\9; +background-color:#a200ff; _background-color:#1e0bd1; }
IE下,可以使用获取常规属性的方法来获取自定义属性, 也可以使用getAttribute()获取自定义属性; Firefox下,只能使用getAttribute()获取自定义属性. 解决方法:统一通过getAttribute()获取自定义属性。
IE下,event对象有x,y属性,但是没有pageX,pageY属性; Firefox下,event对象有pageX,pageY属性,但是没有x,y属性. * 解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。
Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示, 可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决。
超链接访问过后hover样式就不出现了 被点击访问过的超链接样式不在具有hover和active了解决方法是改变CSS属性的排列顺序: L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式。为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯。现在可以使用html5推荐的写法:
上下margin重合问题
ie和ff都存在,相邻的两个div的margin-left和margin-right不会重合,但是margin-top和margin-bottom却会发生重合。
解决方法,养成良好的代码编写习惯,同时采用margin-top或者同时采用margin-bottom。
ie6对png图片格式支持不好(引用一段脚本处理)
32.简述前端优化的方式 旧的雅虎34条|h5新添加的方式
• 1、尽量减少HTTP请求次数
2、减少DNS查找次数
3、避免跳转
4、可缓存的AJAX
5、推迟加载内容
6、预加载
7、减少DOM元素数量
8、根据域名划分页面内容
9、使iframe的数量最小
10、不要出现404错误
11、使用内容分发网络
12、为文件头指定Expires或Cache-Control 13、Gzip压缩文件内容
14、配置ETag
15、尽早刷新输出缓冲
16、使用GET来完成AJAX请求
17、把样式表置于顶部
18、避免使用CSS表达式(Expression)
19、使用外部JavaScript和CSS
20、削减JavaScript和CSS
21、用代替@import
22、避免使用滤镜
23、把脚本置于页面底部
24、剔除重复脚本
33.media属性?screen?All?max-width?min-width?
• media 属性规定被链接文档将显示在什么设备上。media 属性用于为不同的媒介类型规定不同的样式。Screen计算机默认屏幕,all适用于所有设备,max-width超过最大宽度就不执行,min-width必须大于最小宽度才执行。
34.meta标签的name属性值?
• name 属性主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的。
meta标签的name属性语法格式是:<meta name=“参数” content="具体的参数值">。
其中name属性主要有以下几种参数:
A 、Keywords(关键字)说明:keywords用来告诉搜索引擎你网页的关键字是什么。
B 、description(网站内容描述) 说明:description用来告诉搜索引擎你的网站主要内容.
C 、robots(机器人向导)说明:robots用来告诉搜索机器人哪些页面需要索引,哪些页面不需要索引。
content的参数有all,none,index,noindex,follow,nofollow,默认是all。
举例:<meta name=“robots” content="none">D 、author(作者)
•
35.一般做手机页面切图有几种方式?
• 响应式布局,弹性布局display:flex,利用js编写设定比例,给根元素设定像素,使用rem为单位。
36.px/em/rem有什么区别? 为什么通常给font-size 设置的字体为62.5%
• 相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。
1、em的值并不是固定的;
2、em会继承父级元素的字体大小。使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。
rem是相对于浏览器进行缩放的。1rem默认是16px,在响应式布局中,一个个除来转换成rem,太麻烦,所以重置rem
body{font-size=62.5% } 此时1rem = 10px;若是12px则是1.2rem.
37.sass和scss有什么区别?sass一般怎么样编译的
• 文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名;语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(,而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。
38如果对css进行优化如何处理?如何对css文件进行压缩合并? gulp ?
• 压缩打包,图片整合,避免使用Hack,解决兼容问题,使用简写,让CSS能保证日后的维护。
• 使用gulp, 首页全局安装gulp。
1、npm install --global gulp
2、其次局部安装gulp。npm install gulp --save-dev
3、在项目根目录下创建一个名为 gulpfile.js 的文件
var gulp = require(‘gulp’);
gulp.task(‘default’, function() {
// 将你的默认的任务代码放在这});
4、运行gulp。(默认的名为 default 的任务(task)将会被运行,想要单独执行特定的任务(task),请输入 gulp )
gulp
合并和压缩JS、CSS文件
压缩JS,CSS文件需要引用如下组件:
gulp-minify-css: 压缩css
39.组件? 模块化编程?
• 组件化编程: 将js css html包装一起提供方法和效果;
模块化化: 将相同的功能抽取出来 存放在一个位置进行编程
40.图片和文字在同一行显示?
• 1 在css中给div添加上“vertical-align:middle”属性。
2 分别把图片和文字放入不同的div中,然后用“margin”属性进行定位,就可以使他们显示在同一行。
3 把图片设置为背景图片。
41禁止事件冒泡?禁止默认事件?如何禁用href 跳转页面 或 定位链接?
• event.stopPropagation()
• event.preventDefault()
• e.preventDefault();
href="javascript:void(0);
42.a标签中 active hover link visited 正确的设置顺序是什么?
• a标签的link、visited、hover、active是有一定顺序的
a:link
a:visited
a:hover
a:active
43.手机端上 图片长时间点击会选中图片,如何处理?
• οnselect=function(){return false}
44.video标签的几个个属性方法
• src:视频的URL poster:视频封面,没有播放时显示的图片 preload:预加载 autoplay:自动播放 loop:循环播放 controls:浏览器自带的控制条 width:视频宽度 height:视频高度
•
45.常见的视频编码格式有几种?视频格式有几种?
• 视频格式:MPEG-1、MPEG-2和MPEG4 、AVI 、RM、ASF和WMV格式
视频编码格式:H.264、MPEG-4、MPEG-2、WMA-HD以及VC-1
46.canvas在标签上设置宽高 和在style中设置宽高有什么区别?
• canvas标签的width和height是画布实际宽度和高度,绘制的图形都是在这个上面。而style的width和height是canvas在浏览器中被渲染的高度和宽度。如果canvas的width和height没指定或值不正确,就被设置成默认值 。
47.border-image?box-sizing?
• Border-image : 图形化边框
Box-sizing : 属性允许您以特定的方式定义匹配某个区域的特定元素。
语法 :box-sizing:content-box | border-box
Content-box : padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和,即 ( Element width = width + border + padding) 此属性表现为标准模式下的盒模型 .
Border-box : padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值,即使定义有border和padding也不会改变对象的实际宽度,即 ( Element width = width ) 此属性表现为怪异模式下的盒模型。
48.渐进增强和优雅降级
• 渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
优雅降级 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。
降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。
“优雅降级”观点
“优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本。
在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。
“渐进增强”观点
“渐进增强”观点则认为应关注于内容本身。
内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在。
那么问题来了。现在产品经理看到IE6,7,8网页效果相对高版本现代浏览器少了很多圆角,阴影(CSS3),要求兼容(使用图片背景,放弃CSS3),你会如何说服他?
49.animation对应的属性
• 写法:animation: name duration timing-function delay iteration-count direction;
下面是对应的属性的介绍
animation-name 规定需要绑定到选择器的 keyframe 名称。
animation-duration 规定完成动画所花费的时间,以秒或毫秒计。
animation-timing-function 规定动画的速度曲线。
animation-delay 规定在动画开始之前的延迟。
animation-iteration-count 规定动画应该播放的次数。
animation-direction 规定是否应该轮流反向播放动画。
50.transition?
• css的transition允许css的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值 注意区别transform,transform是进行2D转换的 如移动,比例化,反过来,旋转,和拉伸元素。
51.canvas 如何绘制一个三角形|正方形
• moveto 是移动到某个坐标, lineto 是从当前坐标连线到某个坐标。
这两个函数加起来就是画一条直线。 画线要用“笔”,那么MoveTo()把笔要画的起始位置固定了(x,y)然后要固定终止位置要用到LineTo函数确定终止位置(xend,yend),这样一条线就画出来了。 每次与前面一个坐标相连 。
stroke() 方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色。
•
•
•
•
• 画布
•
•
•
• Your browser does not support the canvas element.
•
•
•
•
52.css清除浮动的几种方式?
• 1、父级div定义 height
2、结尾处加空div标签 clear:both
3、父级div定义 伪类:after 和 zoom
4、父级div定义 overflow:hidden
5、父级div定义 overflow:auto
6、父级div 也一起浮动
7、父级div定义 display:table
53.为什么要初始化CSS样式。
• 因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。
54.解释下 CSS sprites,以及你要如何在页面或网站中使用它。
• CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字能精确的定位出背景图片的位置。这样可以减少很多图片请求的开销,因为请求耗时比较长;请求虽然可以并发,但是也有限制,一般浏览器都是6个。对于未来而言,就不需要这样做了,因为有了http2
。
• 优点:
• a. 减少网页的http请求
• b. 减少图片的字节
• c. 解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名
• d. 更换风格方便,只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变。
• 缺点:
• a. 在宽屏,高分辨率的屏幕下的自适应页面,你的图片如果不够宽,很容易出现背景断裂
• b. CSS Sprites在开发的时候,要通过photoshop或其他工具测量计算每一个背景单元的精确位置
• c. 在维护的时候比较麻烦,如果页面背景有少许改动,一般就要改这张合并的图片
55.什么是 FOUC(无样式内容闪烁)?你如何来避免 FOUC?
• FOUC - Flash Of Unstyled Content 文档样式闪烁
而引用CSS文件的@import就是造成这个问题的罪魁祸首。IE会先加载整个HTML文档的DOM,然后再去导入外部的CSS文件,因此,在页面DOM加载完成到CSS导入完成中间会有一段时间页面上的内容是没有样式的,这段时间的长短跟网速,电脑速度都有关系。
解决方法:只要在之间加入一个或者
79、很多网站不常用table iframe这两个元素,知道原因吗?
答:因为浏览器页面渲染的时候是从上至下的,而table 和 iframe 这两种元素会改变这样渲染规则,他们是要等待自己元素内的内容加载完才整体渲染。用户体验会很不友好
80、jpg和png格式的图片有什么区别?
答: jpg是有损压缩格式,png是无损压缩格式。所以,相同的图片,jpg体积会小。比如我们一些官网的banner图,一般都很大,所以适合用jpg类型的图片。但png分8位的和24位的,8位的体积会小很多,但在某些浏览器下8位的png图片会有锯齿。
81、请用html知识解决seo优化问题
答: 网站上线应该设置TDK(T=title-标题,D=description-描述,K=keywords-关键词)
然后就是html语义化标签,要简洁,合理,这样可以在css和js加载不全的时候,使我们的html文档尽量清晰的展示出来,而不会特别乱;
82、常用浏览器有哪些,内核都是什么?
答: 常用浏览器有
IE (内核:Trident)
火狐(firefox) (Gecko)
chrome (Webkit)
safari (Webkit)
360 搜狗(极速Webkit 兼容Trident)
83、form标签上定义请求类型的是哪个属性?定义请求地址的是哪个属性?
答:form表单定义请求类型的是method 属性 ,
定义请求地址的是action属性
84.介绍一下你对浏览器内核的理解?
主要分成两部分:渲染引擎(Layout Engine或Rendering Engine)和JS引擎。
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。
JS引擎:解析和执行javascript来实现网页的动态效果。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
85. HTML5的文件离线储存怎么使用,工作原理是什么?
在线情况下,浏览器发现HTML头部有manifest属性,它会请求manifest文件,如果是第一次访问,那么浏览器就会根据manifest文件的内容下载相应的资源,并进行离线存储。如果已经访问过并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面。然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不会做任何操作,如果文件改变了,那么就会重新下载文件中的资源,并且进行离线存储。例如,
在页面头部加入manifest属性
div {
width: 0;
height: 0;
border-left: 50px solid transparent;/* transparent是将border设置透明的意思 */
border-right: 50px solid transparent;
border-bottom: 100px solid blue;
}
• 梯形
div {
width: 100px;
height: 0;
border-left: 50px solid transparent;/* transparent是将border设置透明的意思 */
border-right: 50px solid transparent;
border-bottom: 100px solid blue;
}
• 圆
div {
width: 0;
height: 0;
border: 100px solid red;
border-radius: 100px;
}
回到顶部
102. 边距塌陷
边距折叠发生在同一BFC的块级元素之间,上下边距是边距较大值而不是边距之和。
会发生边距折叠的三种情况:
• 相邻元素之间
毗邻的两个元素之间的外边距会折叠(除非后一个元素需要清除之前的浮动)。
父元素与其第一个或最后一个子元素之间
如果在父元素与其第一个子元素之间不存在边框、内边距、行内内容,也没有创建块格式化上下文、或者清除浮动将两者的 margin-top 分开;或者在父元素与其最后一个子元素之间不存在边框、内边距、行内内容、height、min-height、max-height将两者的 margin-bottom 分开,那么这两对外边距之间会产生折叠。此时子元素的外边距会“溢出”到父元素的外面。如果在父元素与其第一个子元素之间不存在边框、内边距、行内内容,也没有创建块格式化上下文、或者清除浮动将两者的 margin-top 分开;或者在父元素与其最后一个子元素之间不存在边框、内边距、行内内容、height、min-height、max-height将两者的 margin-bottom 分开,那么这两对外边距之间会产生折叠。此时子元素的外边距会“溢出”到父元素的外面。
空的块级元素
如果一个块级元素中不包含任何内容,并且在其 margin-top 与 margin-bottom 之间没有边框、内边距、行内内容、height、min-height 将两者分开,则该元素的上下外边距会折叠。
回到顶部
103. 文字截断
单行文本截断 text-overflow
div {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
图片自适应
img { max-width: 100%;}
@import url(“tinyScreen.css”) screen and (max-device-width: 400px);
回到顶部
105. 隐藏页面中某个元素的方法
• display:none;
• visibility:hidden;
• opacity: 0;
• position移动到外部
• z-index涂层遮盖
106.displaydisplay:table 和 本身的table有什么区别?
display:table; 的CSS声明能够让一个HTML元素和它的子节点像table元素一样。使用基于表格的CSS布局,使我们能够轻松定义一个单元格的边界、背景等样式,而不会产生因为使用了table那样的制表标签所导致的语义化问题。
为什么不用table系元素,取而代之用div+css?
• 方法二:绝对定位布局
•
o 绝对定位布局优点:快捷以及设置简单,而且也不容易出问题。
o 绝对定位布局缺点:容器脱离了文档流,后代元素也脱离了文档流,高度未知的时候,会有问题,这就导致了这种方法的有效性和可使用性是比较差的。
• 方法三:flex布局
需要注意要将中间块放在前面,通过order来控制位置,实际高度会根据内容自适应,三栏高度统一。对父元素用display: flex之后子元素的宽度会失效,也就是无法设置子元素的宽度,可以通过改变flex值来改变宽度。
•
o Flex布局的优点:在移动端比较常见,布局灵活,兼容性也还可以,基本能满足大多数需求。
o Flex布局的缺点: IE10才开始支持
• 方法四:Grid布局
•
o Grid布局优点:创建网格布局最强大和最简单的工具。实际高度会根据内容自适应,三栏高度统一。
o Grid布局缺点:唯一的缺点就是兼容性不太好。
• 方法五:表格布局
•
o 表格布局优点:兼容性很好,在Flex布局不兼容的时候(一般情况下很少不兼容),可以尝试表格布局。当内容溢出时会自动撑开父元素。
o 表格布局缺点:
o 无法设置栏边距
o 对seo不友好
o 当其中一个单元格高度超出的时候,两侧的单元格也是会跟着一起变高的,然而有时候这并不是我们想要的效果。
1
122、视差滚动效果?
视差滚动(Parallax Scrolling)通过在网页向下滚动的时候,控制背景的移动速度比前景的移动速度慢来创建出令人惊叹的3D效果。
p{font-size:10px;-webkit-transform:scale(0.8);} //0.8是缩放比例
124、让页面里的字体变清晰,变细用CSS怎么做?
-webkit-font-smoothing在window系统下没有起作用,但是在IOS设备上起作用-webkit-font-smoothing:antialiased是最佳的,灰度平滑。
position:fixed;在android下无效怎么处理?
125.使用 CSS 预处理器吗?解释下
Less sass
126、如果需要手动写动画,你认为最小时间间隔是多久,为什么?
多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms = 16.7ms。
127、li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
行框的排列会受到中间空白(回车空格)等的影响,因为空格也属于字符,这些空白也会被应用样式,占据空间,所以会有间隔,把字符大小设为0,就没有空格了。
解决方法: