原文转自:http://www.cnblogs.com/xyzhanjiang/p/5447406.html

CSS 选择器除了样式表匹配元素时需要用到,在使用 jQuery 等库的时候也可以利用 CSS 选择器来选择元素,因此作为前端开发需要熟练掌握。下面是一些常用的 CSS 选择器示例。

元素选择器

E,选择所有指定元素名称的元素,例如 p,选择所有的 p 元素。

通用选择器

*,选择所有元素,例如:

* {
box-sizing: border-box;
}

类选择器

.class,用一个点号加类名表示,例如 .header,选择所有 class 属性中包含 header 的元素。

<div class="header">会被选中</div>

<h2 class="header">也会被选中</h2>

多类选择器

使用多个 class 可以选择同时含有多个类名的元素,例如 .collapse.in 选择同时含有类 collapse 和 in 的元素:

<div class="collapse in">会被选中</div>
<div class="collapse">不会被选中</div>
<div class="in">不会被选中</div>

IE 6 浏览器不支持多类选择器,会忽略多类中前面的类,比如这里 IE 6 只会匹配 .in

ID 选择器

#id,用一个 # 号加 ID 值表示,例如 #title,选择 id 属性等于 title 的元素。

<h2 id="title"></h2>

上下文选择器

selector selector,用于选择元素内部的元素,例如 p span,选择所有属于 p 元素内部的 span 元素。

<p>
<span>会被选中</span>
<strong><span>同样会被选中</span></strong>
</p>

子元素选择器

selector > selector,用于选择带有特定父元素的元素,例如 p > span,选择所有父元素为 p 的 span 元素。

<p>
<span>父元素是 p 会被选中</span>
<strong><span>父元素是 strong 不会被选中</span></strong>
</p>

相邻元素选择器

selector + selector,用于选择一个特定元素之后紧跟的元素,h2 + p,选择所有相邻 h2 元素之后的同级 p 元素。

<div>
<p>h2 之前的不会被选中</p>
<h2>示例</h2>
<p>紧邻 h2 的会被选中</p>
<p>不会被选中</p>
</div>

同级元素选择器

selector ~ selector,用于选择特定元素之后的同级元素,h2 ~ p,选择所有 h2 元素之后的同级 p 元素。

<div>
<p>不会被选中</p>
<h2>示例</h2>
<p>h2 之后的同级 p 元素会被选中</p>
<span>示例</span>
<p>h2 之后的同级 p 元素会被选中</p>
</div>

同级元素选择器选择特定元素之后的所有同级元素,而相邻元素选择器只选择特定元素之后紧邻的那个元素。

属性名选择器

[attribute],用于选择所有带有特定属性的元素,例如 [title],选择所有带有 title 属性的元素。

<a title="link">会被选中</a>
<a>不会被选中</a>

属性值选择器

[attribute="value"],用于选择所有带有特定属性和值的元素,例如 [title="link"],选择所有带有 title 属性并且值为 link 的元素。

<a title="link">会被选中</a>
<a title="this is a link">属性值不匹配,不会被选中</a>

[attribute~="value"],用于选择所有带有特定属性并且属性值包含指定单词的元素,单词之间用空格分隔,例如 [title~="link"],选择所有带有 title 属性并且属性值中包含 link 单词的元素。

<a title="link">会被选中</a>
<a title="this is a link">属性值中包含 link 会被选中</a>
<a title="thisisalink">不会被选中</a>
<a title="other">不会被选中</a>

[attribute|="value"],用于选择带有特定属性并且属性值是以指定值开头的所有元素,该值必须是整个单词,或者后面跟着连字符,例如 [title|="red"],选择所有带有 title 属性并且值是 red 开头的元素。

<a title="red">会被选中</a>
<a title="red-hot">会被选中</a>
<a title="redhot">不会被选中</a>

[attribute^="value"],用于选择带有特定属性并且属性值是以指定字符串开头的所有元素,例如 a[href^="http://"],选择所有 href 属性值以 http:// 字符串开头的 a 元素。

<a href="http://www.baidu.com/">会被选中</a>
<a href="/index">不会被选中</a>

[attribute$="value"],用于选择带有特定属性并且属性值是以指定字符串结尾的所有元素,例如 img[src$=".png"],选择所有 png 格式的 img 元素。

<img alt="logo" src="/assets/logo.png"> <!-- 会被选中 -->
<img alt="banner" src="/assets/banner.jpg"> <!-- 不会被选中 -->

[attribute*="value"],用于选择带有特定属性并且属性值包含指定字符串的所有元素,例如 [title*="red"],选择所有带有 title 属性并且值包含 red 字符串的所有元素。

<a title="red">会被选中</a>
<a title="redhot">会被选中</a>
<a title="hotredhot">会被选中</a>

属性选择器对比

选择器 属性值
[attribute] 仅匹配属性名,与属性值无关
[attribute="value"] 完全匹配属性名和属性值
[attribute~="value"] 属性值以空格分隔,包含 value 单词或者仅为 value
[attribute管道符="value"] 属性值以 value- 开头或者仅为 value
[attribute^="value"] 属性值以 value 字符串开头
[attribute$="value"] 属性值以 value 字符串结尾
[attribute*="value"] 属性值包含 value 字符串

