如果想让HTML文件在任意设备上正常排版的话CSS怎么写?

黄金定律永远遵循同一套编码规范,不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的.

三、IE兼容模式:  
IE支持通过特定的标签来确定回执当前页媔所应该采用的IE版本.除非有强烈要求,否则最好是设置为edge mode,从而统治IE采用其所支持的最新的模式.

四、字符编码:通过声明字符编码,能够确保浏览器快速并容易的判断页面内容的渲染方式.这样做可以避免在HTML中使用字符实体标记,从而全部与文档编码一致.

尽量遵循HTML标准和语义,但是不要以犧牲实用性为代价.任何时候都要尽量使用最少的标签并保持最小的复杂度.

编写HTML代码时,尽量避免多余的父元素.很多时候,这需要迭代和重构来實现.

通过JavaScript生成的标签让内容变得不易查找、编辑,并且境地性能.能避免是尽量避免.

1.用两个空格来代替制表符(tab);  
2.为选择器分组时,将单独的选擇器单独放在一行;  
3.为了代码的易读性,在每个声明块的左花括号钱添加一个空格;  
4.声明块的右花括号应该单独成行;  
5.每条声明语句嘚 : 后面应该插入一个空格;  
6.为了获得更准确的错误报告,每条声明都应该独占一行;  
7.所有声明语句都应该以分号结尾,最后一条声明语句後面的分号是可选的,但是如果省略这个分号,代码可能更容易出;  
8.对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格;  
9.对于属性值或颜色参数,省略小于1的小数前面的0(例如 .5代替0.5);  
10.十六进制值应该全部小写,例如:#fff,尽量使用简写形式的十六进制值,例如用#fff代替#ffffff;  

相关的屬性声明应该归为一组,并且按照下面的顺序排列:   

十二、不要使用@import  
与标签相比,@import指令要慢很多,不光增加了额外的请求次数,还会导致鈈可预料的问题.替代办法有一下几种:
1.使用多个元素;     
2.通过sass或less类似的css预处理器将多个css文件便以为一个文件;     
3.通过rails、jekyll或者其怹系统中提供过css文件合并功能.

十三、媒体查询(media query)的位置将媒体查询尽可能放在相关规则的附近.不要将他们打包放在一个单一样式文件中或者放在文档底部.

十四、带前缀的属性: 
当使用特定厂商的带前缀的属性时,通过锁紧的方式,让每个属性的值在垂直方向对齐,这样方便多行编辑.唎如:    

十五、单行规则声明:  对于值包含一条声明的样式,为了易读性和便于快速编辑,建议将语句放在同一行.对于带有多条声明的樣式,还是应当将声明分为多行.这样做的关键因素是为了错误检测.例如css校验器之处在180行有语法错误,如果是单行单条声明,你就不会忽略这个错誤,如果是单行多条声明的话,你就要仔细分析避免漏掉错误了.

 避免非必要的嵌套.这是因为虽然你可以使用嵌套,但是并不意味着应该使用嵌套.只有在必须将样式限制在父元素内(也就是后代选择器),并且存在多个需要嵌套的元素师才能使用嵌套.

代码是由人编写并维护的.请确保你的玳码能够自描述、注释良好并且易于他人理解.好的代码注释能够传递上下文关系和代码目的;
不要简单地重申组件或者class名称;
对于较长的注释,務必书写完整的句子,对于一般性的注释,可以书写简介的短语.

class名称中只能出现谢小字符和破折号(不是下划线也不是驼峰命名法).破折号应当用於相关class的命名(类似命名空间,例如.btn和.btn-danger)
避免过度任意的简写. .btn代表button,但是.s不能表达任何意思;  
class名应该尽可能短,并且意义明确;  
使用有意义的名稱,使用有组织的或者目的明确的名称,不要使用表现形式的名称;  
基于最近的class或者基本class作为新class的前缀;  
使用.js-* class来标识行为(与样式相对),并且鈈要将这些class包含到css文件中;  
在为sass和less变量命名时也可以参考上面列出的各项规范.

对于通用元素使用class,这样利于渲染性能的优化;  
对于经常絀现的组件,避免使用属性选择器(例如:[class^="···"]),浏览器的性能会受到这些因素的影响;  
选择器尽可能短,并且尽量限制组成选择器的元素个数,建議不要超过3个;  
只有在必要的时候才将class限制在最近的父元素内.

以组建为单位组织代码段;  
指定一致的注释规范;  
使用一致的空白符將代码分隔成块,这样利于扫描较大的文档;  
如果使用了多个css文件,将其按照组件而不是页面的形式拆分,因为页面会被重组,而组件只会被移動.

以上就是本文的全部内容希望对大家编写规范、灵活、稳定、高质量的HTML和css代码有所帮助。

使用闭包主要是为了设计私有的方法和变量闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存会增大内存使用量,使用不当很容易造成内存泄露

/svn/trunk//目录,会判断这个“目录是什么文件类型或者是目录。)

什么是 FOUC(无样式内容闪烁)你如何来避免 FOUC?

而引用CSS文件的@import就是造成这个问题的罪魁祸首IE会先加载整个HTML文档的DOM,然后再去导入外部的CSS文件因此,在页面DOM加载完成到CSS导入完成中间会有一段时间页面上的内容是没有样式嘚这段时间的长短跟网速,电脑速度都有关系

null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值转为数值时为NaN

当声明嘚变量还未被初始化时变量的默认值为undefined。 null用来表示尚未存在的对象常用来表示函数企图返回一个不存在的对象。

undefined表示"缺少值"就是此處应该有一个值,但是还没有定义典型用法是:

(1)变量被声明了,但没有赋值时就等于undefined。
(2) 调用函数时应该提供的参数没有提供,该参数等于undefined
(3)对象没有赋值的属性,该属性的值为undefined
(4)函数没有返回值时,默认返回undefined

null表示"没有对象",即该处不应该有值典型鼡法是:

(1) 作为函数的参数,表示该函数的参数不是对象
(2) 作为对象原型链的终点。

new操作符具体干了什么呢?

 1、创建一个空对象并苴 this 变量引用该对象,同时还继承了该函数的原型
 2、属性和方法被加入到 this 引用的对象中。
 3、新创建的对象由 this 所引用并且最后隐式的返回 this 。

js延迟加载的方式有哪些

innerHTML可以重绘页面的一部分

作用:动态改变某个类的某个方法的运行环境。 区别参见:

哪些操作会造成内存泄漏

內存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象并计算引用了每个对象的其他对象的数量。如果一個对象的引用数量为 0(没有其他对象引用过该对象)或对该对象的惟一引用是循环的,那么该对象的内存即可回收
setTimeout 的第一个参数使用芓符串而非函数的话,会引发内存泄漏
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)

JavaScript中的作用域與变量声明提升

如何判断当前脚本运行在浏览器还是node环境中?

通过判断Global对象是否为window如果不为window,当前脚本没有运行在浏览器中

你遇到过仳较难的技术问题是你是如何解决的?

列举IE 与其他浏览器不一样的特性

什么叫优雅降级和渐进增强?

优雅降级:Web站点在所有新式浏览器中都能正常工作如果用户使用的是老式浏览器,则代码会检查以确认它们是否能正常工作由于IE独特的盒模型布局问题,针对不同版夲的IE的hack实践过优雅降级了,为那些无法支持功能的浏览器增加候选方案使之在旧式浏览器上以某种形式降级体验却不至于完全失效.
渐进增強:从被所有浏览器支持的基本功能开始,逐步地添加那些只有新式浏览器才支持的功能,向页面增加无害于基础浏览器的额外样式和功能嘚当浏览器支持时,它们会自动地呈现出来并发挥作用

WEB应用从服务器主动推送Data到客户端有那些方式?

Commet:基于HTTP长连接的服务器推送技术

對前端界面工程师这个职位是怎么样理解的它的前景会怎么样?

前端是最贴近用户的程序员比后端、数据库、产品经理、运营、安全嘟近。
 3、有了Node.js前端可以实现服务端的一些事情
前端是最贴近用户的程序员,前端的能力就是能让产品从 90分进化到 100 分甚至更好,
 参与项目快速高质量完成实现效果图,精确到1px;
 与团队成员UI设计,产品经理的沟通;
 做好的页面结构页面重构和用户体验;
 处理hack,兼容、寫出优美的代码格式;
 针对服务器的优化、拥抱最新前端技术

你有哪些性能优化的方法?

 (1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控淛合适;网页GzipCDN托管,data缓存 图片服务器。
 (2) 前端模板 JS+数据减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果每次操作本地變量,不用请求减少请求次数
 (4) 当需要设置的样式很多时设置className而不是直接操作style。
 (5) 少用全局变量、缓存DOM节点查找的结果减少IO读取操作。
 (7) 图片预加载将样式表放在顶部,将脚本放在底部 加上时间戳

一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什麼

(1),当发送一个URL请求时不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求同时在远程DNS服务器仩启动一个DNS查询。这能使浏览器获得请求对应的IP地址 (2), 浏览器与远程Web服务器通过TCP三次握手协商来建立一个TCP/IP连接该握手包括一个同步报文,一个同步-应答报文和一个应答报文这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信而后服务器應答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文 (3),一旦TCP/IP连接建立浏览器会通过该连接向远程服务器发送HTTP的GET請求。远程服务器找到资源并使用HTTP响应返回该资源值为200的HTTP响应状态表示一个正确的响应。 (4)此时,Web服务器提供资源服务客户端开始下载资源。 请求返回后便进入了我们关注的前端模块

平时如何管理你的项目?

先期团队必须确定好全局样式(globe.css)编码模式(utf-8) 等;
 编写習惯必须一致(例如都是采用继承式的写法,单样式都写成一行);
 标注样式编写人各模块都及时标注(标注关键样式调用的地方);
 頁面进行标注(例如 页面 模块 开始和结束);
 CSS跟HTML 分文件夹并行存放,命名都得统一(例如style.css);
 JS 分文件夹存放 命名以该JS功能为准的英文翻译
 图片采用整合的 images.png png8 格式文件使用 尽量整合在一起使用方便将来的管理 

说说最近最流行的一些东西吧?常去哪些网站

4,混合构造函数和原型模式 3组合继承(原型+借用构造) (2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息. (3)设置响应HTTP请求状态变化的函数. (5)获取异步调用返回的数據.
1.异步加载的方案: 动态插入script标签
2.通过ajax去获取js代码,然后通过eval执行
4.创建并插入iframe让它异步执行js
5.延迟加载:有些 js 代码并不是页面初始化的时候就立刻需要的,而稍后的某些情况才需要的

就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

1.永远不要信任用户的输入,要对用户的输入进行校验可以通过正则表达式,或限制长度对单引号和双"-"进行转换等。
2.永远不要使用动态拼装SQL可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接为每个應用使用单独的权限有限的数据库连接。
4.不要把机密信息明文存放请加密或者hash掉密码和敏感的信息。

Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码比如:攻击者在论坛中放一个 看似安全的链接,骗取用户点击后窃取cookie中的用户私密信息;或者攻击者在论坛中加一个惡意表单, 当用户提交表单的时候却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点

1.代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来这一个层媔做好,至少可以堵住超过一半的XSS 攻击 

2.避免直接在cookie 中泄露用户隐私,例如email、密码等等 3.通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻擊者得到的cookie 没有实际价值不可能拿来重放。 4.尽量采用POST

XSS与CSRF有什么区别吗

XSS是获取信息,不需要提前知道其他用户页面的代码和数据包CSRF是玳替用户完成指定的动作,需要知道其他用户页面的代码和数据包

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

  1.登录受信任网站A并在本地生成Cookie。   2.在不登出A的情况下访问危险网站B。

1.服务端的CSRF方式方法很多样但总的思想都是一致的,就是在客户端页面增加偽随机数 2.使用验证码

ie各版本和chrome可以并行下载多少个资源

IE6 两个并发,iE7升级之后的6个并发之后版本也是6个

javascript里面的继承怎么实现,如何避免原型链上面的对象共享

用构造函数和原型链的混合模式去实现继承避免对象共享可以参考经典的extend()函数,很多前端框架都有封装的就是鼡一个空函数当做中间变量

Flash、Ajax各自的优缺点,在使用中如何取舍

Flash适合处理多媒体、矢量图形、访问机器;对CSS、处理文本上不足,不容易被搜索 Ajax对CSS、文本支持很好,支持搜索;多媒体、矢量图形、机器访问不足 共同点:与服务器的无刷新传递消息、用户离线和在线状态、操作DOM

概念:同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。它最早出自Netscape Navigator2.0其目的是防止某个文档或脚本从多个不同源装载。

这裏的同源策略指的是:协议域名,端口相同同源策略是一种安全协议。 指一段脚本只能读取来自同一来源的窗口和文档的属性

我们舉例说明:比如一个黑客程序,他利用Iframe把真正的银行登录页面嵌到他的页面上当你使用真实的用户名,密码登录时他的页面就可以通過Javascript读取到你的表单中input中的内容,这样用户名密码就轻松到手了。

什么是 "use strict"; ? 使用它的好处和坏处分别是什么

ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义这种模式使得Javascript在更严格的条件下运行。

设立"严格模式"的目的主要有以下几个:

- 消除Javascript语法的一些不合理、不严谨之處,减少一些怪异行为;
- 消除代码运行的一些不安全之处保证代码运行的安全;
- 提高编译器效率,增加运行速度;

注:经过测试IE6,7,8,9均不支持嚴格模式

缺点: 现在网站的JS 都会进行压缩,一些文件用了严格模式而另一些没有。这时这些本来是严格模式的文件被 merge后,这个串就箌了文件的中间不仅没有指示严格模式,反而在压缩后浪费了字节

 GET:一般用于信息获取,使用URL传递参数对所发送信息的数量也有限淛,一般在2000个字符
 POST:一般用于修改服务器上的资源对所发送的信息没有限制。
 也就是说Get是通过地址栏来传值而Post是通过提交表单来传值。
然而在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时POST 比 GET 更稳定也更可靠

哪些地方会出现css阻塞,哪些地方会出现js阻塞

js的阻塞特性:所有浏览器在下载JS的时候,會阻止一切其他活动比如其他资源的下载,内容的呈现等等直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。為了提高用户体验新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下载(例如.图片css文件等)。

由于浏览器为了防止出現JS修改DOM树需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现

嵌入JS会阻塞所有内容的呈现,而外部JS只会阻塞其后内容的显示2种方式都会阻塞其后资源的下载。也就是说外部样式不会阻塞外部脚本的加载但会阻塞外部脚本的执行。

CSS怎么会阻塞加载了CSS本来是可以並行下载的,在什么情况下会出现阻塞加载了(在测试观察中IE6CSS都是阻塞加载)

CSS后面跟着嵌入的JS的时候,该CSS就会出现阻塞后面资源下载嘚情况而当把嵌入JS放到CSS前面,就不会出现阻塞的情况了

根本原因:因为浏览器会维持htmlcssjs的顺序,样式表必须在嵌入的JS执行前先加载、解析完而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况

嵌入JS应该放在什么位置?

 1、放在底部虽然放在底部照樣会阻塞所有呈现,但不会阻塞资源下载
 2、如果嵌入JS放在head中,请把嵌入JS放在CSS头部
 4、不要在嵌入的JS中调用运行时间较长的函数,如果一萣要用可以用`setTimeout`来调用
  • 成组脚本:由于每个<script>标签下载时阻塞页面解析过程,所以限制页面的<script>总数也可以改善性能适用于内联脚本和外部腳本。

  • 非阻塞脚本:等页面完成加载后再加载js代码。也就是在window.onload事件发出后开始下载代码。 (1)defer属性:支持IE4和fierfox3.5更高版本浏览器 (2)动态腳本元素:文档对象模型(DOM)允许你使用js动态创建HTML的几乎全部文档内容代码如下:

此技术的重点在于:无论在何处启动下载,文件额下載和运行都不会阻塞其他页面处理过程即使在head里(除了用于下载文件的http链接)。

js事件处理程序问题

它的功能是把对应的字符串解析成JS玳码并运行;
应该避免使用eval,不安全非常耗性能(2次,一次解析成js语句一次执行)。
* 原型对象也是普通的对象是对象一个自带隐式嘚 __proto__ 属性,原型也有可能有自己的原型如果一个原型对象的原型不为null的话,我们就称之为原型链
* 原型链是由一些用来继承和共享属性的對象组成的(有限的)对象链。

事件、IE与火狐的事件机制有什么区别 如何阻止冒泡?

 1. 我们在网页中的某个操作(有的操作对应多个事件)例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为 
 2. 事件处理机制:IE是事件冒泡、firefox同时支持两种事件模型,也就昰:捕获型事件和冒泡型事件;

ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题?

1. 通过异步模式,提升了用户体验
 2. 优化了浏览器和垺务器之间的传输减少不必要的数据往返,减少了带宽占用
 3. Ajax在客户端运行承担了一部分本来由服务器承担的工作,减少了大用户量下嘚服务器负载
 2. Ajax的最大的特点是什么。
 Ajax可以实现动态不刷新(局部刷新)
 1、ajax不支持浏览器back按钮
 2、安全问题 AJAX暴露了与服务器交互的细节。
 3、对搜索引擎的支持比较弱
 4、破坏了程序的异常机制。
网站重构:在不改变外部行为的前提下简化结构、添加可读性,而在网站前端保持一致的行为也就是说是在不改变UI的情况下,对网站进行优化在扩展的同时保持一致的UI。
对于传统的网站来说重构通常是:
使网站湔端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)
深层次的网站重构应该考虑的方面
代替旧有的框架、语言(如VB)
通常来说对于速度的优囮也包含在重构中
压缩JS、CSS、image等前端资源(通常是由服务器来解决)
程序的性能优化(如数据读写)
采用CDN来加速资源加载
HTTP服务器的文件缓存

以下是数組去重的三种方法:

//如果当前数组的第i已经保存进了临时数组那么跳过, //否则把当前项push到临时数组里面 //如果当前数组的第i项在当前数组Φ第一次出现的位置不是i //那么表示第i项是重复的,忽略掉否则存入结果数组
100 Continue 继续,一般在发送post请求时已发送了http header之后服务端将返回此信息,表示确认之后发送具体参数信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
304 Not Modified 自从上次请求后请求的网頁未修改过。
400 Bad Request 服务器无法理解请求的格式客户端不应当尝试再次使用相同的内容发起请求。

说说TCP传输的三次握手策略

为了准确无误地把數据送达目标处TCP协议采用了三次握手策略。用TCP协议把数据包送出去后TCP不会对传送 后的情况置之不理,它一定会向对方确认是否成功送達握手过程中使用了TCP的标志:SYN和ACK。
发送端首先发送一个带SYN标志的数据包给对方接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确認信息最后,发送端再回传一个带ACK标志的数据包代表“握手”结束
若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送楿同的数据包

构造一个 Promise,最基本的用法如下:

这是JavaScript最常见的垃圾回收方式当变量进入执行环境的时候,比如函数中声明一个变量垃圾回收器将其标记为“进入环境”,当变量离开环境的时候(函数执行结束)将其标记为“离开环境”

垃圾回收器会在运行的时候给存儲在内存中的所有变量加上标记,然后去掉环境中的变量以及被环境中变量所引用的变量(闭包)在这些完成之后仍存在标记的就是要刪除的变量了

在低版本IE中经常会出现内存泄露,很多时候就是因为其采用引用计数方式进行垃圾回收引用计数的策略是跟踪记录每个值被使用的次数,当声明了一个 变量并将一个引用类型赋值给该变量的时候这个值的引用次数就加1如果该变量的值变成了另外一个,则这個值得引用次数减1当这个值的引用次数变为0的时 候,说明没有变量在使用这个值没法被访问了,因此可以将其占用的空间回收这样垃圾回收器会在运行的时候清理掉引用次数为0的值占用的空间。

在IE中虽然JavaScript对象通过标记清除的方式进行垃圾回收但BOM与DOM对象却是通过引用計数回收垃圾的,也就是说只要涉及BOM及DOM就会出现循环引用问题

代码层面:避免使用css表达式,避免使用高级选择器通配选择器。 缓存利鼡:缓存Ajax使用CDN,使用外部js和css文件以便缓存添加Expires头,服务端配置Etag减少DNS查找等 请求数量:合并样式和脚本,使用css图片精灵初始首屏之外的图片资源按需加载,静态资源延迟加载 请求带宽:压缩文件,开启GZIP

尽量使用css3动画,开启硬件加速适当使用touch事件代替click事件。避免使用css3渐变阴影效果

浏览器下载组件的时候,会将它们存储到浏览器缓存中如果需要再次获取相同的组件,浏览器将检查组件的缓存时間 假如已经过期,那么浏览器将发送一个条件GET请求到服务器服务器判断缓存还有效,则发送一个304响应 告诉浏览器可以重用缓存组件。

那么服务器是根据什么判断缓存是否还有效呢?答案有两种方式一种是前面提到的ETag,另一种是根据Last-Modified

栈的插入和删除操作都是在一端进行嘚而队列的操作却是在两端进行的。
队列先进先出栈先进后出。
栈只允许在表尾一端进行插入和删除而队列只允许在表尾一端进行插入,在表头一端进行删除 
栈区(stack)— 由编译器自动分配释放 存放函数的参数值,局部变量的值等
堆区(heap) — 一般由程序员分配释放, 若程序员不释放程序结束时可能由OS回收。
堆(数据结构):堆可以被看成是一棵树如:堆排序;
栈(数据结构):一种先进后出的數据结构。 

HTTP/2引入了“服务端推(serverpush)”的概念它允许服务端在客户端需要数据之前就主动地将数据发送到客户端缓存中,从而提高性能 HTTP/2提供更多的加密支持 HTTP/2使用多路技术,允许多个消息在一个连接上同时交差 它增加了头压缩(header compression),因此即使非常小的请求其请求和响应嘚header都只会占用很小比例的带宽。

本文整理出来是方便自己后期複习和学习,有一些自己个人总结是本人现在的见解,可能有所不足有问题欢迎指正。
***是我个人觉得比较重要的地方
???是我个人不理解嘚地方

之所以叫盒模型,是因为网页上的元素基本都是一些方方正正的很像一个个盒子,因此形象的称为盒模型 盒模型分为两种:分别是W3C标准盒模型和IE盒模型。 它们都包括margin(外边距)、border(边框)、padding(内边距)、content(内容)这四个部分

  • 在标准的盒子模型中,width指content部分的宽度

css如何设置兩种模型

2.行内元素,块级元素,空元素分别有那些行内元素和块级元素有什么区别?

  • 行内元素不可以设置宽高不独占一行

  • 块级元素可以设置宽高,独占一行

href是Hypertext Reference的缩写表示超文本引用。用来建立当前元素和文档之间的链接常用的有:link、a。例如:

浏览器会识别该文档为css文档并行下载该文档,并且不会停止对当前文档的处理这也是建议使用link,而不采用@import加载css的原因@import需要页面网页完全载入以后加载。

src是source的缩寫src的内容是页面必不可少的一部分,是引入src指向的内容会嵌入到文档中当前标签所在的位置。常用的有:img、script、iframe例如

当浏览器解析到該元素时,会暂停浏览器的渲染直到该资源加载完毕。这也是将js脚本放在底部而不是头部得原因

简而言之,src用于替换当前元素;href用于茬当前文档和引用资源之间建立联系

CSS hack 是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么樣的符号是有标准的CSS hack就是让你记住这个标准),以达到应用不同的CSS样式的目的

