您的位置:首页 > Web前端 > CSS

CSS选择器

2016-06-15 10:05 656 查看

CSS元素选择器

最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。

CSS 元素选择器(类型选择器)可以设置 XML 文档中元素的样式。

CSS选择器分组

1、h2, p {color:gray;}

2、通配符选择器 * {color:red;}

这个声明等价于列出了文档中所有元素的一个分组选择器。利用通配选择器,只需敲一次键(仅一个星号)就能使文档中所有元素的 color 属性值指定为 red。

3、声明分组

对声明分组,一定要在各个声明的最后使用分号,这很重要:

h1 {
font: 28px Verdana;
color: blue;
background: red;
}


4、结合选择器和声明的分组

h1, h2, h3, h4, h5, h6 {
color:gray;
background: white;
padding: 10px;
border: 1px solid black;
font-family: Verdana;
}


类选择器

语法

使用以下语法向这些归类的元素应用样式,即类名前有一个点号(.),然后结合通配选择器:

*.important {color:red;}


如果您只想选择所有类名相同的元素,可以在类选择器中忽略通配选择器,这没有任何不好的影响:

.important {color:red;}


结合元素选择器

p.important {color:red;}


CSS 多类选择器

一个 class 值中可能包含一个词列表,各个词之间用空格分隔。

例如,如果希望将一个特定的元素同时标记为重要(important)和警告(warning),就可以写作:

<p class="important warning">
This paragraph is a very important warning.
</p>

css:

.important {font-weight:bold;}
.warning {font-style:italic;}
.important.warning {background:silver;}


ID 选择器

只能在文档中使用一次

与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次。

不能使用 ID 词列表

不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。

区分大小写

属性选择器

1、简单属性选择

例子 1

如果您希望把包含标题(title)的所有元素变为红色,可以写作:

*[title] {color:red;}


例子 2

与上面类似,可以只对有 href 属性的锚(a 元素)应用样式:

a[href] {color:red;}


例子 3

还可以根据多个属性进行选择,只需将属性选择器链接在一起即可。

例如,为了将同时有 href 和 title 属性的 HTML 超链接的文本设置为红色,可以这样写:

a[href][title] {color:red;}


例子 4

可以采用一些创造性的方法使用这个特性。

例如,可以对所有带有 alt 属性的图像应用样式,从而突出显示这些有效的图像:

img[alt] {border: 5px solid red;}


2、根据具体属性值选择

除了选择拥有某些属性的元素,还可以进一步缩小选择范围,只选择
4000
有特定属性值的元素。

例子 1

例如,假设希望将指向 Web 服务器上某个指定文档的超链接变成红色,可以这样写:

a[href="http://www.w3school.com.cn/about_us.asp"] {color: red;}


例子 2

与简单属性选择器类似,可以把多个属性-值选择器链接在一起来选择一个文档。

a[href="http://www.w3school.com.cn/"][title="W3School"] {color: red;}


根据部分属性值选择

如果需要根据属性值中的词列表的某个词进行选择,则需要使用波浪号(~)。

假设您想选择 class 属性中包含 important 的元素,可以用下面这个选择器做到这一点:

p[class~="important"] {color: red;}

img[title~="Figure"] {border: 1px solid gray;}

这个规则会选择 title 文本包含 "Figure" 的所有图像。没有 title 属性或者 title 属性中不包含 "Figure" 的图像都不会匹配。


子串匹配属性选择器

[abc^=”def”] 选择 abc 属性值以 “def” 开头的所有元素

[abc$=”def”] 选择 abc 属性值以 “def” 结尾的所有元素

[abc*=”def”] 选择 abc 属性值中包含子串 “def” 的所有元素

选择器描述
[attribute]用于选取带有指定属性的元素。
[attribute=value]用于选取带有指定属性和值的元素。
[attribute~=value]用于选取属性值中包含指定词汇的元素。
[attribute=value]
[attribute^=value]匹配属性值以指定值开头的每个元素。
[attribute$=value]匹配属性值以指定值结尾的每个元素。
[attribute*=value]匹配属性值中包含指定值的每个元素。

后代选择器

语法解释

在后代选择器中,规则左边的选择器一端包括两个或多个用空格分隔的选择器。选择器之间的空格是一种结合符(combinator)。每个空格结合符可以解释为“… 在 … 找到”、“… 作为 … 的一部分”、“… 作为 … 的后代”,但是要求必须从右向左读选择器。

有关后代选择器有一个易被忽视的方面,即两个元素之间的层次间隔可以是无限的

子元素选择器

如果您不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,请使用子元素选择器(Child selector)。

例如,如果您希望选择只作为 h1 元素子元素的 strong 元素,可以这样写:

h1 > strong {color:red;}


这个规则会把第一个 h1 下面的两个 strong 元素变为红色,但是第二个 h1 中的 strong 不受影响:

<h1>This is <strong>very</strong> <strong>very</strong> important.</h1>
<h1>This is <em>really <strong>very</strong></em> important.</h1>


相邻兄弟选择器

相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。

结合其他选择器

相邻兄弟结合符还可以结合其他结合符:

html > body table + ul {margin-top:20px;}


这个选择器解释为:选择紧接在 table 元素后出现的所有兄弟 ul 元素,该 table 元素包含在一个 body 元素中,body 元素本身是 html 元素的子元素。

伪类

伪类的语法:

selector : pseudo-class {property: value}


CSS 类也可与伪类搭配使用。

selector.class : pseudo-class {property: value}


:first-child 伪类

您可以使用 :first-child 伪类来选择元素的第一个子元素。

p:first-child {font-weight: bold;}
li:first-child {text-transform:uppercase;}


:lang 伪类

:lang 伪类使你有能力为不同的语言定义特殊的规则。在下面的例子中,:lang 类为属性值为 no 的 q 元素定义引号的类型:

属性描述
:active向被激活的元素添加样式。
:focus向拥有键盘输入焦点的元素添加样式。
:hover当鼠标悬浮在元素上方时,向元素添加样式。
:link向未被访问的链接添加样式。
:visited向已被访问的链接添加样式。
:first-child向元素的第一个子元素添加样式。
:lang向带有指定 lang 属性的元素添加样式。

伪元素

:first-line 伪元素

“first-line” 伪元素用于向文本的首行设置特殊样式。

在下面的例子中,浏览器会根据 “first-line” 伪元素中的样式对 p 元素的第一行文本进行格式化:

实例

p:first-line
{
color:#ff0000;
font-variant:small-caps;
}


:first-letter 伪元素

“first-letter” 伪元素用于向文本的首字母设置特殊样式:

伪元素可以与 CSS 类配合使用:

p.article:first-letter
{
color: #FF0000;
}

<p class="article">This is a paragraph in an article。</p>


上面的例子会使所有 class 为 article 的段落的首字母变为红色。

:before 伪元素

“:before” 伪元素可以在元素的内容前面插入新内容。

下面的例子在每个 <h1> 元素前面插入一幅图片:

h1:before
{
content:url(logo.gif);
}


:after 伪元素

“:after” 伪元素可以在元素的内容之后插入新内容。

下面的例子在每个 <h1> 元素后面插入一幅图片:
h1:after
{
content:url(logo.gif);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: