记录前端遇到的坑 1.换行符br的写法 2.标签大小写 3.使用标题 4.块级元素 5.空格和换行 6.HTML4中被废弃的标签和属性 7.特殊的属性 8.浏览器缓存复选框状态
Time and tide waits for no man.
-
<br>
是HTML写法。 -
<br/>
是XHTML1.1的写法,也是XML写法。 -
<br />
是XHTML为兼容HTML的写法,也是XML写法。 -
</br>
是错误写法。
HTML是SGML的子集,SGML允许标签没有结束标签,而换行符元素正好不需要内嵌元素,也就不需要结束标签。所以在HTML中,应该写成<br>
。因为HTML规范本身的不严谨,所以后来参考了更规范的XML语言的语法推出了XHTML。XHTML是XML的子集,在XML中,标签必须要有结束标签。所以在XHTML中只写<br>
是不符合语法的,必须写成<br></br>
或简写成<br/>
。
在XHTML的发展过程中,要做到兼容旧的HTML浏览器。而旧的HTML浏览器不理解(错误理解)<br></br>
和<br/>
这两种写法。对于第一种写法,某些浏览器估计会理解成两个<br>
标签(我没有资料证明这一点),对于第二种写法,某些浏览器会理解成一个叫"br/"的标签。所以在兼容HTML的XHTML中我们通常把它写成<br />
,这样在HTML解析中会理解成有一个叫"/"的属性的"br"标签,在XML解析中仍然会理解成<br></br>
的简写,达到了两全其美的效果。
2.标签大小写
HTML4.0以及之前的版本中,W3C标准是不区分标签大小写的。但是在以后的HTML5.0版本中,W3C明确规定,标签必须用小写格式。而新的XHTML规范里也必须是小写。所以应该是小写正规。
3.使用标题
不要仅仅是为了产生粗体或大号的文本而使用标题。搜索引擎使用标题为网页的结构和内容编制索引。
4.块级元素
默认情况下,HTML会自动地在块级元素前后添加一个额外的空行,比如段落、标题元素前后。
5.空格和换行
HTML 代码中的所有连续的空行(换行)被显示为一个空格。
使用空的段落标记<p></p>
去插入一个空行是个坏习惯。用<br /><br />
标签代替它。
6.HTML4中被废弃的标签和属性
在 HTML 4 中,有若干的标签和属性是被废弃的,在未来版本的 HTML 和 XHTML 中将不支持这些标签和属性,可以使用样式代替他们。
标签 | 描述 |
---|---|
<center> |
定义居中的内容。 |
<font> 和<basefont>
|
定义 HTML 字体。 |
<s> 和<strike>
|
定义删除线文本。 |
<u> |
定义下划线文本。 |
属性 | 描述 |
---|---|
align | 定义居中的内容。 |
<font> 和<basefont>
|
定义 HTML 字体。 |
<s> 和<strike>
|
定义删除线文本。 |
<u> |
定义下划线文本。 |
7.特殊的属性
类似checked,readonly这些属性,只要出现了就会触发,不管值为true或false,还是空值。
解决的方法就是利用jquery 移除属性或者添加属性。
8.浏览器缓存复选框状态
浏览器会缓存你之前选中的复选框的状态,导致你在翻页之后复选框保持之前页面的状态。
解决办法之一是在checkbox上设置 autocomplete="off" ,但是autocomplete是hmlt5表单控件新的属性,兼容性不是很好。 目前我使用Chrome版本 55.0.2883.87 m (64-bit),依然不能解决这个BUG