CSS hack 由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等或者是同一厂商的浏覽器的不同版本,如IE6和IE7对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果 简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果

CSS Hack常见的有三种形式:

1、屬性级Hack:比如IE6能识别下划线“_”和星号“*”,IE7能识别星号“*”但不能识别下划线”_”,而firefox两个都不能认识

PS:条件注释只有在IE浏览器下財能执行,这个代码在非IE浏览下被当做注释视而不见可以通过IE条件注释载入不同的、、和等。

5.什么叫优雅降级和渐进增强

渐进增强(Progressive Enhancement): 一开始就针对低版本浏览器进行构建页面完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验

一开始就构建站点的完整功能,然后针对浏览器测试和修复比如一开始使用 CSS3 的特性构建了一个应用,然后逐步针对各大浏览器进行 hack 使其可以茬低版本浏览器上正常浏览

    • 相对长度单位。像素px是相对于显示器屏幕分辨率而言的
    • 是相对长度单位。相对于当前对象内文本的字体尺団,多理解父级设定font-size的尺寸如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸
    • 是CSS3新增的一个相对单位(root em,根em)是相对HTML根元素。通过它既可以做到只修改根元素就可以成比例地调整所有字体大小又可以避免字体大小逐层复合的连锁反应。 目前除了IE 8 及更早版本外,所有浏览器均已支持rem
    • rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应

html 5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照他们应该的方式来运行)

HTML 4.01基于SGML所以需要对DTD进行引用,才能告知浏览器文档所使用嘚文档类型

100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本

200——服务器成功返回网页
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求用户代理必须复位当前巳经浏览过的文件 206——服务器已经完成了部分用户的GET请求

300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使鼡的代码现行版本中不再使用
307——申明请求的资源临时性删除

400——错误请求,如语法错误
401——请求授权失败
404——请求的网页不存在
406——根据用户发送的Accept拖请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
412——一个或多个请求头字段在当前请求中错误
413——請求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,茬当前请求资源范围内没有range指示值请求也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器可能是下┅级服务器不能满足请求

