【CSS】使用CSS选择器

CCS选择器的作用是找出某类元素。以便使我们使用style元素或者外部样式表对这类元素设置样式。

1.使用CSS基本选择器

有些选择器使用起来非常简单,我们把这部分选择器称为基本选择器(basic selector)。开发人员可使用这类选择器在文档中进行比较宽泛的选择,也可以将其看作结合多种选择器进行特殊选择的基础。

1.1 选择所有元素

通用选择器匹配文档中的所有元素。它是最基本的选择器,不过使用很少,因为匹配过于广泛。

下面代码是一个使用通用选择器的样式示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
        *{border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span>apples</span> and oranges.</p>
<a href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

代码中定义的样式将选中的元素以细黑框包起,该选择器的显示效果如下:

上图开起来有点奇怪,因为通用选择器会匹配文档中的所有元素,包括html 和body 元素。通用选择器非常给力,但容易过头儿,因此使用之前请三思。

1.2 根据元素类型选择元素

指定元素类型作为选择器可以选取一个文档中该元素的所有实例(例如,如果想选中所有的a元素就可以使用a作为选择器)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
        a {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span>apples</span> and oranges.</p>
<a href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

PS:只需将元素类型用逗号分开即可将某个样式应用到多个元素类型。

1.3 根据类选择元素

类选择器采用全局属性 class 匹配指定类的元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
        .class2 {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span class="class2">apples</span> and oranges.</p>
<a href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

此例使用了选择器 .class2 。使用该选择器的效果是选中指定 class2 的所有类型的元素。

这个选择器有两种表示形式:一种是使用通用选择器,另一种是不使用。 *.class2 和 .class2 是等价的。第一种形式看起来更容易理解,但实际使用中第二个更常见。这种模式在CSS选择器中很常见。

如果逐个添加合适的选择器,你会发现所有选择器无非都是有效的过滤器:缩小前面的选择器的范围,匹配更少元素。这些选择器相互组合能够产生具体程度更高的匹配。

上面代码中指定 class2 的元素有两个: a 元素和 span 元素。效果图如下:

此处选择器的具体程度还可以更高,将与指定类匹配的元素限定为一种类型。要实现这个效果,将通用选择器替换为元素类型就可以了,如下面代码所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
        span.class2 {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span class="class2">apples</span> and oranges.</p>
<a href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

在这个例子中进一步缩小了选择器的范围,使它只匹配指定 class2的 span元素。效果图如下:

PS:如果想选择属于多个类的元素,可指定类名(不同类名之间用据点隔开)。例如, span.class1.class2 会选择同时指定 class1 和 class2 的元素。

1.4 根据ID选择元素

使用ID选择器可根据全局属性 id的值选择元素。

HTML文档中元素id属性的值必须唯一。这意味着只要使用ID选择器,查找的必定是单个元素。下面是一个示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
        #w3canchor {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a id="yexiaochaoanchor" class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span class="class2">apples</span> and oranges.</p>
<a id="w3canchor" href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

这个例子用选中了id为w3canchor的元素,效果图如下所示:

从这个示例来看,如果想为单个元素应用样式,使用元素的style属性可以达到同样的效果。确实,不过只有跟其他选择器组合使用,后一个选择器才能真正排上用场。

1.5 根据属性选择器选择元素

使用属性选择器能基于属性的不同方面匹配属性。

此处使用通用选择器可以匹配具有符合指定条件属性的所有元素(或指定类型的所有元素),不过,更常见的用法是不用通用选择器,而将选中条件放到[和]字符之间。下面代码展示了一个常用的属性选择器。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
        [href] {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a id="yexiaochaoanchor" class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span class="class2">apples</span> and oranges.</p>
<a id="w3canchor" href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

此例使用了最简单的属性选择器,它匹配的是所有具有 href 属性的元素,而不管属性的具体填的是什么。在示例HTML文档中,该选择器的选择效果是选中两个a 元素。

可以为待匹配的属性限定更多复杂的条件,下面列出了属性选择器支持的条件:

这里你补充说明一下最后两个条件。处理支持多个值且不同的值用空格分割的属性会用到~=条件,如全局属性 class。 来个例子如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
        [class~="class2"] {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a id="yexiaochaoanchor" class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span class="class2">apples</span> and oranges.</p>
<a id="w3canchor" href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

代码中使用了 class 全局属性,因为这是目前唯一一个可以接受多个值得属性。不过,要匹配class值无需使用属性选择器,类选择器会自动处理多个类成员。

上面这个选择器使用的条件是:匹配定义class属性,且class的值包括class2的元素。这个选择器的效果如下图所示:

若是一个属性值中包括多条用连字符分割的信息,这时就要用到|=条件, lang全局属性就是一个很好的例子。 lang属性可以跟包括区域子标记的言语说明符一起使用,例如,en-us 代表美国英语,en-gb 代表英国英语。下面代码展示了如何选中所有标记为en的元素,而无需枚举不同的区域(实际上还挺多)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       [lang|="en"] {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a lang="en-us" id="yexiaochaoanchor" class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span lang="en-gb" class="class2">apples</span> and oranges.</p>
<a lang="en" id="w3canchor" href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

该选择器的效果如下图所示。注意选择器除了匹配带有子标记的元素,也匹配了第二个a元素,这个a元素并没有区域子标记(也就是lang元素的值是en,而不是en-us或en-gb)。

2. 符合选择器

组合使用不同的选择器可以匹配更特定的元素。有的符合选择器能将目标样式应用到更多元素,有的符合选择器则会锁定更少的元素,总之会选择非常具体。

2.1 并集选择器

创建由逗号分隔的多个选择器可以将样式应用到单个选择器匹配的所有元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       a,[lang|="en"] {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a id="yexiaochaoanchor" class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span lang="en-uk" class="class2">apples</span> and oranges.</p>
<a id="w3canchor" href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

在代码清单中,指定了一个类型选择器(a)和一个属性选择器([lang|="en"]),两者之间用逗号隔开(a,[lang|="en"])。浏览器会以此求每个选择器的值,然后将样式应用到匹配元素。你可以选择任意混搭不同类型的选择器,不要求它们匹配的元素有什么共性。效果图如下:

可以根据自己的需要组合任意多个选择器,只需将不同的选择器之间用逗号分开即可。

2.2 后代选择器

后代选择器用于选择包含在其他元素中的元素。

先应用第一个选择器,再从匹配元素的后代中找出匹配第二个选择器的元素。后代选择器会匹配任意包含在匹配第一个选择器的元素中的元素,而不仅是直接子元素。简单例子如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       p span {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a id="yexiaochaoanchor" class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span lang="en-uk" class="class2">apples</span> and oranges.</p>
<a id="w3canchor" href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

代码中的选择器匹配 p 元素的后代 span 元素。对于这个示例中的HTML文档,直接用 span 元素选择器能得到同样的效果,不过这里的方法更灵活,看一下下面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       #mytable td{border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<table id="mytable">
    <tr><th>Name</th><th>City</th></tr>
    <tr><td>Adam Freeman</td><td>London</td></tr>
    <tr><td>Joe Smith</td><td>New York</td></tr>
    <tr><td>Anne Jones</td><td>Paris</td></tr>
</table>
<p>I like <span lang="en-uk">apples</span> and oranges.</p>

<table id="othertable">
    <tr><th>Name</th><th>City</th></tr>
    <tr><td>Peter Peterson</td><td>Boston</td></tr>
    <tr><td>Chuck Fellows</td><td>Paris</td></tr>
    <tr><td>Jane Firth</td><td>Paris</td></tr>
</table>
</body>
</html>

在代码中,定义了两个简单的表格,每个表格定义了一个id属性。使用ID选择器选中id值为mytable的表格,然后选中表格包含的td元素。效果图如下:

这个例子中选择的不是直接后代,跳过了tr元素,直接匹配td元素。

2.3 选择子元素

子代选择器跟后代选择器很像,不过只选择匹配元素中的直接后代。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
      body > * > span, tr > th {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<table id="mytable">
    <tr><th>Name</th><th>City</th></tr>
    <tr><td>Adam Freeman</td><td>London</td></tr>
    <tr><td>Joe Smith</td><td>New York</td></tr>
    <tr><td>Anne Jones</td><td>Paris</td></tr>
</table>
<p>I like <span lang="en-uk">apples</span> and oranges.</p>

<table id="othertable">
    <tr><th>Name</th><th>City</th></tr>
    <tr><td>Peter Peterson</td><td>Boston</td></tr>
    <tr><td>Chuck Fellows</td><td>Paris</td></tr>
    <tr><td>Jane Firth</td><td>Paris</td></tr>
</table>
</body>
</html>

在这个选择器中,创建了一个子选择器的并集选择器。首先找到属于body元素任意子元素的子元素的span,然后找到tr元素的子元素th,从下图中可以看到有哪些元素匹配这个选择器:

2.4 选择兄弟元素

使用相邻兄弟选择器可以选择紧跟在某元素之后的元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       p + a {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span lang="en-uk" class="class2">apples</span> and oranges.</p>
<a href="http://w3c.org">Visit the W3C website</a>
<a href="http://googel.com">Visit Google</a>
</body>
</html>

代码中的选择器会匹配紧跟在p元素之后的a元素。从下图可以看到,文档中只有一个a元素符合要求,即指向W3C网站的超链接。

使用普通兄弟选择器选择范围会稍微宽松一些,它匹配的元素在指定元素之后,但不一定相邻。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       p ~ a {border:thin black solid;padding:4px;}
    </style>
</head>
<body>
<a class="class1 class2" href="http://yexiaochao.github.io">Visit the website</a>
<p>I like <span lang="en-uk" class="class2">apples</span> and oranges.</p>
<a href="http://w3c.org">Visit the W3C website</a>
<a href="http://googel.com">Visit Google</a>
</body>
</html>

3. 使用伪元素选择器

CSS中还定义了伪选择器(pseudo-selector),它们提供了更复杂的功能,但并非直接对应HTML文档定义的元素。伪选择器分两种:伪元素和伪类。 顾名思义,伪元素实际上并不存在,它们是CSS提供的额外“福利”,为了方便你选择文档内容。

3.1 使用::first-line 选择器

::first-line 选择器匹配文本块的首行。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       ::first-line {background-color: gray; color:white;}
    </style>
</head>
<body>
<p>Fourscore and seven years ago our fathers brought forth
    on this continent a new nation, conceived in liberty, and
    dedicated to the proposition that all men are created equal.</p>

<p>I like <span>apples</span> and oranges.</p>

<a href="http://yexiaochao.github.io">Visit the website</a>
</body>
</html>

这个示例中只是用了这一个选择器,不过伪元素选择器也可以作为修饰符跟其他选择器一块儿使用。假如,假设我想选中p元素的首行,就可以指定p::first-line 作为选择器。

PS:伪元素选择器的前缀是两个冒号字符(::),但浏览器认为选择器只有一个冒号(也就是说将:first-line 看作 :first-line)。这样它的格式就跟伪类选择器的格式一致了,这是为了向后兼容。

上面的代码效果中,如果浏览器窗口调整大小,浏览器会重新评估那些内容属于文档的首行。这就意味着首行样式总是可以成功应用的。

3.2 使用 ::first-letter 选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       ::first-letter {background-color: gray; color:white;border: thin black solid; padding: 4px;}
    </style>
</head>
<body>
<p>Fourscore and seven years ago our fathers brought forth
    on this continent a new nation, conceived in liberty, and
    dedicated to the proposition that all men are created equal.</p>

<p>I like <span>apples</span> and oranges.</p>

<a href="http://yexiaochao.github.io">Visit the website</a>
</body>
</html>

3.3 使用:before 和 :after 选择器

这两个选择器跟之前的选择器不太一样,因为它们会生成内容,并将其插入文档。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
       a:before {content:"Click here to"}
       a:after{content:"!"}
    </style>
</head>
<body>
<a href="http;//apress.com">Visit the Apress website</a>
<p>I like <span>apples</span> and oranges.</p>
<a href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

在此示例中,选中了a元素,对它使用了 :before和:after为选择器。使用这类选择器的时候,通过设置content属性的值可以指定要插入的内容。这个属性比较特别,只能跟伪选择器一起使用。在上述代码中,Click here to 会插入a元素的内容前,感叹号会插入a元素的内容之后。效果图如下:

 3.4 使用CSS计数器

:before 和 :after 选择器经常跟CSS计数器特性一起使用,结合两者可生成数值内容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <style type="text/css">
        body{counter-reset: paracount;}
        p:before{content:counter(paracount) ". "; counter-increment: paracount;}
    </style>
</head>
<body>
<a href="http;//apress.com">Visit the Apress website</a>
<p>I like <span>apples</span> and oranges.</p>
<p>I also like <span>mangos</span> and cherries.</p>
<a href="http://w3c.org">Visit the W3C website</a>
</body>
</html>

此例效果图如下:

要创建计数器,需要使用专门的counter-reset属性为计数器设置名称:

counter-reset: paracount;

这一行代码会初始化名为 paracount 的计数器,将它的值设置为1.也可以指定其他初始值,只要在计数器名称后面添加一个数字即可:

counter-reset: paracount 10;

效果图:

如果想多定义几个计数器,只需在同一条counter-reset声明中添加计数器名称就可以了(也可以带上初始值),像这样:

counter-reset: paracount 10 othercounter;

这条声明创建了两个计数器:一个名为paracount,初始值为10;另一个名为othercounter,初始值为1。计数器初始化后就能作为content属性的值,跟:before和:after选择器一起使用来指定样式了,像这样:

content:counter(paracount) ".";

这条声明用在包括:before的选择器中,其效果是将当前计数器的值呈现在选择器匹配的所有元素之前,此处,还要在相应的值后面追加一个句点和空格。计数器的值默认表示为十进制数(1、2、3等) ,不过,也可以指定其他数值格式,像这样:

content:counter(paracount, lower-alpha) ". ";

此处对计数器添加了参数lower-alpha,其功能是指定数值样式。这个参数可以是list-style-type属性支持的任意值。

counter-increment 属性专门用来设置计数器增量,该属性的值是要增加计数的计数器的名称,像这样:

counter-increment: paracount;

计数器默认增量为1,当然也可以自行指定其他增量,像这样:

counter-increment: paracount 2;

效果图:

时间: 2024-10-12 10:26:42

【CSS】使用CSS选择器的相关文章

(2)css的复合选择器与特性

css的复合选择器与特性 在本篇学习资料中,将深入了解css的相关概念,上一篇介绍的3种基本选择器的基础上,学习3种由基本选择器复合构成的选择器,然后再介绍css的两个重要的特性. 1.复合选择器 复合选择器就是两个或多个基本选择器,通过不同的方式连接成的选择器. 复合选择器的三种类型:交集选择器.并集选择器.后代选择器. (1)交集选择器 “交集”复合选择器由两个选择器直接连接构成:其中第一个必须是标记选择器,第二个必须是类别选择器或者ID选择器:这两个选择器之间不能有空格. 例如:下图声明了

CSS 定位和选择器

CSS 定位 CSS 定位 (Positioning) 属性允许你对元素进行定位. CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务. 一切皆为框 div.h1 或 p 元素常常被称为块级元素.这意味着这些元素显示为一块内容,即“块框”.与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”. 使用 display 属性改变生成的框的类型.这意味着

css同配选择器

<!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus?"> <meta name="Author" content=""> <meta name="K

CSS基础,选择器

一.css:      是层叠样式,用于美化修饰页面的二.html与css的区别    html作用:                   决定了网页的内容和结构    css作用:        美化网页,具体说是美化修饰html标记三.css语法:    选择器{          属性1:值1:           属性2:值2:          }      四.基本选择器:        html标记选择器.类选择器.id选择器 html标记选择器:       声明时:选择器名是h

CSS的六大选择器

选择器:选择器是一种模式,用于选择需要添加样式的元素. 首先简述六大选择器 基本选择器 标签选择器 类选择器 ID选择器 高级选择器 层次选择器 结构伪类选择器 属性选择器 其中基本选择器与层次选择器较为常用. 一.基本选择器 1.标签选择器 使用HTML标签来设置标签内的图文样式. 2.类选择器 使用class属性定义标签类值,指定某一类属性值来定义其样式.  <h1 class="classname"></h1>  .classname{font-size:

CSS基本功先生——选择器

前边我们已经说过CSS的认识和盒子模型,并且讲到了他的用途,详情大家看这篇文章即可.http://blog.csdn.net/lovemenghaibin/article/details/41148629 导入CSS(导入命名空间) 我们就一点一点的说,首先他是为了修饰网页的,也就是修饰HTML中的元素的,之所以说他方便,主要是他能对HTML中的每个元素集中处理,就好像我们的函数一样,但是我们要使用某个函数的话是不是就首先要导入他的命名空间呢,在HTML中也是一样的,当然方法稍微有点差异,但是思

css之html选择器---shinepans

css1.css: .s1{ /*类选择器*/ color:pink; font-size:30px; /*font-weight 粗体等 font-style normal italic:斜体 oblique倾斜的字体*/ text-decoration:line-through; } .s2{ color:red; font-size:25px; font-style:italic; text-decoration:underline; } .s3{ color:blue; font-siz

css的各种选择器

一.基本选择器 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元素 4. #footer id选择器,匹配所有id属性等于footer的元素 二.多元素的组合选择器 5. E,F 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔 6. E F 后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔 7. E > F 子元素选择器,匹配所有E元素的子元素F

CSS基础及选择器

CSS 概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外部样式表可以极大提高工作效率 外部样式表通常存储在 CSS 文件中 多个样式定义可层叠为一 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 选择器通常是您需要改变样式的 HTML 元素. 每条声明由一个属性和一个值组成. 属性(property)是您希望设置的样式属性(

CSS伪类选择器active模拟JavaScript点击事件

一.说明 设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式. IE7及更早浏览器只支持a元素的:active,从IE8开始支持其它元素的:active. 另:如果需要给超链接定义:访问前,鼠标悬停,当前被点击,已访问这4种伪类效果,而又没有按照一致的书写顺序,不同的浏览器可能会有不同的表现.超链接的4种状态,需要有特定的书写顺序才能生效.注意,a:hover必须位于a:link和a:visited之后,a:active必须位于a:hover之后.可靠的顺序是:l(link)ov(v