Doctype作用?标准模式与兼容模式各有什么区别?
<!DOCTYPE>
声明位于 HTML 文档中的第一行,处于<html>
标签之前。告知浏览器的解析器用什么文档标准解析这个文档。<!DOCTYPE>
不存在或格式不正确会导致文档以兼容模式呈现。标准模式的排版和 JS 运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
渐进增强、优雅降级
- 渐进增强:一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果、交互、追加功能达到更好的体验。
- 优雅降级:一开始就构建站点的完整功能,然后针对浏览器测试和修复。
HTML5 为什么只需要写<!DOCTYPE HTML>
?
- HTML5 不基于 SGML(标准通用标记语言),因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
- HTML4.01 基于 SGML,所以需要对 DTD 进行引用,才能告知浏览器文档所使用的文档类型。
行内元素、块级元素
- 行内元素会在一条直线上排列(默认宽度只与内容有关),都是同一行的,水平方向排列;
- 块级元素各占据一行(默认宽度是它本身父容器的 100% 和父元素的宽度一致,与内容无关),垂直方向排列。块级元素从新行开始,结束接着一个断行;
- 块级元素可以包含行内元素和块级元素。行内元素不能包含块级元素,只能包含文本或者其它行内元素;
- 行内元素与块级元素属性的不同,主要是盒模型属性上:行内元素设置 width、height无效(可以设置 line-height),margin、padding上下无效。
页面导入样式时,使用 link
和 @import
有什么区别?
link
属于 XHTML 标签,除了加载 CSS 外,还能用于定义 RSS, 定义 rel 连接属性等作用;而@import
是 CSS 提供的,只能用于加载CSS;- 页面被加载的时,
link
会同时被加载,而@import
引用的 CSS 会等到页面被加载完再加载; @import
是 CSS2.1 提出的,只在 IE5 以上才能被识别,而link
是 XHTML 标签,无兼容问题;link
支持使用 JS 控制 DOM 去改变样式,而@import
不支持。
对浏览器内核的理解
- 渲染引擎(layout engineer或Rendering Engine)和 JS 引擎;
- 渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核;
- JS引擎则:解析和执行 Javascript 来实现网页的动态效果。
iframe 有那些缺点?
- iframe 会阻塞主页面的 onLoad 事件;
- 搜索引擎的检索程序无法解读这种页面,不利于 SEO;
- iframe 和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载;
- 如果需要使用 iframe,最好是通过 Javascript 动态给 iframe 添加 src 属性值,这样可以绕开以上问题。