css选择器基本介绍

根据获取页面中元素的不同,目前css选择器主要分为五类:基本选择器,组合选择器,伪类选择器,伪元素和属性选择器。

1.基本选择器

基本选择器主要分为标签选择器,类选择器,ID选择器和通配选择器。

(1)标签选择器是css中使用率最高的一类选择器,易于管理,它直接引用HTML标签名称,也称为类型选择器,类型选择器规定了网页元素在页面中的显示样式。因此标签选择器可以快速,方便的控制页面标签的默认显示效果。

1 <head>
2    <style>
3       p{
4           font-size:12px;
5           color:red;
6        }
7    </style>
8 </head>

(2)类选择器,是以(.)前缀开头,然后跟随一个自定义的类名,对应于html中的class属性

1 <style>
2     .font18px{
3         font-size:18px;
4      }
5 </style>
6 
7 <p class="font18px">该段落字体大小设置为18px</p>

注:如果把标签和类结合在一起来定义选择器,则可以限定类的使用范围,这样就可以指定该类仅适用于特定的标签范围内,这种做法也称为指定类选择器。

1 <style>
2      p.font18px{
3           font-size:18px;
4      }
5 </style>
6 <p class="font18px">样式只对该段落有效</p>
7 <p>样式对该段落无效,因为没有类font18px的指定</p>

(3)ID选择器,是以(#)前缀开头,然后跟随一个自定义的ID名,对应于HTML中的ID属性。

1  <style type="text/css">
2     #box{
3        height:200px;
4        width:400px;
5     }
6  </style>
7  <div id="box">宽400px,高200px</div>

注:一般通过ID选择器来定义HTML框架结构的布局效果,因为HTML框架元素的ID值都是唯一的。

(4)通配选择器,如果HTML所有元素都需要定义相同的样式,这时可选择通配选择器,通配选择器是固定的,用星号(*)表示。

1 *{
2    font-size:19px;
3 }

2.组合选择器

 当把两个或者多个基本选择器组合在一起时,便形成了一个复杂的选择器,通过组合选择器可以精确匹配页面元素。主要包括:包含选择器,子选择器,相邻选择器,兄弟选择器,分组选择器。

(1)包含选择器:包含选择器通过空格标识符来表示,前面的一个选择器表示包含框对象的选择器,而后面的选择器表示被包含的选择器。

1 #header p{
2     font-size : 18px;
3 }

表示的是从id =header中包含的所有p元素字体大小全部设置为18px,header为祖先,其他p为后代,即选中后代。不管是儿子还是孙子,只要是都会被选中。

(2)子选择器:指定父元素所包含的子元素。子选择器使用尖角号(>)表示。子选择器只传给儿子,孙子和其他堂亲都不行。

1 div > span {
2    font-size:24px;
3 }

表示包含在div元素内的子元素span字体大小为24像素。通过这种方式,可以准确定义HTML文档某个或一组子元素的样式,而不再需要为它们定义id属性或者class属性。

(3)相邻选择器:通过(+)分隔符进行定义,前后选择符的关系是兄弟关系。如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻选择器。

1 p+h3{
2    font-size:18px;
3 }

(4)兄弟选择器:通过(~)分隔符进行定义,其基本结构是第一选择器指定同级前置元素,后面的选择器指定其后同级所有匹配元素。前后选择符的关系是兄弟关系。简言之,就是查找某一个指定元素的后面的所有兄弟结点。而先前介绍的相邻选择器只能查找紧接的那一个兄弟结点。

1 p~h3{
2    font-size:18px;
3 }

(5)分组选择器:通过(,)分隔符进行定义,其基本结构是第一个选择器指定匹配元素,后面的选择器指定另一个匹配元素,最后把前后选择器匹配的元素全部都取出来,通过分组选择器可以实现集体声明,将样式表中一致的css样式放在一起,然后通过逗号连接这些选择器,减少代码的书写量。

1 h1,h2,h3,h4{
2   font-size:18px;
3 }

3.属性选择器

1 E[attr]    //只使用了属性名,但没有确定任何属性值。
2 E[attr="value"]    //指定了属性名,并指定了该属性的属性值。
3 E[attr~="value"]    //指定了属性名,并且具有属性值,此属性值是一个词列表,并且以空格隔开,其中词列表中包含了一个value词,而且等号前面的~不能不写。
4 E[attr^="value"]    //指定了属性名,并且有属性值,属性值是以value开头的。
5 E[attr$="value"]    //指定了属性名,并且有属性值,属性值是以value结尾的。
6 E[attr*="value"]    //指定了属性名,并且有属性值,属性值中包含了value。
7 E[attr|="value"]    //指定了属性名,并且属性值是value或者以value-开头的值,如(zh-en)。

注:E表示匹配元素的选择符,可以省略;中括号为属性选择器标识符,不可或缺;attr表示html属性名,value表示html属性值,或者html属性值包含的子字符串,如a[title*="site"],则可以匹配<a title="website"></a>,因为website中包含site子字符串

4.伪类选择器

伪类选择器包含伪类和伪对象选择器,伪选择器以冒号(:)作为前缀标识符,冒号前可以添加选择符,限定伪类应用的范围,冒号后为伪类和伪对象名,冒号前后没有空格,否则将错认为类选择器。伪类选择器主要包括4种:动态伪类,结构伪类,否定伪类和状态伪类,其基本写法如下:

1 //单纯式
2 E.pseudo-class{property:value}
3 a:link{color:red;}
4 //混用式
5 E.class:pseudo-class{property:value}
6 a.selected:hover{color:red;}

(1)动态伪类:动态伪类是行为类样式,这些伪类并不存在于HTML中,只有当用户与页面交互时才能体现出来,动态伪类选择器包含两种形式:一种是锚点伪类,这是在链接中常见的样式,如:link,:visited;另一种是行为伪类,也称为用户操作伪类,如:hover,:active,:focus。

 1 //尊重先后顺序:link-visited-hover-active
 2 <style>
 3     //链接没有被访问时前景色为灰色
 4     .demo a:link{color:gray;}
 5    //链接被访问过后前景色为黄色
 6     .demo a:visited{color:yellow;}
 7     //鼠标悬浮在链接上时前景色为绿色
 8     .demo a:hover{color:green;}
 9     //鼠标击中激活链接那一下前景色为蓝色
10     .demo a:active{color:blue;}
11 </style>

(2)结构伪类:它是通过文档结构树实现元素过滤,通过文档结构的相互关系来匹配特定的元素,从而减少文档内class属性和id属性的定义,使得文档更加简洁。

 1 :first-child //选择某个元素的第一个子元素
 2 :last-child //选择某个元素的最后一个子元素
 3 :nth-child() //选择某个元素的一个或者多个特定的子元素
 4 :nth-last-child() //选择某个元素的一个或者多个特定的子元素,从这个元素的最后一个子元素开始计算
 5 :nth-of-type() //选择指定的元素
 6 :nth-last-of-type() //选择指定的元素,从元素的最后一个开始计算
 7 :first-of-type //选择一个上级元素下的第一个同类子元素
 8 :last-of-type //选择一个上级元素的最后一个同类子元素
 9 :only-child //选择的元素是它的父元素的唯一一个子元素
10 :only-of-type //选择一个元素是它的上级元素的唯一一个相同类型的子元素
11 :empty //选择的元素里面没有任何内容
 1 <style>
 2     body{
 3         background:#ccc;
 4         height:2617px;
 5         width:980px;
 6     }
 7     #wrap{
 8         position:absolute;
 9         width:249px;
10         height:249px;
11         z-index:1;
12         left:712px;
13         top:201px;
14     }
15     #wrap ul{
16         list-style-type:none;
17         margin:0;
18         padding:0;
19         font-size:12px;
20         color:#777;
21         border:1px solid red;
22     }
23     #wrap li{
24         background:url(image.JPG) no-repeat 2px 5px;
25         padding:1px 0px 0px 28px;
26         line-height:30px;
27     }
28     #wrap li a{
29         text-decoration:underline;
30         color:#777;
31     }
32     #wrap li a:hover{
33         color:blue;
34     }
35     #wrap li:first-child{
36         background-position:2px 0px;
37         font-weight:bold;
38     }
39     #wrap li:last-child{
40         background-position:2px -277px;
41         <!-- font-weight:bold; -->
42     }
43     #wrap li:nth-child(2){
44         background-position:2px -31px;
45     }
46     #wrap li:nth-child(3){
47         background-position:2px -72px;
48     }
49     #wrap li:nth-child(4){
50         background-position:2px -113px;
51     }
52     #wrap li:nth-child(5){
53         background-position:2px -154px;
54     }
55     #wrap li:nth-child(6){
56         background-position:2px -195px;
57     }
58     #wrap li:nth-child(7){
59         background-position:2px -236px;
60     }
61     
62     #wrap li:nth-of-type(even){
63         color:lightgray;
64     }
65 </style>
66 <body>
67     <div id="wrap">
68         <ul id="container">
69             <li><a href="#">送君千里,终须一别</a></li>
70             <li><a href="#">旅行的意义</a></li>
71             <li><a href="#">南师虽去,精神永存</a></li>
72             <li><a href="#">榴莲糯米糍</a></li>
73             <li><a href="#">阿尔及利亚,天命之年</a></li>
74             <li><a href="#">白菜鸡肉粉丝包</a></li>
75             <li><a href="#">展望塔上的杀人</a></li>
76             <li><a href="#">我们,只会在路上相遇</a></li>
77         </ul>
78     </div>
79 </body>

(3)否定伪类::not()表示否定选择器,即排除或者过滤掉特定元素。前面介绍的选择器都是匹配操作,而唯独:not()操作相反,它表示过滤操作,与jquery中的:not()选择器用法相同。

1 input:not([type="submit"]){
2   border:1px solid red;  
3 }

(4)状态伪类:状态伪类主要针对表单进行设计的,由于表单是UI设计的灵魂,UI元素的状态一般包括:可用、不可用、选中、未选中、获取焦点、失去焦点、锁定、待机等。比如::enabled, :disabled;:checked

(5)目标伪类:目标伪类选择器形式如E:target,它表示选择匹配E的所有元素,且匹配元素被相关URL指向。该选择器是动态选择器,只有当存在URL指向该匹配元素时,样式效果才能有效。

1 <style>
2 div.target{
3     background-color:red;
4 }
5 </style>
6 <div>
7     <div id="red">red</div>
8     <div id="blue">blue</div>
9 </div>

在链接中输入#red,

猜你喜欢

转载自www.cnblogs.com/alice-cj/p/10958103.html