伪类

状态伪类选择器

状态伪类选择器会根据元素的特定状态选择相应的元素。

选择器 说明 例子
:link 选择所有未被访问的链接 a:link
:visited 选择所有已被访问的链接 a:visited
:focus 选择获取焦点的元素 input:focus
:hover 择鼠标指针位于其上的元素 li:hover
:active 选择激活的元素 button:active

:target,选择目标元素。当用户点击一个指向页面中其它元素的链接,则那个被指向的元素就是目标元素,例如:

<a href="#more">more</a> <!-- 点击这个链接之后 -->

<div id="more">...</div> <!-- 这个元素会被 :target 选中 -->

:enabled,选择所有已启用的元素。

<input type="text"> <!-- 会被选中 -->
<input disabled type="text"> <!-- 已禁用不会被选中 -->

:disabled,选择所有被禁用的元素,和 :enabled 相反,例如:

input[type="text"]:disabled {
background-color: #eee;
}

给禁用的文本输入框一个灰色的背景。

<input type="text"> <!-- 不会被选中 -->
<input disabled type="text"> <!-- 禁用的文本框会被选中 -->

:checked,选择所有已经被勾选的单选框或者复选框,例如 input:checked

<input checked type="radio"> <!-- 已经勾选的元素会被选中 -->
<input type="checkbox"> <!-- 没有勾选的不会被选中 -->
示例,结合属性选择器选择被勾选的单选框:input[type="radio"]:checked。

:lang 选择器
:lang(language),用于选择所有带有以指定值开头的 lang 属性的元素,例如 p:lang(en)。
<p lang="en">会被选中</p>
<p lang="en-US">会被选中</p>

该选择器等同于 [lang|="language"],是 [attribute|="value"] 选择器的一种特例。

结构伪类选择器

:nth-child(n),选择同级元素中的第 n 个元素,例如 ul > li:nth-child(2)

<ul>
<li>不会被选中</li>
<li>第二个元素会被选中</li>
<li>不会被选中</li>
</ul>

需要注意的是子元素的下标是从 1 开始的。除了可以指定特定的数字,也可以使用 even(偶数), odd(奇数) 关键字,例如 ul > li:nth-child(odd),或者使用公式,例如 ul > li:nth-child(2n+1)(n 是计数器,从 0 开始):

<ul>
<li>第一个子元素会被选中</li>
<li>第二个子元素不会被选中</li>
<li>第三个子元素会被选中</li>
</ul>

:nth-last-child(n),同上,不过是从最后一个子元素开始计数,使用该选择器可以实现隔行变色的效果。

:first-child,选择同级元素中的第一个元素,例如 ul > li:first-child

<ul>
<li>会被选中</li>
<li>不会被选中</li>
<li>不会被选中</li>
</ul>

作用等同于 ul > li:nth-child(1)

:last-child,选择同级元素中的最后一个元素,例如 ul > li:last-child

<ul>
<li>不会被选中</li>
<li>不会被选中</li>
<li>会被选中</li>
</ul>

作用等同于 ul > li:nth-last-child(1)

:only-child,用于选择父元素下唯一的子元素,例如 ul > li:only-child

<ul>
<li>唯一子元素,会被选中</li>
</ul> <ul>
<li>不会被选中</li>
<li>不会被选中</li>
</ul>

:nth-of-type(n),选择同级元素中的第 n 个同类元素,和 :nth-child 类似,例如 .box > :nth-of-type(2)

<div class="box">
<p>第一个 p 子元素,不会被选中</p>
<span>第一个 span 子元素,不会被选中</span>
<p>第二个 p 子元素,会被选中</p>
<span>第二个 span 子元素,会被选中</span>
</div>

:nth-last-of-type,同上,不过是从最后一个同类子元素开始计数。

:first-of-type,选择同级元素中的第一个同类元素,等同于 :nth-of-type(1)

:last-of-type,选择同级元素中的最后一个同类元素,等同于 nth-last-of-type(1)

:only-of-type,用于选择父元素下特定类型的唯一子元素,例如 .box > :only-of-type

<div class="box">
<p>不会被选中</p>
<em>唯一的 em 子元素会被选中</em>
<p>不会被选中</p>
<span>唯一的 span 子元素会被选中</span>
</div>

:root 选择器

:root,选择文档的根元素,对于 HTML 文档就是 html 元素。

:empty 伪类选择器

:empty,选择没有子元素的元素(包括文本节点),例如:

p:empty {
display: none;
}

表示隐藏没有内容的 p 元素,

<p>非空不会被选中</p>
<p></p> <!-- 为空会被选中 -->

否定伪类选择器

:not(selector),选择所有不匹配选择器的元素,例如 :not(p),选择所有不为 p 的元素:

<p>不会被选中</p>
<span>会被选中</span>