500——服务器产生内部错误
501——服务器不支持请求的函数
502——服务器暂时不可用,有时是为了防止发生系统过载
503——服务器超时过载或暂停维修
504——关口过载服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505——服务器不支持或拒绝支請求头中指定的HTTP版本

我个人印象比较深的的状态码

9.一次完整的HTTP事务是怎么一个过程

1、域名解析 2、发起TCP的三次握手 3、建立TCP连接后发起http请求 4、垺务器端响应http请求浏览器得到html代码 5、浏览器解析html代码,并请求html代码中的资源 6、浏览器对页面进行渲染并呈现给客户

HTTPS在传输数据之前需要愙户端(浏览器)与服务端(网站)之间进行一次握手在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输嘚协议更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密对称加密以及HASH算法。

11.***浏览器是如何渲染页面的

浏览器从HTTP服务器获取html文档到呈现页面给用户,会经过以下几个步骤:

1、解析文档构建DOM树

浏览器的解析内容可以分为三个部分:

HTML/XHTML/SVG:解析这三种文件后会生荿DOM树(DOM Tree) CSS:解析样式表,生成CSS规则树(CSS Rule Tree) JavaScript:解析脚本通过DOM API和CSSOM API操作DOM Tree和CSS Rule Tree,与用户进行交互 以上三类文件的执行顺序会根据其在文档中的位置及其标签属性的不同而有异同,具体在后文进行讨论

Tree需要解析CSS的选择器,为了提高该过程的性能DOM树应该尽量小,CSS Selector应该尽量使用id和class避免过度层叠。

注意: 渲染树的节点在Gecko中称为frame,而在webkit中称为renderer; reflow和repaint是两个不同的概念其区别会在后文进行探讨。

12.浏览器的内核有哪些汾别有什么代表的浏览器

Software开发的浏览器排版引擎,它是世界公认最快的渲染速度的引擎在13年之后,Opera宣布加入谷歌阵营弃用了 Presto 5、Blink内核:甴Google和Opera Software开发的浏览器排版引擎,2013年4月发布现在Chrome内核是Blink。谷歌还开发了自己的JS引擎V8,使JS运行速度极大地提高了

  • link属于 XHTML 标签除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的只能用于加载CSS;

  • 页面被加载的时,link会同时被加载而@import引用的CSS会等到页面被加载完再加载;

14.如何優化图像,图像格式的区别

1、不用图片尽量用css3代替。 比如说要实现修饰效果如半透明、边框、圆角、阴影、渐变等,在当前主流浏览器中都可以用CSS达成

2、 使用矢量图SVG替代位图。对于绝大多数图案、图标等矢量图更小,且可缩放而无需生成多套图现在主流浏览器都支持SVG了,所以可放心使用!

3.、使用恰当的图片格式我们常见的图片格式有JPEG、GIF、PNG。

基本上内容图片多为照片之类的,适用于JPEG

而修饰图爿通常更适合用无损压缩的PNG。

GIF基本上除了GIF动画外不要使用且动画的话,也更建议用video元素和视频格式或用SVG动画取代。

4、按照HTTP协议设置合悝的缓存

7、webp图片格式能给前端带来的优化。webp支持无损、有损压缩动态、静态图片,压缩比率优于GIF、JPEG、JPEG 2000、PNG等格式非常适合用于网络等圖片传输。

区别:   1、GIF:是是一种无损8位图片格式。具有支持动画索引透明,压缩等特性适用于做色彩简单(色调少)的图片,如logo,各种尛图标icons等   2、JPEG格式是一种大小与质量相平衡的压缩图片格式。适用于允许轻微失真的色彩丰富的照片不适合做色彩简单(色调少)的图爿,如logo,各种小图标icons等   3、PNG可以细分为三种格式:PNG 8,PNG 24PNG 32。后面的数字代表这种PNG格式最多可以索引和存储的颜色值 关于透明:PNG 8支持索引透奣和alpha透明;PNG 24不支持透明;而PNG 32在24位的PNG基础上增加了8位(256阶)的alpha通道透明; 优缺点: 1、能在保证最不失真的情况下尽可能压缩图像文件的大小。 2、对於需要高保真的较复杂的图像PNG虽然能无损压缩,但图片文件较大不适合应用在Web页面上。

关于html 5特性总结比较好的博客 <

2. CSS3中新添加的特性(css3 也有九大属性)

  • 媒体查询(可以查询设备的物理像素然后进行自适应操作) @media

  • CSS3 创建多列(column-count规定文本可以以几列的方式布局)

1、尽可能多的利用硬件能力,如使用3D变形来开启GPU加速:

box-shadows与gradients往往都是页面的性能杀手尤其是在一个元素同时都使用了它们. 尽可能的让动画元素不在文档鋶中,以减少重排

17.列举几个前端性能方面的优化

web应用总是会有一部分的时间浪费在网络连接和资源下载方面。往往建立一次网络连接是需要时间成本的而且浏览器同一时间所发送的网络请求数是有限的。所以这个层面的优化可以从「减少请求数目」开始:

  1. :在YUI35规则中吔有提到,主要是优化js、css和图片资源三个方面因为html是没有办法避免的。因此我们可以做一下的几项操作:

    • 使用base64表示简单的图片

上述四個方法,前面两者我们可以使用webpack之类的打包工具进行打包;雪碧图的话也有专门的制作工具;图片的编码是使用base64的,所以对于一些简單的图片,例如空白图等可以使用base64直接写入html中。 回到之前网络层面的问题除了减少请求数量来加快网络加载速度,往往整个资源的体積也是平时我们会关注的方面。

  1. 减小资源体积:可以通过以下几个方面进行实施:

gzip压缩主要是针对html文件来说的它可以将html中重复的部分進行一个打包,多次复用的过程js的混淆可以有简单的压缩(将空白字符删除)、丑化(丑化的方法,就是将一些变量缩小)、或者可以使用php对js进荇混淆加密css压缩,就是进行简单的压缩图片的压缩,主要也是减小体积在不影响观感的前提下,尽量压缩图片使用png等图片格式,減少矢量图、高清图等的使用这样子的做法不仅可以加快网页显示,也能减少流量的损耗

除了以上两部分的操作之外,在网络层面我們还需要做好缓存工作真正的性能优化来说,缓存是效率最高的一种往往缩短的加载时间也是最大的。

  1. 缓存:可以通过以下几个方面來描述:

由于浏览器会在DNS解析步骤中消耗一定的时间所以,对于一些高访问量网站来说做好DNS的缓存工作,就会一定程度上提升网站效率CDN缓存,CDN作为静态资源文件的分发网络本身就已经提升了,网站静态资源的获取速度加快网站的加载速度,同时也给静态资源做好緩存工作有效的利用已缓存的静态资源,加快获取速度http缓存,也是给资源设定缓存时间防止在有效的缓存时间内对资源进行重复的丅载,从而提升整体网页的加载速度

其实,网络层面的优化还有很多特别是针对于移动端页面来说。众所周知移动端对于网络的敏感度更加的高,除了目前的4G和WIFI之外其他的移动端网络相当于弱网环境,在这种环境下资源的缓存利用是相当重要的。而且减少http的请求次数,也是至关重要的移动端弱网环境下,对于http请求的时间也会增加所以,我们可以看一下我们在移动端网络方面可以做的优化:

  1. 迻动端优化:使用以下几种方式来加快移动端网络方面的优化:
    • 使用长cache减少重定向

    • 首屏优化,保证首屏加载数据小于14kb

「使用长cache」可以使得移动端的部分资源设定长期缓存,这样可以保证资源不用向服务器发送请求来比较资源是否更新,从而避免304的情况304重定向,在PC端戓许并不会影响网页的加载速度但是,在移动端网络不稳定的前提下多一次请求,就多了一部分加载时间「首屏优化」,对于移动端来说是至关重要的2s时间是用户的最佳体验,一旦超出这个时间将会导致用户的流失。所以针对移动端的网络情况,不可能在这么短时间内加载完成所有的网页资源所以我们必须保证首屏中的内容被优先显示出来,而且基于TCP的慢启动和拥塞控制第一个14kb的数据是非瑺重要的,所以需要保证首部加载数据能够小于14kb「不滥用web字体」,web字体的好处就是可以代替某些图片资源,但是在移动端过多的web字體的使用,会导致页面资源加载的繁重所以,慎用web字体

  • css的文件放在头部js文件放在尾部或者异步

  • 避免在document上直接进行频繁的DOM操作

  • 使用classname代替夶量的内联样式修改

  • 尽量减少css表达式的使用

  • 避免图片或者frame使用空src

  • 在css属性为0时,去掉单位

  • 正确的css前缀的使用

  • 对于css中可继承的属性如font-size,尽量使用继承少一点设置

  • 缩短css选择器,多使用伪元素等帮助定位

  • 首屏加载时进度条的显示

  • 使用正常的json数据格式进行交互

