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 重复定义