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

声明块:由一个或多个声明组成,每个声明都是一个属性-值对(property-value)。
选择器:定义了将影响文档中的哪些部分。
下面全面的总结一下CSS的各类选择器:
元素选择器:
最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。如 p、h3、em、a ,甚至可以是html本身。
p { text-align:center; }
td, ul, ol, li, dl, dt, dd {
font-family: Verdana, sans-serif;
color:red;
} ------结合选择器和声明的分组,这里不详细解释
元素选择器里面有一个特别的选择器 ------ 通配选择器
通配选择器显示为一个星号(*)。这个选择器可以与任何元素匹配,就像一个通配符。例如,想要一个文档中的每一个元素都为红色,可以写为以下规则:
* { color:red; }
注意:慎用 * ,尽管它使用很方便,但是会有一些意想不到的效果。
类选择器 :
类选择器允许以一种独立于文档元素的方式来指定样式,它可以单独使用,也可以与其他元素结合使用。
要将类选择器的样式与元素关联,必须将 class 指定为一个适当的值,然后通过一个点号(.)向这些元素应用样式。
<p class="important warning">
This paragraph is a very important warning.
</p>
.warning { font-style:italic;} //类选择器添加样式
p.warning { font-style:italic;} //类选择器结合元素选择器添加样式
.important.warning { font-style:italic; } //多类选择器添加样式:通过把两个类选择器链接在一起,仅可以选择同时包含这些类名的元素(类名的顺序不限)
id选择器:
id选择器允许以一种独立于文档元素的方式来指定样式,它可以单独使用,也可以与其他元素结合使用。
要将id选择器的样式与元素关联,必须将 id 指定为一个适当的值,然后通过一个棋盘号(#)向这些元素应用样式。
<p id="intro">This is a paragraph of introduction.</p>
#intro {font-weight:bold;} //使用id选择器添加样式使字体变粗
类选择器和id选择器的区别:
区别 1:在一个HTML文档中,id选择器会使用一次,而且仅一次;而类选择器可以使用多次。
区别 2:可以使用类选择词列表方法为一个元素同时设置多个样式;但是不能使用 id词列表。--------表现在id选择器不能结合使用,而类选择器可以结合使用。
区别 3:id能包含更多含义。
注意: 在HTML 和 XHTML 文档中,类选择器和id选择器是区分大小写的。
属性选择器:
属性选择器可以根据元素的属性及属性值来选择元素。属性选择器分为以下4种类型:
1).简单属性选择器:
如果希望选择有某个属性的元素,而不论属性值是什么,可以使用简单属性选择器。
a[href] {color:red;} //将有 href 属性的 HTML 超链接的文本设置为红色(根据单个属性进行选择)
a[href][title] {color:red;} //将同时有 href 和 title 属性的 HTML 超链接的文本设置为红色(根据多个属性进行选择)
2).根据具体属性值选择:
除了选择拥有某些属性的元素,还可以进一步缩小选择范围,只选择有特定属性值的元素。
a[href="http://www.w3school.com.cn/about_us.asp"] {color: red;} //单个属性-值选择器选择一个文档
a[href="http://www.w3school.com.cn/"][title="W3School"] {color: red;} //多个属性-值选择器链接在一起来选择一个文档
注意:这种格式要求必须与属性值完全匹配!
<p class="important warning">
This paragraph is a very important warning.
</p>
p[class="important"]{color: red;} //该样式无法应用
p[class="important warning"]{color: red;} //该样式可以应用(完全匹配)
3).根据部分属性值选择:
如果属性能接受词列表(词与词用空格分隔),可以根据其中的任意一个词语进行选择,此时需要使用波浪号(~)。
<p class="important warning">
This paragraph is a very important warning.
</p>
p[class~="warning"] { font-style:italic;} //根据部分属性值添加样式
p.warning { font-style:italic;} //类选择器添加样式
以上两个语句是等效的,即实现的效果一模一样。思考:
(1)那为什么还要有这种“~=”属性选择器呢?
因为“~=”属性选择器能用于任何属性,而不只是class。
(2)如果忽略了波浪号(~),会怎么样?
如果忽略了波浪号(~),则与上面的“根据具体属性值选择”等同,但是一定需要完成完全匹配。
“部分值属性选择器”中的“子串匹配属性选择器”简介:(任何属性都可以使用这些选择器)

4).特定属性选择类型:
最后一类属性选择器即特定属性选择器,这个属性选择器不太好介绍,不过可以通过例子来说明。
<p lang="en">Hello!</p>
<p lang="en-us">Greetings!</p>
<p lang="en-au">G'day!</p>
<p lang="cy-en">Jrooana!</p>
*[lang|="en"] {color: red;} //选择 lang 属性等于 en 或以 en- 开头的所有元素
结果:前三个元素将被选中,则可应用样式,最后一个元素不能应用样式。
后代(上下文)选择器:( 在 CSS2 中,它们称为派生选择器 )
后代选择器对于有“祖先-后代”关系(父子关系是祖先-后代关系的特例)的元素而言。
在后代选择器中,规则左边的选择器一端的两个或多个选择器之间用空格结合符连接。每个空格结合符可以解释为“... 在 ... 找到”、“... 作为 ... 的一部分”、“... 作为 ... 的后代”,但是要求必须从右向左读选择器。
p em { color:red; } //把作为 p 元素后代的 em 元素的文本变为 红色
提示:两个元素之间的层次间隔可以是无限的。(易被忽略)
子元素选择器:
子元素选择器对于“父子”关系的元素而言。即在你如果不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素(直接相连),请使用子元素选择器(Child selector)。
在子元素选择器中,规则左边的选择器一端用子结合符(即大于号:>)连接。
h1 > strong {color:red;} //把作为 h1 元素子元素的 strong 元素变成红色
提示:子选择符两边可以有空白符,可以没有,这是可选的。
相邻兄弟选择器:
如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。
在相邻兄弟选择器中,规则左边的选择器一端用相邻兄弟结合符(即加号:+)连接。
h1 + p {margin-top:50px;} //增加紧接在 h1 元素后出现的段落的上边距
提示:用一个结合符只能选择两个相邻兄弟中的第二个元素。
li + li {font-weight:bold;} //会把列表中的第二个和第三个列表项变为粗体,第一个列表项不受影响。(假设列表是三项)
伪类选择器和伪元素选择器:
利用伪类选择器和伪元素选择器,可以为文档中不一定具体存在的结构指定样式,或者为某些元素(甚至是文档本身)的状态所指定的幻像类指定样式。
冒号(:)是伪类和为元素的“名片”,所有伪类和伪元素关键字前面都有一个冒号。
伪类选择器:
1.伪类简介:

2.提示:伪类顺序一般为“link-visited-focus-hover-active”。
3.常见误区: p:first-child之类的选择器被认为是选择p元素的第一个子元素。记住伪类的实质,它是把某种幻像类关联到与伪类相关的元素,是一种自身关联。
p:first-child正确理解:选择作为某元素第一个子元素的所有p元素
伪元素选择器:
1.伪类简介:

2.提示:使用 :first-letter 和 :first-line 的时候注意其限制。(在此不细说)
细说CSS选择器的更多相关文章
- 了解HTML CSS选择器操作和特性
子选择器 在CSS样式表中, 有时候我们需要为一个选择器进行再次的选择, 比如要为某段落标签下的<span>标签进行样式设定(<span>标签必须为段落标签下的第一代子元素, ...
- 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧
记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...
- css选择器
常用css选择器,希望对大家有所帮助,不喜勿喷. 1.*:通用选择器 * { margin: 0; padding: 0; } 选择页面上的全部元素,通常用于清除浏览器默认样式,不推荐使用. 2.#i ...
- dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来
dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...
- CSS选择器的权重与优先规则?
我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...
- css选择器的使用详解
-.css选择器的分类: 二.常用选择器详解: 1.标签选择器: 语法: 标签名 { 属性:属性值; } 代码示例: h1 { color: #ccc; font-size: 28px; } 2.类选 ...
- js,jq,css选择器
js获取节点: var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode; //得到s的父节点 var ns=s.nextSbiling; / ...
- CSS系列:CSS选择器
选择器(selector)是CSS中很重要的概念,所有HTML语言中的标记样式都是通过不同的CSS选择器来控制的.用户只需要通过选择对不同的HTML标签进行选择,并赋予各种样式声明,即可实现各种效果. ...
- CSS选择器 转
来自于:http://www.cnblogs.com/webblog/archive/2009/08/07/1541005.html 最近在研究jQuery的选择器,大家知道jQuery的选择器和cs ...
随机推荐
- luogg_java学习_08_设计模式_API
这篇博客总结了1天整,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 设计模式 在长期开发过程中,为了解决某些固定问题, 总结出的 ...
- Java--缓存热点数据,最近最少使用算法
1.最近最少使用算法LRU (Least recently used,最近最少使用) [实现]:最常见的是使用一个链表保存缓存数据 1.新数据插入到链表头部: 2.每当缓存命中(即缓存数据被访问),将 ...
- PHP程序员的技术成长规划
按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...
- Lind.DDD~实体属性变更追踪器的实现
回到目录 看着这个标题很复杂,大叔把它拆开说一下,实体属性-变更-追踪器,把它拆成三部分大家看起来就容易懂一些了,实体属性:领域实体里有自己的属性,属性有getter,setter块,用来返回和设置属 ...
- 001.Getting Started -- 【入门指南】
Getting Started 入门指南 662 of 756 people found this helpful Meng.Net 自译 1. Install .NET Core 到官网安装 .NE ...
- Windows8.1下安装NoSQL-- mongodb安装使用
1. 官方下载monodb:http://www.mongodb.org/downloads 现在最新版本3.0 2. 以下载Windows 64-bit为例官方最新版的没有分开, 32位和64位是应 ...
- SharePoint 2013 状态机工作流之扩展自定义状态
当我们使用SharePoint 2013的状态机工作流时,发现一个非常不爽的事情,就是SharePoint 所有的工作流状态,都是固定的那些,没办法显示我们自定义的状态,后来经过Google发现,原来 ...
- 如何基于OM模型使用C#在程序中给SharePoint的BCS外部数据类型的字段赋值
概述: 外部内容类型和数据,SharePoint从2010这个版本开始就对BCS提供非常强大的支持,点点鼠标就可以取代以前直接编辑XML的方式来设置SharePoint到SQL数据库的连接.非常方便地 ...
- 地理数据库 (Geodatabase) 版本管理
版本化地理数据库包含一些非版本化地理数据库中不存在的附加表格和记录.这些附加表和记录有助于长时间执行并行编辑.如果不进行版本化处理,则编辑者需要锁定数据并防止其他用户对数据进行编辑或查看.要使用此功能 ...
- 关于SharePoint 2013的工作流(一)
从去年开始,一直和SharePoint 2013工作流打交道.自己瞎摸索,以实现功能为目的.直到如今也不知道走的路是否正确. 一开始用WF4发现整个都不一样了,用的xaml无法写后端代码.Google ...