HTML 代码中元素的某个属性应在其所在元素标签内具备唯一性,如我们不应该为一个元素定义两个同名属性。
关于 HTML 属性的详细信息,请参考 HTML4.01 规范 3.2.2 中的内容。
IE6 IE7 IE8(Q) 中会自动合并元素重复的 "style" 属性。
对于 "style" 属性,由于 IE6 IE7 IE8(Q) 中的特有现象,当我们因为比如输入了多个 "style "属性定义元素的内联 CSS 后,会导致与其他浏览器中的 CSS 渲染差异。
IE6 IE7 IE8(Q) |
---|
下面代码 DIV 元素的 "id" "name" "title" 属性均定义了两次:
<div id="d" id="div" name="dn" name="divn" title="dt" title="divt">123</div>
以上代码在所有浏览器中表现均一致。
再看一看对于重复定义的class属性:
<style> .dc {font-size:24px;} .divc {text-decoration:underline;} </style> <div class="dc" class="divc">123</div>
各浏览器的处理结果相同,DIV 中的文字均变为了24px,且均没有出现下划线。与上一节的结论相同,对于 "class" 属性,仍然是前面先定义的属性值有效。
下面测试 "style" 属性:
<div style="background:#999;" style="background:red; color:#fff; border:1px solid black;">123</div>
DIV 元素内含有两个重复的 "style" 属性,第一个中写入 CSS 展现灰色背景黑色文字,第二个则是红色背景白色文字。
在各浏览器中效果如下:
IE6 IE7 IE8(Q) | IE8(S) Firefox Chrome Safari Opera |
---|---|
可以很清楚的看到在 IE6 IE7 IE8(Q) 中,浏览器会将重复的 "style" 属性合并,而对于 "style" 属性中重复的 CSS 样式属性,则采用前面的 "style" 属性定义。
IE8(S) Firefox Chrome Safari Opera 中,则与前面的结论一致,只有第一个 "style" 属性中的 CSS 代码有效。
不要依赖 IE 的容错机制,避免重复定义 HTML 元素属性。
操作系统版本: | Windows 7 Ultimate build 7600 |
---|---|
浏览器版本: |
IE6
IE7 IE8 Firefox 3.6 Chrome 5.0.342.2 dev Safari 4.0.4 Opera 10.50 |
测试页面: | duplicate_style_definitions.html |
本文更新时间: | 2010-06-21 |
属性 HTML attribute style CSS 重复定义