一、对 WEB 标准以及 W3C 的理解与认识
WEB 标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括 XHTML 和 XML,表现标准语言主要包括 CSS,行为标准主要包括对象模型(如 W3C DOM)、ECMAScript 等。这些标准大部分由万维网联盟(外语缩写:W3C)起草和发布,也有一些是其他标准组织制订的标准,比如 ECMA(European Computer Manufacturers Association)的 ECMAScript 标准。
- WEB 标准规范要求,书写标签必须闭合、标签小写、不乱嵌套,可提高搜索机器人对网页内容的搜索几率(SEO);
- 建议使用外链 CSS 和 JS 脚本,从而达到结构与行为、结构与表现的分离,提高页面的渲染速度,能更快地显示页面的内容;
- 样式与标签的分离,更合理的语义化标签,使内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,从而降低维护成本、改版更方便;
- 不需要变动页面内容,便可提供打印版本而不需要复制内容,提高网站易用性。
遵循 W3C 制定的 WEB 标准,能够使用户浏览者更方便的阅读,使网页开发者之间更好的交流。
二、HTML 与 XHTML 有什么差别
HTML 与 XHTML 之间的差别,粗略可以分为两大类比较:一个是功能上的差别,另外是书写习惯的差别。关于功能上的差别,主要是 XHTML 可兼容各大浏览器、手机以及平板,并且浏览器也能快速正确地编译网页。
HTML 是一种基本的 WEB 网页设计语言,XHTML 是一个基于 XML 的标记语言。
- XHTML 元素必须被正确地嵌套;
- XHTML 元素必须被关闭;
- 标签名必须用小写字母;
- XHTML 文档必须拥有根元素。
2.1 XHTML 的规则
1)所有标签都必须小写
在 XHTML 中,所有的标签都必须小写,不能大小写穿插其中,也不能全部都是大写。看一个例子。
1
2
|
错误:<Head></Head><Body></Body> 正确:<head></head><body></body> |
2)标签必须成双成对
像是 p、a、div 标签等,当出现一个标签时,必须要有对应的结束标签,缺一不可,就像在任何程序语言中的括号一样。
1
2
|
错误:大家好<p>我是muki 正确:<p>大家好</p><p>我是muki</p> |
3)标签顺序必须正确
标签由外到内,一层层包覆着,所以假设你先写 div 后写 h1,结尾就要先写 h1 后写 div。只要记住一个原则“先进后出”,先弹出的标签要后结尾。
1
2
|
错误:<div><h1>大家好</div></h1> 正确:<div><h1>大家好</h1></div> |
4)所有属性都必须使用双引号
在 XHTML 1.0 中规定连单引号也不能使用,所以全程都得用双引号。
1
2
|
错误:<div style='font-size:11px'>hello</div> 正确:<div style="font-size:11px">hello</div> |
5)不允许使用 target=”_blank”
从 XHTML 1.1 开始全面禁止 target 属性,如果想要有开新窗口的功能,就必须改写为 rel=”external”,并搭配 JavaScript 实现此效果。
1
2
|
错误:<a href="http://www.bizhongbio.com" target="_blank">www.bizhongbio.com</a> 正确:<a href="http://www.bizhongbio.com" rel="external">www.bizhongbio.com</a> |
三、Doctype? 严格模式与混杂模式如何触发这两种模式,区分它们有何意义?
混杂模式是一种比较宽松的向后兼容的模式。混杂模式通常模拟老式浏览器的行为,以防止老站点无法工作 。
- 混杂模式(Quirks mode),让 IE 的行为与(包含非标准特性的)IE5 相同;
- 标准模式(Standards mode),让 IE 的行为更接近标准行为;
- 准标准模式(Almost standards mode),这种模式下的浏览器特性有很多都是符合标准的,不标准的地方主要体现在处理图片间隙的时候(在表格中使用图片时问题最明显);
- 超级标准模式(Super standards mode),IE8 引入的一种新的文档模式,超级文档模式可以让 IE 以其所有版本中最符合标准的方式来解释网页内容。
触发混杂模式: 如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。但采用混杂模式不是什么值得推荐的做法,因为不同浏览器在这种模式下的行为差异非常大,如果不使用某些 hack 技术,跨浏览器的行为根本就没有一致性可言。
根据 Doctype 是否存在以及使用哪种 DTD 来触发其不同的模式。如果 Doctype 不存在或者其形式不正确那么默认为混杂模式。如果 XHTML 文档中包含完整的 Doctype,那么它一般以标准模式呈现。
区分它们的意义可以让开发者更好的写出标准兼容的页面,同时不影响以前的页面标准。
四、HTML 语义化
语义化的含义就是用正确的标签做正确的事情,HTML 语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;在没有样式 CCS 情况下也以一种文档格式显示,并且是容易阅读的。搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于 SEO。使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
五、行内元素、块级元素有哪些?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<!--块元素(block element)HTML 标签分类明细--> * address - 地址 * blockquote - 块引用 * center - 居中中对齐块 * dir - 目录列表 * div - 常用块级容易,也是 css layout 的主要标签 * dl - 定义列表 * fieldset - form 控制组 * form - 交互表单 (只能用来容纳其它块元素) * h1 - 大标题 * h2 - 副标题 * h3 - 3 级标题 * h4 - 4 级标题 * h5 - 5 级标题 * h6 - 6 级标题 * hr - 水平分隔线 * isindex - input prompt * menu - 菜单列表 * noframes - frames 可选内容,(对于不支持 frame 的浏览器显示此区块内容 * noscript - 可选脚本内容(对于不支持 script 的浏览器显示此内容) * ol - 排序表单 * p - 段落 * pre - 格式化文本 * table - 表格 * ul - 非排序列表 <!--内联元素(inline element)HTML 标签分类明细--> * a - 锚点 * abbr - 缩写 * acronym - 首字 * b - 粗体(不推荐) * bdo - bidi override * big - 大字体 * br - 换行 * cite - 引用 * code - 计算机代码(在引用源码的时候需要) * dfn - 定义字段 * em - 强调 * font - 字体设定(不推荐) * i - 斜体 * img - 图片 * input - 输入框 * kbd - 定义键盘文本 * label - 表格标签 * q - 短引用 * s - 中划线(不推荐) * samp - 定义范例计算机代码 * select - 项目选择 * small - 小字体文本 * span - 常用内联容器,定义文本内区块 * strike - 中划线 * strong - 粗体强调 * sub - 下标 * sup - 上标 * textarea - 多行文本输入框 * tt - 电传文本 * u - 下划线 * var - 定义变量 <!--可变元素 HTML 标签分类明细--> * applet - java applet * button - 按钮 * del - 删除文本 * iframe - inline frame * ins - 插入的文本 * map - 图片区块(map) * object - object 对象 * script - 客户端脚本 |
六、行内元素与块级元素不同点
块级元素和行内元素的区别是,块级元素会占一行显示,而行内元素可以在一行并排显示。通过样式控制,它们可以相互转换。
块级元素和行内元素之间的一个重要的不同点:尺寸。
- 设置宽度 width 无效;
- 设置高度 height 无效,可以通过 line-height 来设置;
- 设置 margin 只有左右 margin 有效,上下无效;
- 设置 padding 只有左右 padding 有效,上下则无效。
注:无效指它对其它元素的排列没有影响。也就是说,对于设置的 margin、padding 行内元素文档流里的上下元素来说,他们的间距不会因为上下 margin 或者上下 padding 而产生间距。但是就他本身而言,对于上下 margin 与 padding 是有效的。
HTML 总结,未完待续(To be continued)。
1条评论
看看!