CSS选择器
css选择器
常用的选择器有如下几种:
1、标签选择器
标签选择器,此种选择器影响范围大,建议尽量应用在层级选择器中。
举例:
*{margin:0;padding:0} div{color:red} <div>....</div> <!-- 对应以上两条样式 --> <div class="box">....</div> <!-- 对应以上两条样式 -->
2、id选择器
通过id名来选择元素,元素的id名称不能重复,所以一个样式设置项只能对应于页面上一个元素,不能复用,id名一般给程序使用,所以不推荐使用id作为选择器。
举例:
#box{color:red} <div id="box">....</div> <!-- 对应以上一条样式,其它元素不允许应用此样式 -->
3、类选择器
通过类名来选择元素,一个类可应用于多个元素,一个元素上也可以使用多个类,应用灵活,可复用,是css中应用最多的一种选择器。
举例:
.red{color:red} .big{font-size:20px} .mt10{margin-top:10px} <div class="red">....</div> <h1 class="red big mt10">....</h1> <p class="red mt10">....</p>
4、层级选择器
主要应用在选择父元素下的子元素,或者子元素下面的子元素,可与标签元素结合使用,减少命名,同时也可以通过层级,防止命名冲突。
举例:
.box span{color:red} .box .red{color:pink} .red{color:red} <div class="box"> <span>....</span> <a href="#" class="red">....</a> </div> <h3 class="red">....</h3>
5、组选择器
多个选择器,如果有同样的样式设置,可以使用组选择器。
举例:
.box1,.box2,.box3{width:100px;height:100px} .box1{background:red} .box2{background:pink} .box2{background:gold} <div class="box1">....</div> <div class="box2">....</div> <div class="box3">....</div>
6、伪类及伪元素选择器
常用的伪类选择器有hover,表示鼠标悬浮在元素上时的状态,伪元素选择器有before和after,它们可以通过样式在元素中插入内容。
.box1:hover{color:red} .box2:before{content:'行首文字';} .box3:after{content:'行尾文字';} <div class="box1">....</div> <div class="box2">....</div> <div class="box3">....</div
CSS3新增选择器
1、E:nth-child(n):匹配元素类型为E且是父元素的第n个子元素
<style type="text/css"> .list div:nth-child(2){ background-color:red; } </style> ...... <div class="list"> <h2>1</h2> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> <!-- 第2个子元素div匹配 -->
2、E:nth-last-child(n):匹配元素类型为E且是父元素的倒数第n个子元素(与上一项顺序相反)
3、E:nth-child(2n):匹配元素类型为E且是父元素的偶数行子元素
4、E:nth-child(2n-1):匹配元素类型为E且是父元素的奇数行子元素
5、E:first-child:匹配元素类型为E且是父元素的第一个子元素
6、E:last-child:匹配元素类型为E且是父元素的最后一个子元素
7、E:only-child:匹配元素类型为E且是父元素中唯一的子元素
8、E:nth-of-type(n):匹配父元素的第n个类型为E的子元素
9、E:nth-last-of-type(n):匹配父元素的倒数第n个类型为E的子元素(与上一项顺序相反)
10、E:first-of-type:匹配父元素的第一个类型为E的子元素
11、E:last-of-type:匹配父元素的最后一个类型为E的子元素
12、E:only-of-type:匹配父元素中唯一子元素是E的子元素
13、E:empty :选择一个没有子元素的E元素(空元素)
14、E:enabled :可用的表单控件
15、E:disabled :失效的表单控件
16、E:checked :选中的checkbox
17、E:lang(it):以it开头的lang属性值的所有E元素
18、:root:选择文档的根元素
19:*:选择所有元素
20、E:-soup-contains("xxx"):包含某文本内容的元素
21、E:not(s) :不包含s元素的E元素
<style type="text/css"> .list div:not(:nth-child(2)){ background-color:red; } </style> ...... <div class="list"> <h2>1</h2> <div>2</div> <div>3</div> <div>4</div> <div>5</div> </div> <!-- 第 3、4、5 子元素div匹配 -->
22、E:target 对应锚点的样式
<style type="text/css"> h2:target{ color:red; } </style> ...... <a href="#tit01">标题一</a> ...... <h2 id="tit01">标题一</h2> <!-- 点击链接,h2标题变红 -->
23、E > F E元素下面第一层子集
24、E ~ F E元素后面的兄弟元素
25、E + F E元素后面紧挨着的兄弟元素
属性选择器:
1、[target]:含有target属性的所有元素
2、[target=_blank]:属性target="_blank"的所有元素
3、[target~=blank]:属性target含"blank"的所有元素
4、[target!=bl]:属性target以"bl"开头的所有元素
5、E[data-attr]: 含有data-attr属性的E元素
<style type="text/css"> div[data-attr='ok']{ color:red; } </style> ...... <div data-attr="ok">这是一个div元素</div> <!-- 点击链接,h2标题变红 -->
6、E[data-attr='ok']:含有data-attr属性的E元素且它的值为“ok”
7、E[data-attr^='ok']: 含有data-attr属性的E元素且它的值的开头含有“ok”
8、E[data-attr$='ok']: 含有data-attr属性的E元素且它的值的结尾含有“ok”
9、E[data-attr*='ok']: 含有data-attr属性的E元素且它的值中含有“ok”