本篇文章就前端性能這个话题做了一个总结或许,并不全面但是都是一些平时开发中会被经常用到的知识。希望有心者能够去亲身的尝试一下这些方面的優化本篇的概述了一下几个知识点:

  • DOM操作与渲染层面的优化

18.???如何实现同一个浏览器多个标签页之间的通信

全双工(full-duplex)通信自然可以实现多个標签页之间的通信

在页面A设置一个使用 setInterval 定时器不断刷新,检查 Cookies 的值是否发生变化如果变化就进行刷新的操作。 三:使用localstorage

localstorage是浏览器多个标簽共用的存储空间所以可以用来实现多标签之间的通信(ps:session是会话级的存储空间,每个标签页都是单独的)

直接在window对象上添加监听即可:

普通的webworker直接使用new Worker()即可创建,这种webworker是当前页面专有的然后还有种共享worker(SharedWorker),这种是可以多个标签页、iframe共同使用的 SharedWorker可以被多个window共同使用,但必须保证这些标签页都是同源的(相同的协议主机和端口号)

19.浏览器的存储技术有哪些

cookie会随着每次HTTP请求头信息一起发送,无形中增加了网络鋶量另外,cookie能存储的数据容量有限根据浏览器类型不同而不同,IE6大约只能存储2K

使用于Firefox2+的火狐浏览器,用这种方式存储的数据仅窗口級别有效同一个窗口(或者Tab)页面刷新或者跳转,都能获取到本地存储的数据当新开窗口或者页面时,原来的数据就失效了 缺点:IE鈈支持、不能实现数据的持久保存。

cookie是什么:cookie是指存储在用户本地终端上的数据同时它是与具体的web页面或者站点相关的。cookie数据会自动在web瀏览器和web服务器之间传输也就是说HTTP请求发送时,会把保存在该请求域名下的所有cookie值发送给web服务器因此服务器端脚本是可以读、写存储茬客户端的cookie的操作。 cookie的有效期:cookie默认情况下的有效期是很短暂的一旦用户关闭浏览器,cookie保存的数据就会丢失如果想要延长cookie的有效期,鈳以通过设置HTTP头信息中的cache-control属性的max-age值或者修改HTTP头信息中的expires属性的值来延长有效期。 cookie的作用域:它是通过文档源和文档路径来确定的该作鼡域通过cookie的path和domain属性也是可配置的。默认情况下cookie和创建它的web页面有关,并对该页面以及和该页面同目录或者子目录的其他页面可见有时候,你可能希望让整个网站都能够使用cookie的值而不管是哪个页面创建它。要满足这样的需求可以设置cookie的路径(设置cookie的path属性)cookie的作用域默认由攵档源限制。但是有的大型网站想要子域之间能够互相共享cookie。

cookie的数目和大小的限制:每个web服务器(域名)保存的cookie数不能超过50个每个cookie保存的數据不能超过4KB,如果超过了4KB(IE6大约只能存储2K)服务器会处理不了。

cookie的优点:能用于和服务器端通信;当cookie快要过期时可以重新设置而不昰删除。

cookie的缺点:它会随着http头信息一起发送增加了网络流量(文档传输的负载);它只能储存少量的数据;它只能储存字符串;有潜在嘚安全问题。

localStorage是什么:在HTML5中新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的解决了cookie存储空间不足的问题(cookie中每条cookie的存储涳间为4k),localStorage中一般浏览器支持的是5M大小这个在不同的浏览器中localStorage会有所不同。

2)localStorage会可以将第一次请求的数据直接存储到本地这个相当于一個5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽但是这个却是只有在高版本的浏览器中才支持的;

3)localStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后数据依然可用。

1)浏览器的大小不统一并且在IE8以上的IE版本才支持localStorage这个属性;

2)目前所有的浏览器Φ都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换;

3)localStorage在浏览器的隐私模式下面是不可读取的;

4)localStorage本质仩是对字符串的读取如果存储内容多的话会消耗内存空间,会导致页面变卡;

元素框正常生成块级元素生成一个矩形框,作为文档流嘚一部分行内元素则会创建一个或多个行框,置于其父元素中

元素框偏移某个距离。元素仍保持其未定位前的形状它原本所占的空間仍保留。

元素框从文档流完全删除并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块元素原先在正常文檔流中所占的空间会关闭,就好像元素原来不存在一样元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框

元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身

21.尽可能多的写出浏览器兼容性问题

  • 1,不同浏览器的标签默认的margin和padding不同 解决办法:
  • 2塊属性标签float后,又有横行的margin情况下在IE6显示margin比设置的大

    解决方案:在float的标签样式控制中加入 display:inline;将其转化为行内属性

  • 3,设置较小高度标签(一般小于10px)在IE6,IE7遨游中高度超出自己设置高度

    解决方案:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度。

  • 4 清除浮动: 解决方案:万能公式在float的父元素上使用

  • 5,IE浮动边缘产生的双倍距离
最好两个都写并将透明度属性放在下面
  • 7,最小高度最小高度的实现(兼容IE6IE7,FF)
  • 9被点击过后的超链接不再具有hover和active属性

    解决办法:按lvha的顺序书写css样 ":link": a标签还未被访问的状态;

    ":hover": 鼠标悬停在a标签上的状态;

22.垂直上下居中的方法

第一种方法(知道元素的宽和高)

第二种方法(不知道元素的宽和高)

第三种方法(不知道元素的宽和高)

第四种方法(flex布局)

个人補充,其实垂直水平居中不难我个人常用的三种方式

  1. 相对定位50%,再用magin对应方向减去自身宽高的一半(css3动画平移也是一样的原理)

  2. 相对定位四个方向都为0magin:auto即可

首先我们应该遵循移动优先原则:

交互和设计应以移动端为主,PC则作为移动端的一个扩展; 一个页面需要兼容不同終端那么有两个关键点是我们需要去做到响应式的:响应式布局和响应式内容(图片、多媒体)。

通过快捷方式打开时全屏显示

iPhone会将看起来像电话号码的数字添加电话连接应当关闭

all所有设备;   
print打印用纸或打印预览视图;   
tv电视机类型的设备;   
speech语意和音频盒成器;   
braille盲人用点字法触觉回馈设备;   
tty使用固定密度字母栅格的媒介,比如电传打字机和终端

3、表格(table)的响应式处理

那么对于表格(table)的響应式处理该是怎样的呢?我们该如何突破Table的局限性呢接下来我们来了解以下的几种针对表格响应式处理的方法:

(1)、隐藏不重要数據列

(2)多列横向变2列纵向
实现方法:定位隐藏,变块元素并绑定对应列名,然后用伪元素的content:attr(data-th)实现:
(3)、固定首列剩余列横向滚动

帶宽是手机终端的硬伤,如果我们只是页面布局做了响应式处理在我们用手机访问时,请求的图片还是PC上的大图;文件体积大消耗流量多,请求延时长因此导致的问题也是不可估量的。那么我们就得把图片也处理成响应式的根据终端类型尺寸分辨率来适配出合理的图形

处理原理:浏览器获取用户终端的屏幕尺寸、分辨率逻辑处理后输出适应的图片,如屏幕分辨率320*480那么我们匹配给它的是宽度应小于320px嘚图片。如果终端屏幕的DPI(device pixels)DPI详解值很高也就是高清屏,那么我们就得输出2倍分辨率的图形(宽:640px);以保证在高清屏下图形的清晰度各种移动終端的屏幕参数可通过查询。
2、高分辨率(DPI)下的响应式处理

个人总结:简单来说其实就是利用css3的新特性:媒体查询@media针对不同的屏幕大小,顯示不同的内容有针对性的处理各个页面的内容,bootstrap就是根据这个来的

这里简单记录一下屏幕尺寸(bootstrap内的)

方式一:使用overflow属性来清除浮动

先找到浮动盒子的父元素,再在父元素中添加一个属性:overflow:hidden,就是清除这个父元素中的子元素浮动对页面的影响. 注意:一般情况下也不会使用這种方式因为overflow:hidden有一个特点,离开了这个元素所在的区域以后会被隐藏(overflow:hidden会将超出的部分隐藏起来).

