[转]css选择器优先级深入理解
转载自:http://www.jb51.net/css/67029.html
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标签也可以应用
<p class="error"> </p>
另外,一个标签可以有多个类选择器,不同的值用空格隔开,这样多个样式便可以应用的一个标签上。
3.id选择器
id选择器和类选择器一样,用的也很频繁,但是id在每个html页面的值必须是唯一的,所以它不可以复用,如:
<div id="content"> </div>
这里补充说明下id与class的命名规范,命名时尽可能的保持名称与表现形式无关,如 某段提示文字显示为红色,可以命名为red,但是若日后改成蓝色,则red名与之不对应,更好的选择如error或tips。所以应该根据它是什么来命名 而不是根据它的外观如何来命名。
4.通用选择器
不同于上面的三种选择器,通用选择器要强大的多,它可以对页面中的所有html标签应用样式,当然也正是因为如此强大,反而限制了它的灵活性,在实际应用中用的较少。一般简单的css reset会用到,如:
*{ margin:; padding:;}
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; }
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优先级规则
比较简单易记的一种方法就是给不同选择器分配不同的值:
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选择器优先级深入理解的更多相关文章
- 深入理解CSS选择器优先级
题外话 今天把 <CSS REFACTORING>(中文名叫<CSS重构:样式表性能调优>)电子书粗略的浏览了一遍,这本书很薄,150页左右,首先是介绍了什么是重构并举了两个简 ...
- 关于Css选择器优先级
今天练习css的时候,重叠后的style发现不起作用,原来css选择器优先级大有文章. 声明: yi下内容选自 51cto.com --加以自己的理解 以备日后参照使用,毕竟自己理解的才是自己的. ...
- CSS选择器优先级(转)
原文:http://www.cnblogs.com/wangfupeng1988/p/4285251.html 另外,w3c有文章介绍了CSS选择器的特定性,见https://www.w3.org/T ...
- day44:CSS选择器优先级&JS基础
目录 1.CSS选择器优先级 2.补充:margin是可以设置百分比的 3.JS 3.1 js代码的引入方式 3.2 变量 3.3 数据类型 3.4 数组(类似于python中的列表) 3.5 自 ...
- 看完就懂--CSS选择器优先级的计算
CSS选择器优先级的计算 什么是选择器的优先级 优先级的计算与比较(一) - 优先级具有可加性 - 选择器优先级不会超过自身最大数量级 - 同等优先级情况下,后写的覆盖前写的 - 并集选择器之间的优先 ...
- 深入理解CSS选择器优先级的计算
选择器的优先级关系到元素应用哪个样式.在CSS2.1的规范(http://www.w3.org/TR/2009/CR-CSS2-20090908/cascade.html#specificity)中是 ...
- CSS选择器优先级总结
CSS三大特性-- 继承. 优先级和层叠. 继承:即子类元素继承父类的样式; 优先级:是指不同类别样式的权重比较; 层叠:是说当数量相同时,通过层叠(后者覆盖前者)的样式. css选择符分类 首先来看 ...
- CSS选择器优先级 CSS权值
计算指定选择器的优先级:重新认识CSS的权重 标签的权值为 0,0,0,1 类的权值为 0,0,1,0 属性选择的权值为 0,0,1,1 ID的权值为 0,1,0,0 important的权值为最高 ...
- 导航栏布局时遇到的问题以及解决办法 css选择器优先级
得到的导航栏效果 添加#menu ul li{width:30px;} 效果如图 将会使列表项和分隔区域的宽度同时改变因为id选择器的优先级高于类选择器,此时应该为列表项添加内联样式如图 才能得到如下 ...
随机推荐
- 使用base64编码的好处
在项目中,将报文进行压缩.加密后,最后一步必然是使用base64编码,因为base64编码的字符串,更适合不同平台.不同语言的传输: 它不受其他编码的影响,仍然保持不变,这点很有意义,如下验证: St ...
- Vue style 深度作用选择器 >>> 与 /deep/(sass/less)
传送门:https://vue-loader-v14.vuejs.org/zh-cn/features/scoped-css.html 你很可能会遇到的问题 vue组件编译后,会将 template ...
- http 状态码 码表
HTTP状态码详解 - 查询资料 1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义 ...
- Winform开发框架之通用高级查询模块--SNF快速开发平台3.3-Spring.Net.Framework
最近项目确实忙,但也是一直忙于有关项目和框架技术的事情,也一直致力于改善我的WInform开发框架.使得自己及客户使用起来更加方便,更加友好,更加高效. 在很多程序模块中都很常见,也是给客户扩展查询的 ...
- 针对MSHFlexGrid的一系列通用方法-项目中实践代码分享
1.给MSHFlexGrid填充数据通用方法 '自定义报表填充程序 fgrid Public Function ShowformfData(Resultset As ADODB.Recordset, ...
- VB将MSHFlexGrid数据导出到Excel文件通用功能
1.通用导出Excel功能. 2.将 MSHFlexGrid数据导出到Excel文件通用功能. 3.具体代码如下: '将下列代码保存到一模块文件中,调用方法:Export fgrid1,cd1 Pub ...
- 设置Myeclipse中的代码格式化、注释模板及保存时自动格式化
1:设置注释的模板: 下载此模板: codetemplates.xml 搜索Dangzhang,将其改为你自己的姓名,保存 打开eclipse/myeclipse选择 window-->Pre ...
- RecyclerView 与 ItemTouchHelper 实现拖拽效果
截图 需求 App 开发新的需求,要求 RecyclerView 实现的九宫格样式可以拖拽,松手以后变更位置,类似于手机桌面拖动 app 变更位置. 分析 经过搜索,发现 support 中带有一个类 ...
- 菜鸟学JS(三)——自动隐藏的悬浮框
今天写一个小实例,用js和css写一个可以自动隐藏的悬浮框.css肯定是用来控制样式的,js用来控制器显示与隐藏的.显示与隐藏通常有两种方法实现:1,用js控制其显示属性:2,用js控制其大小. 今天 ...
- Java map双括号初始化方式的问题
关于Java双括号的初始化凡是确实很方便,特别是在常量文件中,无可替代.如下所示: Map map = new HashMap() { { put("Name", "Un ...