标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性。
HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言。
最主要的不同:
(1)声明位于位于HTML文档中的第一行,处于
标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
(2)标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
使用 window.top.document.compatMode
可显示为什么模式
doctype类型: Strict
、Transitional
以及 Frameset
如果不声明: 不写doctype,浏览器会进入quirks mode
(混杂模式)。即,如果不声明doctype,浏览器不引入w3c的标准,那么早期的浏览器会按照自己的解析方式渲染页面。浏览器采用自身方式解析页面的行为称为"quirks mode(混杂模式也称怪异模式)";采用w3c方式解析就是"strict mode(标准模式)"。 如果完全采用strict mode
就不会出任何的差错,但这样会降低程序的容错率,加重开发人员的难度
用哪种:
),则采用quirks mode解析标准模式与怪异模式的区别:
元素真正的宽度 = margin-left + border-left-width + padding-left + width + padding-right + border-right- width + margin-right
;内容宽度 = width - (margin-left + margin-right + padding-left + padding-right + border-left-width + border-right-width)
?HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
(1)行内元素有:a b span img input select strong
(2)块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p
(3)常见的空元素:
鲜为人知的是:
@import
有什么区别?(1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import
是CSS提供的,只能用于加载CSS;
(2)页面被加载的时,link会同时被加载,而@import
引用的CSS会等到页面被加载完再加载;
(3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;
(4) link方式的样式的权重 高于@import
的权重。
HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
移除的元素:
支持HTML5新标签:
IE8/IE7/IE6支持通过document.createElement
方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式。
当然也可以直接使用成熟的框架、比如html5shim;
如何区分HTML5:
如何使用:
在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。
原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。
如何使用:
...
html>
CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
/ /offline.html
详细的使用请参考:有趣的HTML5:离线存储
在线的情况下,浏览器发现html头部有manifest属性,它会请求manifest文件,如果是第一次访问app,那么浏览器就会根据manifest文件的内容下载相应的资源并且进行离线存储。如果已经访问过app并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。
离线的情况下,浏览器就直接使用离线存储的资源。
cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
cookie数据始终在同源的http请求中携带(即使不需要),即会在浏览器和服务器间来回传递。
sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
存储大小:
有期时间:
优点:
缺点:
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript。
动态给iframe添加src属性值,这样可以绕开以上两个问题。
label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。
给不想要提示的 form 或某个 input 设置为 autocomplete=off
。
localstorge另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信;
注意:Safari 在无痕模式下设置localstorge值时会抛出 QuotaExceededError 的异常;
title属性没有明确意义,只表示是个标题,h1则表示层次明确的标题,对页面信息的抓取也有很大的影响;
strong是标明重点内容,有语气加强的含义,使用阅读设备阅读网络时:会重读,而
是展示强调内容。
i内容展示为斜体,em表示强调的文本;
Physical Style Elements – 自然样式标签
b, i, u, s, pre
Semantic Style Elements – 语义样式标签
strong, em, ins, del, code
应该准确使用语义样式标签, 但不能滥用, 如果不能确定时首选使用自然样式标签。
(1) href表示超文本引用,用于建立当前元素和文档之间的链接。常用的有link、a上使用,当前文档和引用资源之间确立联系,并行下载资源。
(2) src是sourse的缩写,src指向的文档会嵌入到文档中当前标签所在的位置。主要是引入,常用与img,script等元素上,替换当前元素,当浏览器解析该元素时,会暂停其他资源的下载和处理,直到完毕。
配合使用,规定图像的替代文本. 如果无法显示图像, 浏览器将显示替代文本. 用于图片无法加载显示、读屏器阅读图片,可提高图片可 访问性,搜索引擎会重点分析。最长可包含1024个字符,