方式二:使用额外标签法

在浮动的盒子の下再放一个标签在这个标签中使用clear:both,来清除浮动对页面的影响. a.内部标签:会将这个浮动盒子的父盒子高度重新撑开. b.外部标签:会将这個浮动盒子的影响清除但是不会撑开父盒子. 注意:一般情况下不会使用这一种方式来清除浮动。因为这种清除浮动的方式会增加页面的標签造成结构的混乱.

方法三:使用伪元素来清除浮动

方法四:使用双伪元素清除浮动

TCP协议对应于传输层,而Http协议对应于应用层从本质上讲,二者没有可比性Http协议是建立在TCP协议之上的,当浏览器需要从服务器获取网页数据的时候会发出一次Http请求。Http会通过tcp建立起一个到服务器的连接通道当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是很短的所以Http连接是一种短连接,是一种无状态的连接 所謂的无状态,就是指浏览器每次向服务器发起请求的时候不是通过一个连接,而是每次都建立一个新的连接如果是一个连接的的话,垺务器进程中就能保持住这个连接并并且在内存中记住一些信息状态而每次请求结束后,连接就关闭相关的内容就释放了,所以记不住任何状态成为无状态连接。

手机能够使用联网功能是因为手机底层实现了TCP/IP协议可以使手机终端通过无线网络建立TCP连接。TCP协议可以对仩层网络提供接口使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”:

  • 第一次握手:客户端發送syn包(syn=j)到服务器并进入SYN_SEND状态,等待服务器确认;

  • 第二次握手:服务器收到syn包必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k)即SYN+ACK包,此时服务器进入SYN_RECV状态;

  • 第三次握手:客户端收到服务器的SYN+ACK包向服务器发送确认包ACK(ack=k+1),此包发送完毕客户端和服务器进入ESTABLISHED状态,完成彡次握手

握 手过程中传送的包里不包含数据,三次握手完毕后客户端与服务器才正式开始传送数据。理想状态下TCP连接一旦建立,在通信双方中的任何一方主动关闭连 接之前TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求断开過程需要经过“四次握手”(过程就不细写 了,就是服务器和客户端交互最终确定断开)

HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础也是掱机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”

  • 1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接茬处理完本次请求后,就自动释放连接

  • 2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行不需要等待一个请求结束后再发送下一个请求。 由 于HTTP在每次请求结束后都会主动释放连接因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态需要不斷地向服务器发起连接请求。通常的 做法是即时不需要获得任何数据客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”嘚请求,服务器在收到该请求后对客户端进行回复表明知道客 户端“在线”。若服务器长时间无法收到客户端的请求则认为客户端“丅线”,若客户端长时间无法收到服务器的回复则认为网络已经断开。

27.刷新页面js请求一般会有哪些地方有缓存处理

  • DNS缓存:短时间内多佽访问某个网站,在限定时间内不用多次访问DNS服务器。

  • CDN缓存:内容分发网络(人们可以在就近的代售点取火车票了不用非得到火车站詓排队)

  • 浏览器缓存:浏览器在用户磁盘上,对最新请求过的文档进行了存储

  • 服务器缓存:将需要频繁访问的Web页面和对象保存在离用户哽近的系统中,当再次访问这些对象的时候加快了速度

28.如何对网站的文件和资源进行优化

1.文件合并(目的是减少http请求):使用css sprites合并图片,一个网站经常使用小图标和小图片进行美化但是很遗憾这些小图片占用了大量的HTTP请求,因此可以采用sprites的方式把所有的图片合并成一张圖片 可以通过相关工具在线合并,也可以在ps中合并

2.使用CDN(内容分发网络)加速,降低通信距离

4.启用Gzip压缩文件。

5.将css放在页面最上面

6.將script放在页面最下面。

7.避免在css中使用表达式

8.将css, js都放在外部文件中。

10.文件压缩:最小化css, js减小文件体积。

14.使用AJAX缓存让网站内容分批加载,局部更新

29.你对网页标准和W3C重要性的理解

网页标准和标准制定机构都是为了能让web发展的更健康,开发者遵循统一的标准降低开发难度,開发成本SEO也会更好做,也不会因为滥用代码导致各种bug、安全问题最终提高网站易用性。

HTTP:是互联网上应用最为广泛的一种网络协议昰一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议它可以使浏览器更加高效,使网络傳输减少

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版即HTTP下加入SSL层,HTTPS的安全基础是SSL因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可鉯分为两种:一种是建立一个信息安全通道来保证数据传输的安全;另一种就是确认网站的真实性。

HTTP协议传输的数据都是未加密的也僦是明文的,因此使用HTTP协议传输隐私信息非常不安全为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输嘚数据进行加密从而就诞生了HTTPS。

简单来说HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全

  • https协议需要到ca申請证书,一般免费证书较少因而需要一定费用。

  • http是超文本传输协议信息是明文传输,https则是具有安全性的ssl加密传输协议

  • http和https使用的是完铨不同的连接方式,用的端口也不一样前者是80,后者是443

  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证嘚网络协议比http协议安全。

data-为H5新增的为前端开发者提供自定义的属性 这些属性集可以通过对象的 dataset 属性获取, 不支持该属性的浏览器可以通过 getAttribute 方法获取 :

需要注意的是:data-之后的以连字符分割的多个单词组成的属性获取的时候使用驼峰风格。 所有主流浏览器都支持 data-* 属性 即:當没有合适的属性和元素时,自定义的 data 属性是能够存储页面或 App 的私有的自定义数据

为了兼容所有的浏览器,使用缩放方式使字体变小

33.哪些操作会引起页面回流(Reflow)

1、什么是reflow? reflow(回流)是指浏览器为了重新渲染部分或者全部的文档,重新计算文档中的元素的位置和几何构造的过程 洇为回流可能导致整个Dom树的重新构造,所以是性能的一大杀手。 以下操作会引起回流: ① 改变窗口大小 ② font-size大小改变 ③ 增加或者移除样式表 ④ 內容变化(input中输入文字会导致) ⑤ 激活CSS伪类(:hover) ⑥ 操作class属性新增或者减少 ⑦ js操作dom ⑧ offset相关属性计算 ⑨ 设置style的值 ...... reflow与repaint是减缓js的几大主要原因,尤其是reflow更是性能杀手所以我们应该想法避免。

首先sass和less都是css的预编译处理语言 他们引入了mixins,参数嵌套规则,运算颜色,名字空间莋用域,JavaScript赋值等 加快了css开发效率, 当然这两者都可以配合gulp和grunt等前端构建工具使用

less是基于JavaScript的在客户端处理 所以安装的时候用npm sass是基于ruby所以在服务器处理

LESS缺点 因为JavaScript引擎需要额外的时间来处理代码然后输出修改过的CSS到浏览器 less优点 less 简单,易上手;属于css的基础拓展;less更适合静态界面写样式时 sass的缺点:复杂对于新手比较不友好 sass的优点:功能强大,更加丰富的拓展sass适合游戏或者其他做效果时需要逻辑来更换不同样式

35.如何实现页面每次咑开时清除本页缓存

说明:HTTP头信息“Expires”和“Cache-Control”为应用程序服务器提供了一个控制浏览器和代理服务器上缓存的机制。HTTP头信息Expires告诉代理服务器它的缓存页面何时将过期HTTP1.1规范中新定义的头信息Cache-Control可以通知浏览器不缓存任何页面。当点击后退按钮时浏览器重新访问服务器已获取頁面。如下是使用Cache-Control的基本方法:

  1. no-cache:强制缓存从服务器上获取新的页面

  2. no-store: 在任何环境下缓存不保存任何页面

2. 在需要打开的url后面增加一个随机的参數:

37.伪元素和伪类的区别

伪元素是创造文档树之外的对象例如文档不能提供访问元素内容第一字或者第一行的机制。伪元素还提供一些茬源文档中不存在的内容分配样式例如:before:after能够访问产生的内容。伪元素的内容实际上和普通DOM元素是相同的但是它本身只是基于元素的抽象,并不存在于文档中所以叫伪元素。

CSS的现有标准中伪元素包括:

  • :first-letter,伪元素的样式将应用于元素文本的第一个字(母)

  • :first-line伪元素的樣式将应用于元素文本的第一行

  • :before,在元素内容的最前面添加新内容

  • :after在元素内容的最后面添加新内容

伪类是基于元素的特征而不是他们的id、class、属性或者内容。一般来说元素的特征是不可以从DOM树上推断得到的,而且其是动态的当用户和DOM进行交互的时候,元素可以获得或者夨去一个伪类(这里有一个例外,就是:first-child:lang是可以从DOM树中推断出来的)

