不知以下理解对否,有问题的话欢迎指正,谢谢!
正文:如果是同一元素同时使用Style,ID,Class来指定样式.
那么: Style > ID > Class ( > 表示优先 ) 如果是不同元素,还需要看元素父层级的样式:
1.子元素自身有样式,以自身的为准.
2.子元素未设定样式,此时如果父元素有定义的话套用父元素的样式否则以默认显示 以下是例子: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
#content
{
color: Blue; /*蓝色*/
}
#content a
{
color:Yellow; /*黄色*/
}
.action
{
color: Red; /*红色*/
}
.action a, span
{
color: Green; /*绿色*/
}
#other
{
color: Pink; /*粉红*/
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="content">
我是蓝色,我本身无Style,套用父元素 #content 定义的Style
<br />
<a>我是紫色,套用父元素 #content a 定义的Style</a>
<div class="action">
我是红色,我本身无Style,套用父元素 action 定义的Style
<br />
<a>按Lost_Painting理解,套用父元素 .action a ,我应该是绿色,但我却是黄色,他很困惑</a><!-- a标签在Opera/IE下都显示是黄色,不知道为什么,BUG? -->
<br />
<span>我是绿色,套用父层元素 .action span 定义的Style</span><!-- span是绿色,符合我的理解 -->
</div>
<div id="content" class="action" style="color: Gray">
我是灰色,我有我自己的Style,不受父元素影响( style 优先于其他,与顺序无关)
</div>
<div class="action" id="content" style="color: Gray">
我是灰色,我有我自己的Style,不受父元素影响( style 优先于其他,与顺序无关)
</div>
<div style="color: Gray" id="content" class="action">
我是灰色,我有我自己的Style,不受父元素影响( style 优先于其他,与顺序无关)
</div>
<div id="other" class="action">
我是粉红色,我有我自己的Style,不受父元素影响 ( id 优先于 class,与顺序无关)
</div>
<div class="action" id="other">
我是粉红色,我有我自己的Style,不受父元素影响 ( id 优先于 class,与顺序无关)
</div>
</div>
</form>
</body>
</html>
运行结果图片: 此时问题来了,就如我代码与图片中演示的:
" <a>按Lost_Painting理解,套用父元素 .action a ,我应该是绿色,但我却是黄色,他很困惑</a><!-- a标签在Opera/IE下都显示是黄色,不知道为什么,BUG? --> "a标签比较特别?span就是正常的.望知情者告知,谢谢.
正文:如果是同一元素同时使用Style,ID,Class来指定样式.
那么: Style > ID > Class ( > 表示优先 ) 如果是不同元素,还需要看元素父层级的样式:
1.子元素自身有样式,以自身的为准.
2.子元素未设定样式,此时如果父元素有定义的话套用父元素的样式否则以默认显示 以下是例子: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
#content
{
color: Blue; /*蓝色*/
}
#content a
{
color:Yellow; /*黄色*/
}
.action
{
color: Red; /*红色*/
}
.action a, span
{
color: Green; /*绿色*/
}
#other
{
color: Pink; /*粉红*/
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="content">
我是蓝色,我本身无Style,套用父元素 #content 定义的Style
<br />
<a>我是紫色,套用父元素 #content a 定义的Style</a>
<div class="action">
我是红色,我本身无Style,套用父元素 action 定义的Style
<br />
<a>按Lost_Painting理解,套用父元素 .action a ,我应该是绿色,但我却是黄色,他很困惑</a><!-- a标签在Opera/IE下都显示是黄色,不知道为什么,BUG? -->
<br />
<span>我是绿色,套用父层元素 .action span 定义的Style</span><!-- span是绿色,符合我的理解 -->
</div>
<div id="content" class="action" style="color: Gray">
我是灰色,我有我自己的Style,不受父元素影响( style 优先于其他,与顺序无关)
</div>
<div class="action" id="content" style="color: Gray">
我是灰色,我有我自己的Style,不受父元素影响( style 优先于其他,与顺序无关)
</div>
<div style="color: Gray" id="content" class="action">
我是灰色,我有我自己的Style,不受父元素影响( style 优先于其他,与顺序无关)
</div>
<div id="other" class="action">
我是粉红色,我有我自己的Style,不受父元素影响 ( id 优先于 class,与顺序无关)
</div>
<div class="action" id="other">
我是粉红色,我有我自己的Style,不受父元素影响 ( id 优先于 class,与顺序无关)
</div>
</div>
</form>
</body>
</html>
运行结果图片: 此时问题来了,就如我代码与图片中演示的:
" <a>按Lost_Painting理解,套用父元素 .action a ,我应该是绿色,但我却是黄色,他很困惑</a><!-- a标签在Opera/IE下都显示是黄色,不知道为什么,BUG? --> "a标签比较特别?span就是正常的.望知情者告知,谢谢.
==><a>我是黄色的,套用父元素 #content a 定义的Style</a>
<html>
<head>
<title></title>
<style type="text/css">
div { color: #00FF00 }
.a1 { color: #0000FF }
.a1 div { color: #00FFFF }
.a2 { color: #FF0000 }
#a2 { color: #FFFF00 }
#a2 div { color: #FF00FF }
</style>
</head>
<body>
<div>我是绿色,内部样式表优先于浏览器缺省</div>
<div class="a2">我是红色,类选择器优先于内部样式表</div>
<div class="a2" id="a2">我是黄色,ID选择器优先于类选择器</div>
<div class="a1">
<span>我是蓝色,类选择器优先于内部样式表</span>
<div>我是青色,类派生选择器优先于类选择器</div>
<div class="a2">我还是青色,类派生选择器优先于所有类选择器</div>
<div id="a2">
<span>我是黄色,ID选择器优先于类派生选择器</span>
<div>我是紫色,ID派生选择器优先于类派生选择器</div>
<div class="a1">我还是紫色,ID派生选择器优先于所有类选择器</div>
<div class="a1" id="a1">我还是紫色,ID派生选择器优先于所有ID选择器</div>
<div class="a1" id="a1" style="color:#000000;">我是黑色,内联样式驾到闲杂人等退下</div>
</div>
</div>
</body>
</html>
<div>我是绿色,内部样式表优先于浏览器缺省</div>
<div class="a2">我是红色,类选择器优先于内部样式表</div>
<div class="a2" id="a2">我是黄色,ID选择器优先于类选择器</div>
<div class="a1">
<span>我是蓝色,类选择器优先于内部样式表</span>
<div>我是青色,类派生选择器优先于类选择器</div>
<div class="a2">我还是青色,类派生选择器优先于所有类选择器</div>
<div id="a2">
<span>我是黄色,ID选择器优先于类派生选择器</span>
<div>我是紫色,ID派生选择器优先于类派生选择器</div>
<div class="a1">我还是紫色,ID派生选择器优先于所有类选择器</div>
<div class="a1" id="a1">我还是紫色,ID派生选择器优先于所有ID选择器</div>
<div class="a1" id="a1" style="color:#000000;">我是黑色,内联样式驾到闲杂人等退下</div>
</div>
</div>
</body>
确实没有系统,看过,惭愧,呵呵2.不存在“本身无Style”,即使你没有定义浏览器也有一套缺省定义...你不理解的地方也跟A标记无关...
这个我理解,问中也提及了"否则以默认显示 "3.浏览器缺省 < 外部样式表 < 内部样式表 < 内联样式...
嗯,这个我了解.
浏览器缺省:浏览器内置的样式,比如文字默认就显示为#000000
外部样式表:举例为:<link href="http://c.csdn.net/bbs/t/5/t5.css" rel="stylesheet" type="text/css" />
内部样式表:页面内定义的<style type="text/css"> ... ...</style>
内联样式: 元素中定义的 <span style="... ..."> </span>4.类选择器 < 类派生选择器 < ID选择器 < ID派生选择器
呃.. 这个也了解.. 呵呵
类选择器: # <-- 样式表中这个标记开头的
类派生选择器: #XXXX span <-- 样式表中以 "#"开头 后续接着的 html元素标签
ID选择器: . <-- 样式表中这个标记开头的
ID派生选择器: .id span <-- 样式表中以 "."开头 后续接着的 html元素标签5.浏览器缺省 < 外部样式表 < 外部样式表类选择器 < 外部样式表类派生选择器 < 外部样式表ID选择器 < 外部样式表ID派生选择器 < 内部样式表 < 内部样式表类选择器 < 内部样式表类派生选择器 < 内部样式表ID选择器 < 内部样式表ID派生选择器 < 内联样式...共12个优先级...
学习了,这个我没有理解的透彻... ... 所以才会产生疑问,呵呵,多谢指出.
#content
{
color: Blue; /*蓝色*/
}
#content a, span, b, i
{
color: Yellow; /*黄色*/
}
.action
{
color: Red; /*红色*/
}
.action a, span, b, i
{
color: Green; /*绿色*/
}
#other
{
color: Pink; /*粉红*/
}
</style>#content a, span, b, i
.action a, span, b, i
其中
a仍旧是黄色
其他的span, b, i仍旧是绿色.而我把 .action a, span, b, i 去掉
<style type="text/css">
#content
{
color: Blue; /*蓝色*/
}
#content a, span, b, i
{
color: Yellow; /*黄色*/
}
.action
{
color: Red; /*红色*/
}
#other
{
color: Pink; /*粉红*/
}
</style>
此时, a 依旧是黄色, span , b 标记变成了 黄色,这是为什么呢?
a标记为什么那么特殊呢?
vrhero可以把我的过程模拟一遍,一定要增加 a 标记哦.谢谢了,麻烦测试完毕告知一下原因
刚才我在人生的道路上迷失了.
因为
#content a, span, b, i
{
... ...
}
相当于==>
#content a
{
... ...
}
span, b, i
{
... ...
}低级错误... ....
一失足成千古风流人物
刚才我在人生的道路上迷失了.
因为
#content a, span, b, i
{
... ...
}
相当于==>
#content a
{
... ...
}
span, b, i
{
... ...
}低级错误... ....
一失足成千古风流人物引用 20 楼 vrhero 的回复:
内部样式表ID派生选择器 的优先级仅次于 内联样式...你怎么改,#content a都优先...至于b和i,你怎么写的?注意6楼的补充说明,派生选择器只对容器类标记中的标记起作用...[/Quote]
相当于
#content a {}
span {}
b {}
i {}而不是
#content a {}
#content span {}
.....action a, span, b, i
这个同理
.action a {}
span {}
b {}
i {}所以你后面定义的span/b/i 覆盖了前面的定义
而对于#content a和.action a就是id高于类了