要选择既不是 p 也不是 span 的元素可以多次使用否定伪类选择器,例如 :not(p):not(span),需要同时满足条件的元素才会被选中。

CSS 4 否定伪类选择器支持传入参数列表,比如 :not(p, span)

伪元素

伪元素选择器用于选择那些若有实无的元素。在 CSS3 中,伪元素的写法为两个冒号,为了兼容旧浏览器,也可以使用一个冒号。

首字母伪元素选择器

::first-letter,选择元素的第一个字母,例如:

p::first-letter {
font-size: 300%;
}

段落元素的首字母放大。

首行伪元素选择器

::first-line,选择元素的第一行,例如:

p::first-line {
text-decoration: underline;
}

段落元素的首行添加下划线。

::before/::after 伪元素选择器

::before,选择在元素之前插入的生成内容。

::after,选择在元素之后插入的生成内容,例如:

<blockquote>Lorem ipsum dolor sit amet.</blockquote>

和样式:

blockquote::before {
content: "\0022";
} blockquote::after {
content: "\0022";
}

::selection 伪元素选择器

::selection,选择用户选取的内容,例如:

::selection {
background: #b3d4fc;
text-shadow: none;
}

CSS 选择器(转)的更多相关文章

  1. 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

    记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...

  2. css选择器

    常用css选择器,希望对大家有所帮助,不喜勿喷. 1.*:通用选择器 * { margin: 0; padding: 0; } 选择页面上的全部元素,通常用于清除浏览器默认样式,不推荐使用. 2.#i ...

  3. dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来

    dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...

  4. CSS选择器的权重与优先规则?

    我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...

  5. css选择器的使用详解

    -.css选择器的分类: 二.常用选择器详解: 1.标签选择器: 语法: 标签名 { 属性:属性值; } 代码示例: h1 { color: #ccc; font-size: 28px; } 2.类选 ...

  6. js,jq,css选择器

    js获取节点: var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode; //得到s的父节点 var ns=s.nextSbiling; / ...

  7. CSS系列:CSS选择器

    选择器(selector)是CSS中很重要的概念,所有HTML语言中的标记样式都是通过不同的CSS选择器来控制的.用户只需要通过选择对不同的HTML标签进行选择,并赋予各种样式声明,即可实现各种效果. ...

  8. 细说CSS选择器

    众所周知,CSS的一个核心特征就是能向文档中的一组元素类型应用某些规则.每个规则都有两个基本部分:选择器(selector)和声明块(declaration block).下图显示了规则的各个部分. ...

  9. CSS选择器 转

    来自于:http://www.cnblogs.com/webblog/archive/2009/08/07/1541005.html 最近在研究jQuery的选择器,大家知道jQuery的选择器和cs ...

  10. HTML5 -入门 (---css样式-------------(css基础与css选择器)---------------------—)

    ---恢复内容开始--- 一css基础入门与css选择器 CSS英文全拼:cascading style sheet 层叠样式表. 在html中使用:要在head中写style标签,所有样式放在sty ...

随机推荐

  1. ObjectiveC-MQTT初次接触

    首先iOS与mac端用的框架是:https://github.com/ckrey/MQTT-Client-Framework 使用CocoaPods导入 pod 'MQTTClient/Websock ...

  2. Android数据持久化技术 — — —SharedPreferences

    SharedPreferences是使用键值对的方式来存储数据. 要想使用SharedPreferences来存储数据,必须获取SharedPreferences对象,获取SharedPreferen ...

  3. Qt中文乱码解决思路

    最近项目中遇到不少的Qt中文乱码的问题,主要原因是客户的需求比较多,Qt版本有用4的版本的也有用5的版本,并且还有windows与linux跨平台的需求.经常出现个问题是windows的解决了,源代码 ...

  4. iOS一些常用的小知识点

    //获取全局的Delegate对象,这样我们可以调用这个对象里的方法和变量 [[UIApplication sharedApplication] delegate]; //获得程序的主Bundle N ...

  5. css中文乱码与替换字符

    有时候,我们的css样式表中字体乱码,很诧异.百度谷歌是两个老师,有时jquery博客还上淘宝,那边有现成的代码,看看,发现里面定义全局字体是这样的font:12px/1.5 tahoma,arial ...

  6. android中所有颜色大全

    < ?xml version="1.0" encoding="utf-8" ?>       < resources>< colo ...

  7. Ubuntu14.04安装build-essential失败,包依赖问题如何解决?

    正在读取软件包列表... 完成 正在分析软件包的依赖关系树        正在读取状态信息... 完成        有一些软件包无法被安装.如果您用的是 unstable 发行版,这也许是 因为系统 ...

  8. 利用SegmentedControl切换控制器的view

    #import "ViewController.h" #import "OneViewController.h" #import "TwoViewCo ...

  9. 常用类String的方法

    String str="hello"; 1.与数组相关的方法 System.out.println(str.length()); System.out.println(str.ch ...

  10. Android 终于官方支持按百分比来设置控件的宽高了

    dependencies { compile 'com.android.support:percent:22.2.0' } 支持布局 PercentRelativeLayout <android ...