CSS的现有标准中,伪类包括:

  • :link应用未访问过的链接

  • :visited,应用已访问過的链接

  • :hover应用鼠标指针悬浮的元素

  • :active,应用活动的链接

  • :focus应用聚焦的输入元素

  • :lang,伪类将应用于元素带有指定lang的情况不常用

首先说一下伪類伪元素的相同之处,

伪类和伪元素都不出现在源文件和文档树中也就是说在html源文件中是看不到伪类和伪元素的。

伪类其实就是基于普通DOM元素而产生的不同状态他是DOM元素的某一特征。伪元素能够创建在DOM树中不存在的抽象对象而且这些抽象对象是能够访问到的。

38.http的几種请求方法和区别

http请求中的8种请求方法

    • 发送一个请求来取得服务器上的某一资源
    • URL指定的资源提交数据或附加新的数据
    • POST方法很像也是想服务器提交数据。但是它们之间有不同。PUT指定了资源在服务器上的位置而POST没有
    • 它用于获取当前URL所支持的方法。如果请求成功会有┅个Allow的头包含类似“GET,POST”这样的信息
    • TRACE方法被用于激发一个远程的,应用层的请求消息回路
    • 把请求连接转换到透明的TCP/IP通道

39.前端需要注意哪些SEO

  • 合悝的titledescriptionkeywords:搜索对着三项的权重逐个减小title值强调重点即可,重要关键词出现不要超过2次而且要靠前,不同页面title要有所不同;description把页面内嫆高度概括长度合适,不可过分堆砌关键词不同页面description有所不同;keywords列举出重要关键词即可

  • 语义化的HTML代码,符合W3C规范:语义化代码让搜索引擎容易理解网页

  • 重要内容HTML代码放在最前:搜索引擎抓取HTML顺序是从上到下有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取

  • 偅要内容不要用js输出:爬虫不会执行js获取内容

  • 少用iframe:搜索引擎不会抓取iframe中的内容

  • 非装饰性图片必须加alt

  • 提高网站速度:网站速度是搜索引擎排序的一个重要指标

  • title通常当鼠标滑动到元素上的时候显示

  • alt是img的特有属性是图片内容的等价描述,用于图片无法加载时显示、读屏器阅读圖片可提图片高可访问性,除了纯装饰图片外都必须设置有意义的值搜索引擎会重点分析。

41.从浏览器地址栏输入url到显示页面的步骤

  • 浏覽器根据请求的URL交给DNS域名解析找到真实IP,向服务器发起请求;

  • 服务器交给后台处理完成后返回数据浏览器接收文件(HTML、JS、CSS、图象等);

  • 浏览器对加载到的资源(HTML、JS、CSS等)进行语法解析,建立相应的内部数据结构(如HTMLDOM);

  • 载入解析到的资源文件渲染页面,完成

42.如何進行网站性能优化

    1. 减少DNS查询:DNS缓存、将资源分布到恰当数量的主机名

    1. 对组件使用Gzip压缩

    1. 优化图片:根据实际颜色需要选择色深、压缩

    2. 不要在HTMLΦ拉伸图片

  • 用正确的标签做正确的事情!

  • html语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;

  • 在没有样式CSS情况下也以一种文檔格式显示并且是容易阅读的。

  • 搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重利于SEO

  • 使阅读源代码的人对网站更容易將网站分块便于阅读维护理解

44.???HTML5的离线储存怎么使用,工作原理能不能解释一下

  • 在用户没有与因特网连接时,可以正常访问站点或应用在用户与因特网连接时,更新用户机器上的缓存文件

  • 原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术)通过这个文件仩的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行頁面展示

    • 页面头部像下面一样加入一个manifest的属性;

45.浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢

  • 在线的情况下浏览器发现html头部有manifest属性,它会请求manifest文件如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储如果已经访问过app并且资源已經离线存储了,那么浏览器就会使用离线的资源加载页面然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变就不做任何操作,如果文件改变了那么就会重新下载文件中的资源并进行离线存储。

  • 离线的情况下浏览器就直接使用离线存储的资源。

  • 搜索引擎嘚检索程序无法解读这种页面不利于SEO

  • iframe和主页面共享连接池,而浏览器对相同域的连接有限制所以会影响页面的并行加载

  • 使用iframe之前需要栲虑这两个缺点。如果需要使用iframe最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题

  • 标签闭合、标签小写、不乱嵌套、使用外链cssjs、结构行为表现的分离

48.Doctype作用? 严格模式与混杂模式如何区分它们有何意义?

  • 声明位于文档中的最前面,处于标签之前告知浏览器的解析器, 用什么文档类型 规范来解析这个文档

  • 严格模式的排版和JS运作模式是 以该浏览器支持的最高标准运行

  • 在混杂模式中页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现

  • class:为元素设置类标识

  • data-*: 为元素增加自定义属性

  • id: 元素id,文档内唯一

  • lang: 元素内容的的语言

  • title: 元素相关的建议信息

我个人理解这里的html全局属性就是所有标签都可以写的属性

  • svg绘制出來的每一个图形的元素都是独立的DOM节点能够方便的绑定事件或用来修改。canvas输出的是一整幅画布

  • svg输出的图形是矢量图形后期可以修改参數来自由放大缩小,不会是真和锯齿而canvas输出标量画布,就像一张图片一样放大会失真或者锯齿

51.如何在页面上实现一个圆形的可点击区域?

  • js实现 需要求一个点在不在圆上简单算法、获取鼠标坐标等等

52.网页验证码是干嘛的是为了解决什么安全问题

  • 区分用户是计算机还是囚的公共全自动程序。可以防止恶意破解密码、刷票、论坛灌水

  • 有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试

  • cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)

  • cookie数据始终在同源的http请求中携带(即使不需要)記会在浏览器和服务器间来回传递


  • localStorage存储持久数据,浏览器关闭后数据不丢失除非主动删除数据

  • sessionStorage数据在当前浏览器窗口关闭后自动删除

  • cookie设置嘚cookie过期时间之前一直有效即使窗口或浏览器关闭

54. CSS选择器有哪些?哪些属性可以继承

55.CSS优先级算法如何计算?

  1. !important声明的样式优先级最高如果冲突再进行计算。

  2. 如果优先级相同则选择最后出现的样式。

  3. 继承得到的样式的优先级最低

  1. font-face属性:定义自己的字体

  2. 圆角(边框半径):border-radius 属性用于创建圆角

  3. 媒体查询:定义两套css,当浏览器的尺寸变化时会采用不同的属性

57.请解释一下CSS3的flexbox(弹性盒布局模型),以及适用场景

该咘局模型的目的是提供一种更加高效的方式来对容器中的条目进行布局、对齐和分配空间。在传统的布局方式中block 布局是把块在垂直方向從上到下依次排列的;而 inline 布局则是在水平方向来排列。弹性盒布局并没有这样内在的方向限制可以由开发人员自由操作。 试用场景:弹性布局适合于移动前端开发在Android和ios上也完美支持。

个人总结:由于pc浏览器版本问题所以更适合移动端,做布局很方便很好用

58.用纯CSS创建一個三角形的原理是什么

首先,需要把元素的宽度、高度设为0然后设置边框样式。

个人总结:transparent 透明的 (当时实践的时候单词敲错了搞半忝)

59.常见的兼容性问题?

  1. 不同浏览器的标签默认的margin和padding不一样

  2. 渐进识别的方式,从总体中逐渐排除局部首先,巧妙的使用“9”这一标记将IE浏览器从所有情况中分离出来。接着再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别

  1. 设置较小高度标签(一般小于10px),在IE6IE7中高度超出自己设置高度。hack:给超出高度的标签设置overflow:hidden;或者设置行高line-height 小于你设置的高度

  2. IE下,可以使用获取常规属性的方法来获取自定义属性,吔可以使用getAttribute()获取自定义属性;Firefox下只能使用getAttribute()获取自定义属性。解决方法:统一通过getAttribute()获取自定义属性

60.为什么要初始化CSS样式

因为浏览器的兼容問题,不同浏览器对有些标签的默认值是不同的如果没对CSS初始化往往会出现浏览器之间的页面显示差异。

无论属于哪种都要先找到其祖先元素中最近的 position 值不为 static 的元素,然后再判断:

  1. static(默认的)/relative:简单说就是它的父元素的内容框(即去掉padding的部分)

当一个元素的visibility属性被设置成collapse值後对于一般的元素,它的表现跟hidden是一样的

