码迷,mamicode.com
首页 > Web开发 > 详细

CSS 选择器

时间:2016-08-06 11:15:44      阅读:582      评论:0      收藏:0      [点我收藏+]

标签:

CSS 选择器分为:元素选择器、分组选择器、通配符选择器、类选择器、ID 选择器、属性选择器、后代选择器、子元素选择器、相邻兄弟选择器、伪类、伪元素。
 

 
一. 元素选择器(p)
 
选择器可以是 HTML 元素,比如 p、h2、body,甚至是 html 本身。
 
# code 1 #selector type

<
style type="text/css"> body { margin: 0 auto; max-width: 50em; font-family: cursive, "Arial", sans-serif; line-height: 1.5; padding: 4em 1em; color: #555; } h2 { margin-top: 1em; padding-top: 1em; } h2, strong { color:#333; } </style> <body> <h2>《人类简史》书摘</h2> <p>金钱、社会地位、整形手术、豪宅、握有大权的职位,这些都不会给你带来<strong>快乐</strong>。想要有长期的快乐,只能靠血清素、多巴胺和催产素。</p> </body>
 

 
二. 分组选择器(h2, strong)
 
如果某些元素的样式是一样的,那可以把修饰这些样式的选择器,列为一组,选择器之间用逗号隔开。比如,# code 1 中我们就这样写了:
 
h2, strong {
    color:#333;
}
 

 
三. 通配符选择器(*)
 
显示为一个星号(*),表示匹配任意一个元素。是 CSS2 引入的。
 
......
 
通配符选择器可以看成是一个特殊的分组选择器,它是“列出了”文档中的所有元素进行的声明。
 

 
四. 类选择器(.)
 
一个点号(.)后面跟上类名,就是类选择器了。它可以单独使用,也可以和别的元素结合使用。
 
......
 
一个 class 值还可以包含一个词列表,各个词之间用空格分开:
 
......
 
上面的选择器称为多类选择器。
 

 
五. ID 选择器(#)
 
ID 选择器类似于类选择,不过也有一些差别:
 
1). ID 选择器以 # 号开头;
 
2). ID 选择器引用 id 属性中的值;
 
......
 
那 ID 选择器与类选择器有哪些不一样的地方呢?
 
1). 一个 id 值在 HTML 文档里只能用在一个元素上。这不同于 class 的值,上面我们讲到类选择器时,类名 important 被用到 p 和 h1 元素上,其实 important 还可以应用到更多的元素上,它修饰具有相同样式的一类元素。而一个 id 值唯一标记 HTML 文档里的一个元素!
 
2). 与类属性不同的是,ID 属性值不可以是词列表,这一点应该很好理解。
 
......
 
它是错的,一个 id 值唯一标记 HTML 文档里的一个元素。
 

 
六. 属性选择器([])
 
根据元素的属性或属性值,来选择元素,CSS2 引入。
 
将包含 title 属性的所有元素颜色设置为红色:
 
......
 
只对有 href 属性的 a 元素应用样式:
 
......
 
还可以根据多个属性进行选择,只需要将属性选择器连接在一起就可以了:
 
......
 
根据属性值进行选择:
 
......
 
如果属性值是个值列表,还用 = 进行匹配的话,那么必须要与属性值完全匹配才行:
 
......
 
问题来了,一定要与属性值完全匹配吗?不是的,看下面:
 
......
 
我们用 ~= 来实现部分属性值的匹配,这称为部分值属性选择器。
 
在 CSS2 之后,还发布了更多的部分值属性选择器,其中就有“子串匹配属性选择器”,包括 IE7 在内的许多浏览器都支持的,下面是这些选择器的简单总结:
 
......
 
最后为你介绍,特定属性选择器 |= :
 
......
 
这里会匹配 lang 属性的值为 en 或以 en 开头的所有元素。
 

 
七. 后代选择器(这里假装有个空格)
 
Descendant Selector,如果你希望对 ul 元素中的 em 使用样式,可以这样写:
 
......
 
代代之间用空格分开。上面的 em 元素不管嵌套的层数,样式效果始终对它有效。ul em 可以理解成“作为 ul 元素后代的任何 em 元素”。
 

 
八. 子元素选择器(>)
 
相比后代选择器对所有后代生效,子元素选择器(用 >)只对子元素有效,或者说只对“儿子”有效。
 
看,与上面 7.* code * 的代码一样,样式生效的只有“儿子”。
 
下面,是结合后代选择器和子选择器的例子:
 
......
 
这个选择器选择了 p 元素进行样式渲染,这个 p 元素是 td 的子元素,而 td 是类名为 company 的 table 元素的后代。
 

 
九. 相邻兄弟选择器(+)
 
如果要选择紧接在另一个元素后的元素(二者有相同的父元素),可以使用相邻父亲选择器(Adjacent sibling selector)。
 
......
 
例如,如果要增加紧接在 h1 元素后出现的段落的上边距,可以这样使用:
 
......
 
用一个结合符,只能选择两个相邻兄弟中的第二个元素,请看下面的例子:
 
......
 
上面的这个选择器,只会把第二、第三个列表项变为粗体,第一个列表项不受影响。
 

 
十. 伪类(:link)
 
先让我们来看一下,伪类有哪些。
 
:link       未被访问的链接的样式
:visited  已被访问的链接的样式
:hover    当鼠标悬浮在元素上方时,元素的样式
:active   被激活的元素样式
:focus    处于输入焦点状态的元素样式
:first-child 父元素的第一个子元素的样式
:lang      为不同的语言定义特殊的样式
 
这是伪类的语法:
......
或者
......
 
下面我们来对上面所列举的伪类,进行说明。
 
链接的不同状态(未访问、已访问、鼠标悬停、活动)可以有不同的显示样式:
 
......
 
为了能让链接的样式相称的显示出来,你需要按照这样的顺序去定义样式::link —— :visited —— :hover —— :active。
 
可以使用 :first-child 伪类,来选择所处父元素的第一个子元素:
 
......
 
上面的样式是在匹配第一个 p 元素和 li 元素。
 
下面是匹配第一个 p 元素里的 i 元素:
 
......
 
:lang 伪类使你有能力为不同的语言定义特殊的规则:
 
......
 

 
十一. 伪元素(first-letter)
 
伪元素与伪类相似,它有些这些选项:
 
:first-letter  文本第一个字母的样式
:first-line     文本第一行的样式
:before        在元素之前添加内容
:after           在元素之后添加内容
 
伪元素的语法与伪类一样:
......
或者
......
 
下面,我们还是按部就班的,对上面的伪元素进行说明。
 
我们用 first-letter 对 p 元素的第一个字母设置样式:
 
......
 
再用 first-line 对 p 元素的第一行文本设置样式:
 
......
 
然后同时使用 first-letter、first-line 对 p 元素的样式进行设置:
 
......
 
:before
 
......
 
:after
 
......
 
(完)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CSS 选择器

标签:

原文地址:http://www.cnblogs.com/zhangbao/p/5743401.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!