当前位置:

CSS3选择器及使用方法汇总(超全)

CSS选择器种类

在网页设计和网站制作过程中,会使用CSS来控制网页的显示样式,CSS选择器的种类可以分为三大类:

  • 标签名选择器
  • 类选择器
  • ID选择器

除了以上的三种基本选择器之外,CSS3又推出很多新的CSS选择器。

css选择器种类及优先级顺序

css1-css3提供特别丰富的选择器,但是由于某些选择器被各个浏览器支持的情况不一样,所以很多选择器在实际css开发中很少用到。(相关教程:CSS3视频教程

CSS选择器 CSS3新增选择器有哪些

1.基础的选择器

选择器

含义

示例

*

通用元素选择器,匹配任意元素

* { margin:0; padding:0; }

E

标签选择器,匹配所有使用E标签的元素

p { font-size:2em; }

.info和E.info

class选择器,匹配所有class属性中包含info的元素

.info { background:#ff0; }

p.info { background:#ff0; }

#info和E#info

id选择器,匹配所有id属性等于footer的元素

#info { background:#ff0; }

p#info { background:#ff0; }

2.组合选择器

选择器

含义

示例

E,F

多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔

Div,p { color:#f00; }

E F

后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔

#nav li { display:inline; }

li a { font-weight:bold; }

E > F

子元素选择器,匹配所有E元素的子元素F

div > strong { color:#f00; }

E + F

毗邻元素选择器,匹配所有紧随E元素之后的同级元素F

p + p { color:#f00; }

3.CSS 2.1 属性选择器

选择器

含义

示例

E[att]

匹配所有具有att属性的E元素,不考虑它的值。(注意:E在此处可以省略,比如“[cheacked]"。以下同。)

p[title] { color:#f00; }

E[att=val]

匹配所有att属性等于“val"的E元素

div[class="error"] { color:#f00; }

E[att~=val]

匹配所有att属性具有多个空格分隔的值、其中一个值等于“val"的E元素(多个值,只要其中有一个就可以)

td[class~="name"] { color:#f00; }
它匹配:<div class="ex1 name ex2">

E[att|=val]

匹配所有att属性具有多个连字号分隔的值、其中一个值以“val"开头的E元素,主要用于lang属性,比如“en"、“en-us"、“en-gb"等等

p[lang|=en] { color:#f00; }
它匹配:<div lang="en">  <div lang="en-us">
但它不匹配:<div lang="en-US">(因大小写不匹配)

注:CSS 2.1 属性选择器还有一个特点就是使用多个选择器,同事满足这多个选择器:blockquote[class=quote][cite] { color:#f00; }

4.CSS 2.1 中的伪类【更多UI元素状态伪类选择器

选择器

含义

示例

E:first-child

匹配父元素的第一个子元素

p:first-child { font-style:italic; }

input[type=text]:focus { color:#000; background:#ffe; }

input[type=text]:focus:hover { background:#fff; }

q:lang(sv) { quotes: “201D" “201D" “2019″ “2019″; }

E:link

匹配所有未被点击的链接

E:visited

匹配所有已被点击的链接

E:active

匹配鼠标已经其上按下、还没有释放的E元素

E:hover

匹配鼠标悬停其上的E元素

E:focus

匹配获得当前焦点的E元素

E:lang(c)

匹配lang属性等于c的E元素

5.CSS 2.1中的伪元素

选择器

含义

示例

E:first-line

匹配E元素的第一行

p:first-line { font-weight:bold; color;#600; }

.preamble:first-letter { font-size:1.5em; font-weight:bold; }

.cbb:before { content:""; display:block; height:17px; width:18px; background:url(top.png) no-repeat 0 0; margin:0 0 0 -18px; }

a:link:after { content: " (" attr(href) “) “; }

E:first-letter

匹配E元素的第一个字母

E:before

在E元素之前插入生成的内容

E:after

在E元素之后插入生成的内容

6.CSS 3的同级元素通用选择器

选择器

含义

示例

E ~ F

匹配F元素,限E元素之后同级F元素(E元素的子F元素不起作用)

p ~ ul { background:#ff0; }

7.CSS 3 属性选择器

选择器

含义

示例

E[att^="val"]

属性att的值以"val"开头的元素

div[id^="nav"] { background:#ff0; }

E[att$="val"]

属性att的值以"val"结尾的元素

E[att*="val"]

属性att的值包含"val"字符串的元素

8. CSS 3中与用户界面有关的伪类

选择器

含义

示例

E:enabled

匹配表单中激活的元素

input[type="text"]:disabled { background:#ddd;}

E:disabled

匹配表单中禁用的元素

E:checked

匹配表单中被选中的radio(单选框)或checkbox(复选框)元素

E::selection

匹配用户当前选中的元素

9. CSS 3中的结构性伪类

选择器

含义

示例

E:root

匹配文档的根元素,对于HTML文档,就是HTML元素

:root{background:blue} 作用于整个HTML页面背景

E:nth-child(n)

匹配其父元素的第n个子元素,第一个编号为1

p:nth-child(3) { color:#f00; }

E:nth-last-child(n)

匹配其父元素的倒数第n个子元素,第一个编号为1

p:nth-child(odd) { color:#f00; }

p:nth-child(even) { color:#f00; }

p:nth-child(3n+0) { color:#f00; }

p:nth-child(3n) { color:#f00; }

tr:nth-child(2n+11) { background:#ff0; }

tr:nth-last-child(2) { background:#ff0; }

p:last-child { background:#ff0; }

p:only-child { background:#ff0; }

E:nth-child(odd) 匹配父元素下奇数个子元素
E:nth-child(even) 匹配父元素下偶数个子元素

E:nth-of-type(n)

与:nth-child()作用类似,但是仅匹配使用同种标签的元素

E:nth-last-of-type(n)

与:nth-last-child() 作用类似,倒数,仅匹配使用同种标签的元素

E:first-child 匹配父元素的第一个子元素

E:last-child

匹配父元素的最后一个子元素,等同于:nth-last-child(1)

E:first-of-type

匹配父元素下使用同种标签的第一个子元素,等同于:nth-of-type(1)

E:last-of-type

匹配父元素下使用同种标签的最后一个子元素,等同于:nth-last-of-type(1)

E:only-child

匹配父元素下仅有的一个子元素,等同于:first-child:last-child或 :nth-child(1):nth-last-child(1)

E:only-of-type

匹配父元素下使用同种标签的唯一一个子元素,等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1)

E:empty

匹配一个不包含任意子元素的元素,注意,文本节点也被看作子元素

p:empty { background:#ff0; }

:nth-child(An+B)应用于倍数的循环 循环使用样式 A:每次循环包括几种样式 B:指定的样式在循环所处r的位置
1
li:nth-child(4n+1) {background:red;}

li:nth-child(4n+2) {background:blue;}

li:nth-child(4n+3) {background:green;}

li:nth-child(4n+4) {background:yellow;}
4次一循环,第1个第2个第3个第4个分别适用于各自的样式,第5个第6个第7个第8个再适用这些样式。(n 最小取值 0)

target选择器 给页面中某个target元素指定样式 只有当用户点击链接并跳转到target元素后才会起作用。 :target{background:#333;color:#fff;}

10.CSS 3的反选伪类

选择器

含义

示例

E:not(s)

匹配不符合当前选择器的任意元素

:not(p) { border:1px solid #ccc; }

11. CSS 3中的 :target 伪类

选择器

含义

E:target

匹配文档中特定"id"点击后的效果

CSS选择器浏览器支持情况,其中包括最新的CSS3和Safari 4.0 Beta的支持情况。感谢Estelle Weyl的总结。
注:
绿色 / √  表示目前支持。
橙色/ Δ   表示浏览器部分支持当前CSS选择器。
红色/ Χ   表示浏览器都不支持。
CSS选择器浏览器支持情况,其中包括最新的CSS3和Safari 4.0 Beta的支持情况。

css选择器优先级顺序

了解了各种选择器后,还有一个重要的知识点就是CSS选择器的优先级。这也是很多学建网站新手迷糊的问题。举个简单的例子:

<div class="polaris">
<span class="beijixing">
beijixing
</span>
<span>
polaris
</span>
</div>

如果已经把.polaris下面span内的字体设置成红色:

.polaris span {color:red;}

这时,如果要改变.beijixing的颜色为蓝色,用下面的命令是不能实现的:

.beijixing {color:blue;}

出现这种情况就是因为后一个命令的优先级不够,两条相互冲突的样式设置,浏览器只会执行优先级较高的那个。

那么选择器的优先级是怎么规定的呢?

一般而言,选择器越特殊,它的优先级越高。也就是选择器指向的越准确,它的优先级就越高。

通常我们用1表示标签名选择器的优先级,用10表示类选择器的优先级,用100标示ID选择器的优先级。

比如上例当中 .polaris span {color:red;}的选择器优先级是 10 + 1 也就是11;而 .polaris 的优先级是10;浏览器自然会显示红色的字。理解了这个道理之后下面的优先级计算自是易如反掌:

  • div.test1 .span var 优先级 1+10 +10 +1
  • span#xxx .songs li 优先级1+100 + 10 + 1
  • #xxx li 优先级 100 +1

CSS选择器的使用原则

对于什么情况下使用什么选择器,用不同选择器的原则是:

  • 第一:准确的选到要控制的标签;
  • 第二:使用特别合理优先级的选择器;
  • 第三:HTML和CSS代码尽量简洁美观。

学习更多网站制作知识,请学习网站制作培训

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注