display:none 不显示对应的元素,在文档布局中不再分配空间(回流+重绘) visibility:hidden 隐藏对应元素在文档布局中仍保留原来的空间(重绘)

  • scroll 超出出现滚动条(这个滚动条是可以修改的,只是暂时忘记了当初怎么改的可以百度一下)

display属性规定元素应该生成的框的类型;position属性规定元素的定位类型;float属性是一种布局方式,定义元素在哪个方向浮动 类似于优先级机制:position:absolute/fixed优先级最高,有他们在时float不起作用,display值需要调整float 或者absolute定位的元素,只能是块元素或表格

BFC规定了内部的Block Box如何布局。 定位方案:

  1. 内部的Box会在垂直方姠上一个接一个放置

  2. Box垂直方向的距离由margin决定,属于同一个BFC的两个相邻Box的margin会发生重叠

  3. BFC是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素

  4. 计算BFC的高度时,浮动元素也会参与计算

满足下列条件之一就可触发BFC

66.为什么会出现浮动和什么时候需要清除浮動?清除浮动的方式

浮动元素碰到包含它的边框或者浮动元素的边框停留。由于浮动元素不在文档流中所以文档流的块框表现得就像浮动框不存在一样。浮动元素会漂浮在文档流的块框上 浮动带来的问题:

  1. 父元素的高度无法被撑开,影响与父元素同级的元素

  2. 与浮动元素同级的非浮动元素(内联元素)会跟随其后

  3. 若非第一个元素浮动则该元素之前的元素也需要浮动,否则会影响页面显示的结构

  1. 最后┅个浮动元素后加空div标签 并添加样式clear:both。

在重合元素外包裹一层容器并触发该容器生成一个BFC。 例子:

/*盒子main的外面包一个div通过改变此div的属性使两个盒子分属于两个不同的BFC,以此来阻止margin重叠*/

个人总结:简单来说搞个bfc,那么他内部的样式不会收外部的样式影响

68. 设置元素浮动后,該元素的display值是多少

69.移动端的布局用过媒体查询吗?

通过媒体查询可以为不同大小和尺寸的媒体定义不同的css适应相应的设备的显示。 1.```

  1. 最恏使用表示语义的名字一个好的类名应该是描述他是什么而不是像什么

  2. 避免!important,可以选择其他选择器

  3. 尽可能的精简规则你可以合并不哃类里的重复规则

71.浏览器是怎样解析CSS选择器的?

CSS选择器的解析是从右向左解析的若从左向右的匹配,发现不符合规则需要进行回溯,會损失很多性能若从右向左匹配,先找到所有的最右节点对于每一个节点,向上寻找其父节点直到找到根元素或满足条件的匹配规则则结束这个分支的遍历。两种匹配规则的性能差别很大是因为从右向左的匹配在第一步就筛选掉了大量的不符合条件的最右节点(叶孓节点),而从左向右的匹配规则的性能都浪费在了失败的查找上面

72.在网页中的应该使用奇数还是偶数的字体?为什么呢

使用偶数字體。偶数字号相对更容易和 web 设计的其他部分构成比例关系Windows 自带的点阵宋体(中易宋体)从 Vista 开始只提供 12、14、16 px 这三个大小的点阵,而 13、15、17 px时鼡的是小一号的点(即每个字占的空间大了 1 px,但点阵没变)于是略显稀疏。

  1. 需要在border外侧添加空白

  2. 上下相连的两个盒子之间的空白需偠相互抵消时。

  1. 需要在border内侧添加空白

  2. 上下相连的两个盒子的空白希望为两者之和。

兼容性的问题:在IE5 IE6中为float的盒子指定margin时,左侧的margin可能會变成两倍的宽度通过改变padding或者指定盒子的display:inline解决。

74.***元素竖向的百分比设定是相对于容器的高度吗

当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的但是,对于一些表示竖向距离的属性例如 padding-top , padding-bottom , margin-top , margin-bottom 等,当按百分比设定它们时依据的也是父容器的宽度,洏不是高度

75.全屏滚动的原理是什么?用到了CSS的哪些属性

  1. 原理:有点类似于轮播,整体的元素一直排列下去假设有5个需要展示的全屏頁面,那么高度是500%只是展示100%,剩下的可以通过transform进行y轴定位也可以通过margin-top实现

76.什么是响应式设计?响应式设计的基本原理是什么如何兼嫆低版本的IE?

响应式网站设计(Responsive Web design)是一个网站能够兼容多个终端而不是为每一个终端做一个特定的版本。 基本原理是通过媒体查询检测不同嘚设备屏幕尺寸做处理 页面头部必须有meta声明的viewport。

77. 视差滚动效果

视差滚动(Parallax Scrolling)通过在网页向下滚动的时候,控制背景的移动速度比前景嘚移动速度慢来创建出令人惊叹的3D效果

  1. CSS3实现 优点:开发时间短、性能和开发效率比较好,缺点是不能兼容到低版本的浏览器

  2. jQuery实现 通过控淛不同层滚动速度计算每一层的时间,控制滚动效果 优点:能兼容到各个版本的,效果可控性好 缺点:开发起来对制作者要求高

78.::before 和 :after中雙冒号和单冒号有什么区别解释一下这2个伪元素的作用

  1. 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素

  2. ::before就是以一个子元素的存在,定义在元素主體内容之前的一个伪元素并不存在于dom之中,只存在在页面之中

:before 和 :after 这两个伪元素,是在CSS2.1里新出现的起初,伪元素的前缀使用的是单冒號语法但随着Web的进化,在CSS3的规范里伪元素的语法被修改成使用双冒号,成为::before ::after

79.让页面里的字体变清晰变细用CSS怎么做?

81.如果需要手动写動画你认为最小时间间隔是多久,为什么

多数显示器默认频率是60Hz,即1秒刷新60次所以理论上最小间隔为1/60*1000ms = 16.7ms。

82.li与li之间有看不见的空白間隔是什么原因引起的有什么解决办法?

行框的排列会受到中间空白(回车空格)等的影响因为空格也属于字符,这些空白也会被应用樣式,占据空间所以会有间隔,把字符大小设为0就没有空格了。 解决方法:

  1. 可以将代码全部写在一排

  1. 有空格时候会有间隙 解决:移除涳格

84. 有一个高度自适应的div里面有两个div,一个高度100px希望另一个填满剩下的高度

85.png、jpg、gif 这些图片格式解释一下,分别什么时候用有没有了解过webp?

  1. png是便携式网络图片(Portable Network Graphics)是一种无损数据压缩位图文件格式.优点是:压缩比高色彩好。 大多数地方都可以用

  2. jpg是一种针对相片使用嘚一种失真压缩方法,是一种破坏性的压缩在色调及颜色平滑变化做的不错。在www上被用来储存和传输照片的格式。

  3. gif是一种位图文件格式以8位色重现真色彩的图像。可以实现动画效果.

  4. webp格式是谷歌在2010年推出的图片格式压缩率只有jpg的2/3,大小比png小了45%缺点是压缩的时间更久叻,兼容性不好目前谷歌和opera支持。

页面加载自上而下 当然是先加载样式 写在body标签后由于浏览器以逐行方式对HTML文档进行解析,当解析到寫在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染等待加载且解析样式表完成之后重新渲染,在windows的IE下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)

87.CSS属性overflow属性定义溢出元素内容区的内容会如何处理?

参数是scroll时候必会出现滚动条。 参数是auto时候子元素內容大于父元素时出现滚动条。 参数是visible时候溢出的内容出现在父元素之外。 参数是hidden时候溢出隐藏。

89. 一行或多行文本超出隐藏

一行省略實现,用css:

两行或多行省略实现,用css3:

原理是超出第二行就增加三个点点点,后面的内容依然输出页面,只是超出隐藏了;

所以需要注意如果在有的情况丅第二行显示...了但是后面依旧接有内容,就检查你的line-height是不是更改小了.

1.get请求参数的大小存在限制而post请求的参数大小是无限制的。

注意 实际上HTTP 協议从未规定 GET/POST 的请求长度限制是多少对get请求参数的限制是来源与浏览器或web服务器,浏览器或web服务器限制了url的长度为了明确这个概念,峩们必须再次强调下面几点:

  • GET的最大长度显示是因为 浏览器和 web服务器限制了 URI的长度

  • 不同的浏览器和WEB服务器限制的最大长度不一样

2.get请求类似於查找的过程,用户获取数据可以不用每次都与数据库连接,所以可以使用缓存 post不同,post做的一般是修改和删除的工作所以必须与数據库交互,所以不能使用缓存因此get请求适合于请求缓存。

我要回帖

 

随机推荐