选用标签的标准
如果要支持比较老的浏览器(通常是桌面版网页)则不使用新标签
手机平板等网页开发可以使用新标签
不管什么情况下,都应该优先根据语义来选用标签
根据搜索引擎优化的要求和建议选用标签
02.简述一下你对HTML语义化的理解?
1、用正确的标签做正确的事情。
2、使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
3、即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;
4、html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;
5、搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;
03.你能描述一下当你制作一个网页的工作流程吗?
1、内容分析:分清展现在网络中内容的层次和逻辑关系
2、结构设计:写出合理的html结构代码
3、布局设计:使用html+css进行布局
4、样式设计:首先要使用reset.css
5、交互设计:鼠标特效。行为设计:js代码,ajax页面行为和从服务器获取数据。最后测试兼容性。优化性能
04.你如何对网站的文件和资源进行优化?
1、文件合并;2、文件最小化/文件压缩;3、使用CDN托管;4、缓存的使用;5、其他
1).使用CDN
2).服务器开启gzip压缩
3).css样式的定义放置在文件头部
4).Javascript脚本放在文件末尾
5).压缩Javascript、CSS代码
6).尽可能减少DOM元素
7).尽量减少页面中重复的HTTP请求数量
8).使用多域名负载网页内的多个文件、图片
9).在服务器配置Entity-Tagif-none-match
10).在服务器端配置control-cachelast-modify-date
06.23条Web性能优化最佳实践和规则
1).尽可能减少HTTP请求次数
2).使用CDN
4).加入Expires或Cache-ControlHeader
5).使用Gzip压缩
6).在html文件顶部放置样式表
7).在html文件底部放置Javascript脚本
8).避免使用CSS表达式
9).使用外部Javascript和CSS外部文件
10).减少使用DNS查找次数
11).精简Javascript和CSS
12).避免重定向
13).移除重复的脚本
14).配置ETag
15).缓存AJAX
16).使用GET完成AJAX请求
17).减少DOM元素数量
18).避免404
19).减少Cookie大小
20).使用无Cookie的域
21).避免使用滤镜
22).不要在HTML中缩放图片
23).使用小favicon.ico文件,并让其可缓存
07.如何进行网站性能优化
content方面
1).减少HTTP请求:合并文件、CSS精灵、inlineImage
2).减少DNS查询:DNS查询完成之前浏览器不能从这个主机下载任何任何文件。方法:DNS缓存、将资源分布到恰当数量的主机名,平衡并行下载和DNS查询
3).避免重定向:多余的中间访问
4).使Ajax可缓存
5).非必须组件延迟加载
6).未来所需组件预加载
7).减少DOM元素数量
8).将资源放到不同的域下:浏览器同时从一个域下载资源的数目有限,增加域可以提高并行下载量
9).减少iframe数量
10).不要404
Server方面
11).使用CDN
12).添加Expires或者Cache-Control响应头
13).对组件使用Gzip压缩
15).FlushBufferEarly
16).Ajax使用GET进行请求
17).避免空src的img标签
Cookie方面
18).减小cookie大小19).引入资源的域名不要包含cookie
css方面
20).将样式表放到页面顶部21).不使用CSS表达式
22).使用不使用@import23).不使用IE的Filter
Javascript方面
24).将脚本放到页面底部25).将javascript和css从外部引入
26).压缩javascript和css27).删除不需要的脚本
28).减少DOM访问29).合理设计事件监听器
图片方面
30).优化图片:根据实际颜色需要选择色深、压缩31).优化css精灵
32).不要在HTML中拉伸图片33).保证favicon.ico小并且可缓存
移动方面
34).保证组件小于25k35).PackComponentsintoaMultipartDocument
08.请尽可能完整得描述下从输入URL到整个网页加载完毕及显示在屏幕上的整个流程
1)把URL分割成几个部分:协议、网络地址、资源路径。
其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括端口号;
协议是从该计算机获取资源的方式,常见的是HTTP、FTP,不同协议有不同的通讯内容格式;
资源路径指示从服务器上获取哪一项资源。
2)如果地址不是一个IP地址,通过DNS(域名系统)将该地址解析成IP地址。
IP地址对应着网络上一台计算机,DNS服务器本身也有IP,你的网络设置包含DNS服务器的IP。
这个过程里,你的电脑直接询问的DNS服务器可能没有www.guokr.com对应的IP,就会向它的上级服务器询问,上级服务器同样可能没有,就依此一层层向上找,最高可达根节点,找到或者全部找不到为止。
3)如果地址不包含端口号,根据协议的默认端口号确定一个。
端口号之于计算机就像窗口号之于银行,一家银行有多个窗口,每个窗口都有个号码,不同窗口可以负责不同的服务。
4)向2和3确定的IP和端口号发起网络连接。例如:向111.13.57.142的80端口发起连接
6)服务器响应请求,将数据返回给浏览器。数据可能是根据HTML协议组织的网页,里面包含页面的布局、文字。
数据也可能是图片、脚本程序等。现在你可以用浏览器的“查看源代码”功能,感受一下服务器返回的是什么东东。
如果资源路径指示的资源不存在,服务器就会返回著名的404错误。
7)如果(6)返回的是一个页面,根据页面里一些外链的URL,例如图片的地址,按照(1)-(6)再次获取。
8)开始根据资源的类型,将资源组织成屏幕上显示的图像,这个过程叫渲染,网页渲染是浏览器最复杂、最核心的功能。
9)将渲染好的页面图像显示出来,并开始响应用户的操作。
以上只是最基本的步骤,实际不可能就这么简单,一些可选的步骤例如网页缓存、连接池、加载策略、加密解密、代理中转等等都没有提及。
即使基本步骤本身也有很复杂的子步骤,TCP/IP、DNS、HTTP、HTML:每一个都可以展开成庞大的课题,而浏览器的基础——操作系统、编译器、硬件等更是一个比一个复杂。
你输入URL即可浏览互联网,而计算机系统在背后做了无数你看不到的工作,计算机各个子领域无数工程师为此付出你难以想象的努力。
09.html5有哪些新特性、移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?
*HTML5现在已经不是SGML的子集,主要是关于图像,位置,存储,多任务等功能的增加。
绘画canvas用于媒介回放的video和audio元素
sessionStorage的数据在浏览器关闭后自动删除
本地离线存储localStorage长期存储数据,浏览器关闭后数据不丢失;
语意化更好的内容元素,比如article、footer、header、nav、section
表单控件,calendar、date、time、email、url、search
新的技术:webworker,websockt,Geolocation
*移除的元素
纯表现的元素:basefont,big,center,font,s,strike,tt,u;
对可用性产生负面影响的元素:frame,frameset,noframes;
支持HTML5新标签;
*兼容性:
IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,
浏览器支持新标签后,还需要添加标签默认的样式:
*当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架
10.iframe有哪些缺点?
1)iframe会阻塞主页面的Onload事件;
2)搜索引擎的检索程序无法解读这种页面,不利于SEO;
3)iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载;
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以可以绕开以上两个问题。
11.如何实现浏览器内多个标签页之间的通信(阿里)
WebSocket、SharedWorker;也可以调用localstorge、cookies等本地存储方式;
localstorge另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信;
注意quirks:Safari在无痕模式下设置localstorge值时会抛出QuotaExceededError的异常;
webSocket如何兼容低浏览器?(阿里)
AdobeFlashSocket、ActiveXHTMLFile(IE)、基于multipart编码发送XHR、基于长轮询的XHR
12.常见的浏览器内核有哪些?
Trident内核:IE,MaxThon,TT,TheWorld,360,搜狗浏览器等。[又称MSHTML]。bug多,对w3c标准的支持不是很好。
Gecko内核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等。支持很多复杂网页效果,但是能耗高,占内存。
Webkit内核:Safari,Chrome等。[Chrome的:Blink(WebKit的分支)]。速度仅次于presto,兼容性较好。
Presto内核:Opera7及以上。[Opera内核原为:Presto,现为:Blink;]。公认的浏览网页速度最快的内核,处理js时比其他内核快3倍左右。但是网页兼容性不太好。
13.前端需要注意哪些SEO
SEO是由英文SearchEngineOptimization缩写而来,中文意译为“搜索引擎优化”。SEO是指通过站内优化比如网站结构调整、网站内容建设、网站代码优化等以及站外优化。
1、合理的title、description、keywords:
搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有所不同;
description把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面description有所不同;keywords列举出重要关键词即可
2、语义化的HTML代码,符合W3C规范:语义化代码让搜索引擎容易理解网页
3、重要内容HTML代码放在最前:搜索引擎抓取HTML顺序是从上到下,有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取
4、重要内容不要用js输出:爬虫不会执行js获取内容
5、少用iframe:搜索引擎不会抓取iframe中的内容
6、非装饰性图片必须加alt
7、提高网站速度:网站速度是搜索引擎排序的一个重要指标
14.HTTP请求方式有哪些
常用的是GET和POST
1、GET是最常用的方法,通常用于请求服务器发送某个资源。
2、HEAD与GET类似,但服务器在响应中值返回首部,不返回实体的主体部分
3、PUT让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档,或者,如果那个URL已经存在的话,就用干这个主体替代它
4、POST起初是用来向服务器输入数据的。实际上,通常会用它来支持HTML的表单。表单中填好的数据通常会被送给服务器,然后由服务器将其发送到要去的地方。
5、TRACE会在目的服务器端发起一个环回诊断,最后一站的服务器会弹回一个TRACE响应并在响应主体中携带它收到的原始请求报文。TRACE方法主要用于诊断,用于验证请求是否如愿穿过了请求/响应链。
6、OPTIONS方法请求web服务器告知其支持的各种功能。可以查询服务器支持哪些方法或者对某些特殊资源支持哪些方法。
7、DELETE请求服务器删除请求URL指定的资源
GET和POST的区别,何时使用POST?
1)get是从服务器获取数据---"取";post是向服务器提交数据---“发”
2)form表单默认的method为"GET"
3)get将参数按照variable=value的形式,加在URL的后面,中间用""连接,多个参数之间用"&"连接;
post将数据不像get方式那样,post发给服务器的参数全部放在请求体中
4)参照上面3的数据传输方式,可以得出:post安全性相对比get方式要高
5)URL不存在参数上限的问题,HTTP协议没有对URL长度进行限制,限制的是部分浏览器和服务器的限制。
IE对URL长度的限制为2083KB
6)get方式是通过URL传输的数据的,数据量一般在2KB左右,但是执行效率比post高
7)理论上post方式没有大小限制,HTTP协议规范也没进行大小限制。post数据没有限制,限制的是服务器处理程序的能力
15.HTTP请求报文和响应报文都包括什么?
请求头:包含了对客户端的环境描述,客户端请求的主机地址等信息。
请求体:客户端发给服务器的具体数据。
响应头:包含了对服务器的一些描述,对返回数据的描述。
响应体:服务器返回给客户端的具体数据。
16.HTTP状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1XX:信息响应类表示接收到请求并且继续处理
2XX:处理成功响应类表示动作被成功接,理解和接受
3XX:重定向响应类为了完成指宝的动作必须接受进一步处理
4XX:客户端错误,客户请求包含的语法错误或者是不能正确执行
5XX:服务器端错误,服务器不能正确定执行一个正确的请求
常见状态代码、状态描述、说明:
200OK正常返回信息
400BadRequest服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
403Forbidden禁止访问。
404NotFound找不到如何与URI相匹配的资源。
500InternalServerError最常见的服务器端错误。
503ServiceUnavailable服务器端暂时无法处理请求(可能是过载或维护)。
17.前端页面有哪三层构成,分别是什么?作用是什么?
最准确的网页设计思路是把网页分成三个层次,即:结构层、表示层、行为层。
网页的结构层:(structurallayer)由HTML或XHTML之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P标签表达了这样一种语义:这是一个文本段。
网页的表示层:(presentationlayer)由CSS负责创建。CSS对“如何显示有关内容”的问题做出了回答。
网页的行为层:(behaviorlayer)负责回答“内容应该如何对事件做出反应”这一问题。这是Javascript语言和DOM主宰的领域。
18.浏览器本地存储与服务器端存储之间的区别
1、其实数据既可以在浏览器本地存储,也可以在服务器端存储。
2、浏览器端可以保存一些数据,需要的时候直接从本地获取,sessionStorage、localStorage和cookie都由浏览器存储在本地的数据。
3、服务器端也可以保存所有用户的所有数据,但需要的时候浏览器要向服务器请求数据。
4、服务器端可以保存用户的持久数据,如数据库和云存储将用户的大量数据保存在服务器端。
6、服务器端保存所有的用户的数据,所以服务器端的开销较大,而浏览器端保存则把不同用户需要的数据分布保存在用户各自的浏览器中。
7、浏览器端一般只用来存储小数据,而服务器可以存储大数据或小数据。
8、服务器存储数据安全一些,浏览器只适合存储一般数据。
19.请描述一下cookies,sessionStorage和localStorage的区别?
1)cookie是网站为了标示用户身份而储存在用户本地终端(ClientSide)上的数据(通常经过加密)。
3)sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
存储大小:cookie数据大小不能超过4k。
sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
sessionStorage数据在当前浏览器窗口关闭后自动删除。
20.谈谈你对预加载的理解?
例如:可以通过js预先从服务加载图片资源(动态创建Image,设置src属性),只要浏览器把图片下载到本地,就会被缓存,再次请求相当的src时就会优先寻找浏览器缓存,提高访问速度。
缓存和预加载的区别是什么?
缓存就是把请求过的数据缓存起来,下次请求的时候直接使用缓存内容,提高响应速度;
预加载指的是提前把需要的内容加载完成,访问的时候可以明天提高响应效率,比如图片的预加载
(可以提前加载一定数量的图片,当用户访问图片的时候一般只看前几张,由于是预加载好的,所以速度比较快)
HTML4.01规定了三种文档类型:Strict、Transitional以及Frameset。
XHTML1.0规定了三种XML文档类型:Strict、Transitional以及Frameset。
Standards(标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页,
Quirks(包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。
22.在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的?
1、UI:界面美观,要有个性,考虑用户使用的逻辑要简单,用起来舒适自由。使用习惯要符合大部分用户的习惯,比如少让用户输入,采用选择的方式,提供搜索和提示功能。
2、安全性:对输入进行有效性验证(非法字符,特殊字符)如PHP中的方法htmlspecialchars()将特殊字符(>)转化为html实体,trim()去掉用户输入的不必要字符,stripslashes()去掉用户输入的反斜杠等等。
4、高性能:
a.DNS负载均衡
b.HTTP重定向(通过使客户端重定向,来分散和转移请求压力,比如一些下载服务通常都有几个镜像服务器)
c.分布式缓存
d.负载均衡:反向代理负载均衡,
e.数据库扩展:读写分离,垂直分区,水平分区。
f.SEO:选好关键字,描述语言,修饰性图片换成文本,合理使用h1-h6,对图片添加alt属性,链接添加target属性。
g.可维护性:代码是否容易被理解,是否容易被修改和增加新的功能,当出现问题时是否能快速定位到问题代码。
css部分
01.CSS3有哪些新特性(包含哪些模块)?
1、圆角border-radius、阴影box-shadow,text-shadow、渐变gradients、过渡transitions、
动画animations、布局multi-columns,flexbox,gridlayout,Opacity,color(rgb,rgba,hsl,hsla)
2、子串匹配的属性选择器:E[attribute^="value"],E[attribute$="value"],E[attribute*="value"]
3、新的伪类:
:target,:enabled和:disabled,:checked,:indeterminate,:root,:nth-child和:nth-last-child,
:nth-of-type和:nth-last-of-type,:last-child,:first-of-type和:last-of-type,
:only-child和:only-of-type,:empty,和:not
4、伪元素使用两个冒号而不是一个来表示:
:after变为::after,:before变为::before,
:first-letter变为::first-letter,:first-line变为::first-line。
Css3:CSS即层叠样式表。
在网页制作时采用层叠样式表技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和格式
为什么要初始化CSS样式。
因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。
*最简单的初始化方法就是:*{padding:0;margin:0;}(不建议)
*淘宝的样式初始化:
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{margin:0;padding:0;}
body,button,input,select,textarea{font:12px/1.5tahoma,arial,\5b8b\4f53;}
h1,h2,h3,h4,h5,h6{font-size:100%;}
address,cite,dfn,em,var{font-style:normal;}
code,kbd,pre,samp{font-family:couriernew,courier,monospace;}
small{font-size:12px;}
ul,ol{list-style:none;}
a{text-decoration:none;}
a:hover{text-decoration:underline;}
sup{vertical-align:text-top;}
sub{vertical-align:text-bottom;}
legend{color:#000;}
fieldset,img{border:0;}
button,input,select,textarea{font-size:100%;}
table{border-collapse:collapse;border-spacing:0;}
02.CSS选择器有哪些?哪些属性可以继承?优先级算法如何计算?CSS3新增伪类有那些?
1).id选择器(#myid)2).类选择器(.myclassname)
3).标签选择器(div,h1,p)4).相邻选择器(h1+p)
5).子选择器(ul>li)6).后代选择器(lia)
7).通配符选择器(*)8).属性选择器(a[rel="external"])
9).伪类选择器(a:hover,li:nth-child)
可继承的样式:1、关于文字排版的属性如:font,word-break,letter-spacing,text-align等
2、line-height、color、visibility、cursor等
不可继承的样式:borderpaddingmarginwidthheight;
选择器的优先级:将选择器的权值相加,值越大优先级越高
选择器优先级权值:!important=10000/style=1000/#id=100/.class=10/tag=1/*=0优先级就近原则,同权重情况下样式定义最近者为准;
CSS3新增伪类举例:
p:first-of-type选择属于其父元素的首个
元素的每个
元素。
p:last-of-type选择属于其父元素的最后
元素的每个
元素。
p:only-of-type选择属于其父元素唯一的
元素的每个
元素。
p:only-child选择属于其父元素的唯一子元素的每个
元素。
p:nth-child(2)选择属于其父元素的第二个子元素的每个
元素。
:enabled:disabled控制表单控件的禁用状态。
:checked单选框或复选框被选中。
03.解释下浮动和它的工作原理?列举不同的清除浮动的技巧,并指出它们各自适用的使用场景
浮动让元素脱离文档流,按照指定的方向进行运动,遇到相邻的元素或者父元素的边沿时停下,左浮动left;右浮动right
1.使用空标签清除浮动。
这种方法是在所有浮动标签后面添加一个空标签定义css属性clear:both.弊端就是增加了无意义标签。
2.使用overflow。给包含浮动元素的父标签添加css属性overflow:auto;zoom:1;zoom:1用于兼容IE6。
3.使用after伪对象清除浮动。
.clearfix{zoom:1;}
.clearfix::after{content:'';display:block;overflow:hidden;clear:both;height:0;}
使用中需注意以下几点。1、该方法中必须为需要清除浮动元素的伪对象中设置height:0,否则该元素会比实际高出若干像素;2、content属性是必须的,但其值可以为空
04.介绍一下标准的CSS的盒子模型?与IE的盒子模型有什么不同的?
1、有两种,IE盒子模型、标准W3C盒子模型;IE的content部分包含了border和pading;
2、盒模型:内容(content)、填充(padding)、边界(margin)、边框(border).文档中的每个元素被描绘为矩形盒子。确定其大小,属性——比如颜色、背景、边框,及其位置是渲染引擎的目标。CSS下这些矩形盒子由标准盒模型描述。这个模型描述元素内容占用空间。
盒子有四个边界:外边距边界marginedge,边框边界borderedge,内边距边界paddingedge与内容边界contentedge。
a.内容区域contentarea是真正包含元素内容的区域。位于内容边界的内部,它的大小为内容宽度或content-box宽及内容高度或content-box高。如果box-sizing为默认值,width,min-width,max-width,height,min-height与max-height控制内容大小。
b.内边距区域paddingarea用内容及可能的边框之间的空白区域扩展内容区域。它位于内边边界内部,通常有背景——颜色或图片(不透明图片盖住背景颜色).它的大小为padding-box宽与padding-box高。内边距与内容边界之间的空间由padding-top,padding-right,padding-bottom,padding-left和简写padding控制。
c.边框区域borderarea是包含边框的区域,扩展了内边距区域.它位于边框边界内部,大小为border-box宽和border-box高。由border-width及简写属性border控制。
d.外边距区域marginarea用空白区域扩展边框区域,以分开相邻的元素。它的大小为margin-box,margin-top,margin-right,margin-bottom,margin-left及简写属性margin控制。在外边距合并的情况下,由于盒之间共享外边距,外边距不容易弄清楚。
最后注意,对于行内非替换元素,其占用空间(行高)由line-height决定,即使有内边距与边框。
05.display有哪些值?说明他们的作用。position的值relative和absolute定位原点是?absolute与fixed共同点与不同点?
1、display:
block象块类型元素一样显示。
none缺省值。象行内元素类型一样显示。
inline-block象行内元素一样显示,但其内容象块类型元素一样显示。
list-item象块类型元素一样显示,并添加样式列表标记。
2、position
absolute生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。
fixed(老IE不支持)生成绝对定位的元素,相对于浏览器窗口进行定位。
relative生成相对定位的元素,相对于其正常位置进行定位。
static默认值。没有定位,元素出现在正常的流中
inherit规定从父元素继承position属性的值。
3、absolute与fixed共同点与不同点
A、共同点:
1.改变行内元素的呈现方式,display被置为block;
2.让元素脱离普通流,不占据空间;
3.默认会覆盖到非定位元素上;
B、不同点:
absolute的”根元素“是可以设置的,会随着参照对象元素的高度和宽度变化而变化
fixed的”根元素“固定为浏览器窗口。当你滚动网页,fixed元素与浏览器窗口之间的距离是不变的。
06.display:none和visibility:hidden的区别?
display:none隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,就当他从来不存在。
visibility:hidden隐藏对应的元素,但是在文档布局中仍保留原来的空间。
07.解释下CSSsprites,以及你要如何在页面或网站中使用它?
CSSSprites其实就是把网页中一些背景图片整合到一张图片文件中;再利用CSS的“background-image”,“background-repeat,background-position”的组合进行背景定位;background-position可以用数字能精确的定位出背景图片的位置;
这样可以减少很多图片请求的开销,因为请求耗时比较长;
优点:1、减少HTTP请求数,极大地提高页面加载速度;
2、增加图片信息重复度,提高压缩比,减少图片大小;
3、更换风格方便,只需在一张或几张图片上修改颜色或样式即可实现;
缺点:1、图片合并麻烦;2、维护麻烦,修改一个图片可能需要从新布局整个图片,样式;
08.什么叫外边距折叠(collapsingmargins)?
毗邻的两个或多个margin会合并成一个margin,叫做外边距折叠。规则如下:
1、两个或多个毗邻的普通流中的块元素垂直方向上的margin会折叠
2、浮动元素/inline-block元素/绝对定位元素的margin不会和垂直方向上的其他元素的margin折叠
3、创建了块级格式化上下文的元素,不会和它的子元素发生margin折叠
4、元素自身的margin-bottom和margin-top相邻时也会折叠
多数显示器默认频率是60Hz,即1秒刷新60次,所以理论上最小间隔为1/60*1000ms=16.7ms
09.display:inline-block什么时候会显示间隙?(携程)
移除空格、使用margin负值、使用font-size:0、letter-spacing、word-spacing
行内元素有哪些?块级元素有哪些?空(void)元素有那些?
(1)CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,比如div默认display属性值为“block”,成为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
(2)行内元素有:abspanimginputselectstrong;块级元素有:divulollidldtddh1h2h3h4…p
(3)知名的空元素: