记录前端遇到的坑

Time and tide waits for no man.

1.换行符br的写法

  • <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

原文地址:https://www.cnblogs.com/zhangjun2013551829/p/7976003.html