css选择器优先级深入理解
发布时间:2012-12-04 10:44:13 作者:佚名
我要评论
![](/skin/2018/images/text-message.png)
css基础选择器有标签选择器、类选择器、id选择器、通用选择器,本文将深入介绍css选择器优先级,这会给正在解决优先级问题的朋友,带来些许帮助
一、基础选择器
css基础选择器有标签选择器、类选择器、id选择器、通用选择器
1.标签选择器
每个html页面都由很多个标签组成,通过标签选择器可以对某类标签应用相应的样式,如对p标签应用下面的样式,则页面中所有的p标签都会生效
p{ font-size:12px; color:red; background:blue; }
2.类选择器
类选择器是css非常常用的选择器,在html中可以为某个标签增加class属性,如
<div class="error"> </div>
则可以为对应的class设置样式
error{ width:200px; padding:5px; color:red;}
类选择器可以复用,如对页面中的p标签也可以应用此样式
This is a test!
另外,一个标签可以有多个类选择器,不同的值用空格隔开,这样多个样式便可以应用的一个标签上。
3.id选择器
id选择器和类选择器一样,用的也很频繁,但是id在每个html页面的值必须是唯一的,所以它不可以复用,如:
<div id="content"> </div>
这里补充说明下id与class的命名规范,命名时尽可能的保持名称与表现形式无关,如 某段提示文字显示为红色,可以命名为red,但是若日后改成蓝色,则red名与之不对应,更好的选择如error或tips。所以应该根据它是什么来命名 而不是 根据 它的外观如何来命名。
4.通用选择器
不同于上面的三种选择器,通用选择器要强大的多,它可以对页面中的所有html标签应用样式,当然也正是因为如此强大,反而限制了它的灵活性,在实际应用中用的较少。一般简单的css reset会用到,如:
*{ margin:0; padding:0;}
二、组合选择器
1.群主选择器
在使用选择器时,有的元素样式是一样的,每次都为不同的选择器单独定义样式的话太繁琐,这时我们便可以使用群主选择器集中定义样式。不同标签或类以逗号隔开。如:
div, h2, .error{ font-size:14px; color:red;}
这样我们便同时给div, h2, .error一起定义了样式。
2.子选择器
当我们想让父元素下的某个子元素表现为特定的样式时,我们可以用子选择器,如
div>a{ color:blue; text-decoration:none;}
此时,div下的子元素a都将变成蓝色字体,无下划线。
3.后代选择器
在上面的例子中,利用子选择器,只可以设置div下的子元素a,但是若想改变div下的所有a标签的样式,就需要用到后代选择器。代码如下:
div a{ color:blue; text-decoration:none;}
4.同胞选择器
除了上面的子选择器与后代选择器,我们可能还希望找到兄弟两个当中的一个,如一个标题h1元素后面紧跟了两个段落p元素,我们想定位第一个段落p元素,对它应用样式。我们就可以使用相邻同胞选择器。看下面的代码:
h1 + p{font-size:14px; background:#ccc; }
三、属性选择器说明:以下提到的E表示元素,attr表示属性,val表示属性的值
1.E[attr]选择器
匹配所有具有attr属性的E元素,不考虑它的值。如以下代码可以匹配所有含有title属性的p元素。
p[title]{font-size:12px; color:#666;}
2.E[attr=val]
匹配所有attr属性值为val的E元素。如匹配所有class值为test的p元素
p[class="test"]{color:red;}
3.E[attr~=val]
匹配具有attr属性且属性值为用空格分隔的字符列表,其中一个值等于val的E元素。如:
p[class~="name"]{font-size:12px; color:red;}
<div class="test name">111111</div><div class="name">111111</div>
则第一个div会应用上面的样式。
4.E[attr|=val]
匹配具有attr属性且属性值为用连接符分隔的字符串,并以val开头的E元素。
p[class|="test"]{font-size:12px; color:red;}
<div class="test">111111</div><div class="test-123">111111</div>
则第二个div会应用上面的样式。
最后不得不提的是IE6不支持子选择器、同胞选择器和属性选择器,因此使用时需注意。
css优先级
优先级算是css中的一个非常重要的知识点,也是笔试面试中经常会考到的知识点。
一、什么是css优先级
css优先级,即是指CSS样式在浏览器中被解析的先后顺序。
二、css优先级规则
比较简单易记的一种方法就是给不同选择器分配不同的值:
1.id选择器默认优先级最高,其权值为100
2.class选择器、属性选择器和伪类选择器的权值为10
3.标签选择器的优先级较低,其权值为1
所以在比较样式的优先级时,只需统计选择符中的id、class、标签名个数,然后把对应的权值相加即可。根据结果便可得出优先级高低。
1.结果较大的优先级较高
2.结果相同,则后定义的样式优先级较高
3.如果样式值中含有!important,则该值优先级最高
举例:
h2{color:blue;}//其权值为1
#content{color:#666;}//其权值为100p
.test{color:#ccc;}//其权值为1+10=11
#main div .test{color:red;}//其权值为100+1+10=111div
#main .left #nav{color:#000}//其权值为1+100+10+100=211
css基础选择器有标签选择器、类选择器、id选择器、通用选择器
1.标签选择器
每个html页面都由很多个标签组成,通过标签选择器可以对某类标签应用相应的样式,如对p标签应用下面的样式,则页面中所有的p标签都会生效
复制代码
代码如下:p{ font-size:12px; color:red; background:blue; }
2.类选择器
类选择器是css非常常用的选择器,在html中可以为某个标签增加class属性,如
复制代码
代码如下:<div class="error"> </div>
则可以为对应的class设置样式
复制代码
代码如下:error{ width:200px; padding:5px; color:red;}
类选择器可以复用,如对页面中的p标签也可以应用此样式
复制代码
代码如下:This is a test!
另外,一个标签可以有多个类选择器,不同的值用空格隔开,这样多个样式便可以应用的一个标签上。
3.id选择器
id选择器和类选择器一样,用的也很频繁,但是id在每个html页面的值必须是唯一的,所以它不可以复用,如:
复制代码
代码如下:<div id="content"> </div>
这里补充说明下id与class的命名规范,命名时尽可能的保持名称与表现形式无关,如 某段提示文字显示为红色,可以命名为red,但是若日后改成蓝色,则red名与之不对应,更好的选择如error或tips。所以应该根据它是什么来命名 而不是 根据 它的外观如何来命名。
4.通用选择器
不同于上面的三种选择器,通用选择器要强大的多,它可以对页面中的所有html标签应用样式,当然也正是因为如此强大,反而限制了它的灵活性,在实际应用中用的较少。一般简单的css reset会用到,如:
复制代码
代码如下:*{ margin:0; padding:0;}
二、组合选择器
1.群主选择器
在使用选择器时,有的元素样式是一样的,每次都为不同的选择器单独定义样式的话太繁琐,这时我们便可以使用群主选择器集中定义样式。不同标签或类以逗号隔开。如:
复制代码
代码如下:div, h2, .error{ font-size:14px; color:red;}
这样我们便同时给div, h2, .error一起定义了样式。
2.子选择器
当我们想让父元素下的某个子元素表现为特定的样式时,我们可以用子选择器,如
复制代码
代码如下:div>a{ color:blue; text-decoration:none;}
此时,div下的子元素a都将变成蓝色字体,无下划线。
3.后代选择器
在上面的例子中,利用子选择器,只可以设置div下的子元素a,但是若想改变div下的所有a标签的样式,就需要用到后代选择器。代码如下:
复制代码
代码如下:div a{ color:blue; text-decoration:none;}
4.同胞选择器
除了上面的子选择器与后代选择器,我们可能还希望找到兄弟两个当中的一个,如一个标题h1元素后面紧跟了两个段落p元素,我们想定位第一个段落p元素,对它应用样式。我们就可以使用相邻同胞选择器。看下面的代码:
复制代码
代码如下:h1 + p{font-size:14px; background:#ccc; }
三、属性选择器说明:以下提到的E表示元素,attr表示属性,val表示属性的值
1.E[attr]选择器
匹配所有具有attr属性的E元素,不考虑它的值。如以下代码可以匹配所有含有title属性的p元素。
复制代码
代码如下:p[title]{font-size:12px; color:#666;}
2.E[attr=val]
匹配所有attr属性值为val的E元素。如匹配所有class值为test的p元素
复制代码
代码如下:p[class="test"]{color:red;}
3.E[attr~=val]
匹配具有attr属性且属性值为用空格分隔的字符列表,其中一个值等于val的E元素。如:
复制代码
代码如下:p[class~="name"]{font-size:12px; color:red;}
复制代码
代码如下:<div class="test name">111111</div><div class="name">111111</div>
则第一个div会应用上面的样式。
4.E[attr|=val]
匹配具有attr属性且属性值为用连接符分隔的字符串,并以val开头的E元素。
复制代码
代码如下:p[class|="test"]{font-size:12px; color:red;}
<div class="test">111111</div><div class="test-123">111111</div>
则第二个div会应用上面的样式。
最后不得不提的是IE6不支持子选择器、同胞选择器和属性选择器,因此使用时需注意。
css优先级
优先级算是css中的一个非常重要的知识点,也是笔试面试中经常会考到的知识点。
一、什么是css优先级
css优先级,即是指CSS样式在浏览器中被解析的先后顺序。
二、css优先级规则
比较简单易记的一种方法就是给不同选择器分配不同的值:
1.id选择器默认优先级最高,其权值为100
2.class选择器、属性选择器和伪类选择器的权值为10
3.标签选择器的优先级较低,其权值为1
所以在比较样式的优先级时,只需统计选择符中的id、class、标签名个数,然后把对应的权值相加即可。根据结果便可得出优先级高低。
1.结果较大的优先级较高
2.结果相同,则后定义的样式优先级较高
3.如果样式值中含有!important,则该值优先级最高
举例:
复制代码
代码如下:h2{color:blue;}//其权值为1
#content{color:#666;}//其权值为100p
.test{color:#ccc;}//其权值为1+10=11
#main div .test{color:red;}//其权值为100+1+10=111div
#main .left #nav{color:#000}//其权值为1+100+10+100=211
相关文章
- 作为一个Web开发者,掌握必要的前台技术也是很重要的特别是CSS选择器的优先级问题,为了广大web爱好者可以更好的解决问题,这里就CSS选择器的优先级问题做了一些总结2013-08-01
- 大家都知道,CSS的中文名叫做层叠样式表,而CSS在控制样式的时候,有三种引入方式,这里简单介绍下CSS控制样式的三种方式2013-07-22
- 所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序,既然样式有优先级,那么就会有一个规则来约定这个优先级,而这个“规则”就是本次所需要讲的重点2013-04-22
- 所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序,CSS是层叠样式表(Cascading Style Sheets)的简称,我们能通过CSS为文档设置丰富且易于修改的外观2013-04-19
- css样式优先级是按照样式表中出现顺序还是按照元素中class或者id值的声明顺序呢,这个问题貌似一直存在我们身边却一直无从选择,接下来用实例为大家说明下,到底哪个高点,2013-03-14
- 多重样式(Multiple Styles): 如果外部样式、内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况.有个例外的情况,就是如果外部样式放在内部样式的后面,则2013-02-01
CSS优先级和!important与IE6的BUG讨论及解决方案
本来我对他谁的ie6不支持!important也没什么异议,可是正好在前几天正好用个这个!important属性解决了一个样式优先级的问题,而且是支持ie6的,这是为什么呢?到底ie6支不2013-01-23IE6下CSS多类选择符优先级不起作用的bug分析及解决方法
IE6,这个前端开发的梦魇总是在你不经意的时候给你捅一刀,在ie6环境下CSS多类选择符优先级不起作用,多么的令人气愤啊,经过测试:IE6下这种类组合的优先级不如单个类, 感2013-01-23- css样式的优先级是一个庞杂的知识点,我甚至觉得它的庞杂可以与“浮动”以及“框模型”相提并论,今天就利用点时间把我所了解的写下来,大家共同进步2013-01-11
- CSS的调用方式一共有4种,分别是:行内样式,内嵌式,link链接式,@import导入式,在同级的前提下,我们可以按样就近原则来理解他们的优先级,则越前定义的样式,会被后面2010-07-23
最新评论