page contents

css选择器有哪些?

要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器。

attachments-2021-07-gFUsMXpO60f8d96abe6eb.jpg

要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器。

㈠什么是选择器?

每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code] 在{}之前的部分就是“选择器”。

“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素。

㈡CSS的五大选择器

⑴标签选择器(元素选择器)

⑵ID选择器(唯一性,一次引用)

⑶类选择器(单类选择器,多类选择器)

⑷属性选择器(简单属性选择,具体属性选择,部分属性选择, 特定属性选择)

⑸派生选择器(后代选择器(descendant selector),子元素选择器(child selector),相邻兄弟选择器(Adjacent sibling selector)) 

㈢元素选择器(标签选择器)

一个完整的HTML页面是由很多不同的标签组成。标签选择器:指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的CSS样式。

如果设置 HTML 的样式,选择器通常将是某个 HTML 元素,比如 p、h1、em、a,甚至可以是 html 本身。

例如:

html {background-color: black;}

p {font-size: 30px; backgroud-color: gray;}

h2 {background-color: red;}

以上css代码会对整个文档添加黑色背景;将所有p元素字体大小设置为30像素同时添加灰色背景;对文档中所有h2元素添加红色背景。

㈣ID 选择器

⑴ID 选择器允许以一种独立于文档元素的方式来指定样式。

⑵ID 选择器可以为标有特定 ID 的 HTML 元素指定特定的样式。 根据元素ID来选择元素,具有唯一性,这意味着同一id在同一文档页面中只能出现一次。

⑶id 选择器以 "#" 来定义。

例如:在css中,下面的两个 id 选择器,第一个可以定义元素的颜色为红色,第二个定义元素的颜色为黄色:

    #red{color:red;}

   #yellow{color:yellow;}

下面的 HTML 代码中,id 属性为 red 的 p 元素显示为红色,而 id 属性为 green 的 p 元素显示为绿色。

  <p id="red">这个段落是红色。</p>

  <p id="yellow">这个段落是黄色。</p>

㈤类选择器

类选择器使用类名来选择元素,前提是要在HTML中,给元素定义一个class的属性,class="类名",然后使用"."进行标识,后面紧跟类名。

(1)单类选择器

类选择器允许以一种独立于文档元素的方式来指定样式。该选择器可以单独使用,也可以与其他元素结合使用。

①修改 HTML 代码

在使用类选择器之前,需要修改具体的文档标记,以便类选择器正常工作。为了将类选择器的样式与元素关联,必须将 class 指定为一个适当的值。

请看下面的 HTML 代码:

<h1 class="important">

This heading is very important

</h1> 

<p class="impportant">

This paragraph is very important.

</p>

在上面的代码中,两个元素的 class 都指定为 important:第一个标题( h1 元素),第二个段落(p 元素)。 

②语法

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

*.important {color:red;}

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

.important {color:red;}

③结合元素选择器

类选择器可以结合元素选择器来使用。

♧例如,只让段落显示为红色文本:

p.important {color:red;}

选择器现在会匹配 class 属性包含 important 的所有 p 元素,但是其他任何类型的元素都不匹配,不论是否有此 class 属性。

选择器 p.important 解释为:“其 class 属性值为 important 的所有段落”。 因为 h1 元素不是段落,这个规则的选择器与之不匹配,因此 h1 元素不会变成红色文本。 

♧例如:为 h1 元素指定不同的样式,可以使用选择器 h1.important:

p.important {color:red;}

h1.important {color:blue;}

⑵多类选择器

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

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

          <p class="important warning">

                This paragraph is very important warning.

           </p>

注:这两个词的顺序无关紧要,写成 warning important 也可以。

假设 class 为 important 的所有元素都是粗体,而 class 为 warning 的所有元素为斜体,class 中同时包含 important 和 warning 的所有元素还有一个银色的背景 。

就可以写作

.important {font-weight:bold;}

.warning{font-style:italic;}

.important .warning{background:silver;}

通过把两个类选择器链接在一起,仅可以选择同时包含这些类名的元素(类名的顺序不限)。

如果一个多类选择器包含类名列表中没有的一个类名,匹配就会失败。

㈥属性选择器

属性选择器可以根据元素的属性及属性值来选择元素。

⑴简单属性选择

如果希望选择有某个属性的元素,而不论属性值是什么,可以使用简单属性选择器。

例子 1:把包含标题(title)的所有元素变为红色,可以写作:

*[title] {color:red;}

 

例子 2:只对有 href 属性的锚(a 元素)应用样式:

a[herf] {color:red;}

 

例子 3:根据多个属性进行选择,只需将属性选择器链接在一起即可。

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

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

 

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

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

⑵根据具体属性值选择

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

a [href="http://www.baidu.com"] {color:red;}

 

例子 2:把多个属性-值选择器链接在一起来选择一个文档。

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

这会把第一个超链接的文本变为红色,但是第二个或第三个链接不受影响:

注意:这种格式要求必须与属性值完全匹配

如果属性值包含用空格分隔的值列表,匹配就可能出问题。

⑶根据部分属性值选择

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

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

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

注意:如果忽略了波浪号,则说明需要完成完全值匹配。

⑷特定属性选择类型

举例:*[lang |="en"] {color:red;}

上面这个规则会选择 lang 属性等于 en 或以 en- 开头的所有元素。因此,以下示例标记中的前三个元素将被选中,而不会选择后两个元素:

attachments-2021-07-e5rGwhEF60f8d83e0da4b.jpg

㈦后代选择器

⑴后代选择器(descendant selector)又称为包含选择器。后代选择器可以选择作为某元素后代的元素。

⑵在后代选择器中,规则左边的选择器一端包括两个或多个用空格分隔的选择器。选择器之间的空格是一种结合符(combinator)。

⑶每个空格结合符可以解释为“... 在 ... 找到”、“... 作为 ... 的一部分”、“... 作为 ... 的后代”,但是要求必须从右向左读选择器。

举例:只对 h1 元素中的 em 元素应用样式,可以这样写:

           h1 em {colopr:red;}

⑴上面这个规则会把作为 h1 元素后代的 em 元素的文本变为 红色。其他 em 文本(如段落或块引用中的 em)则不会被这个规则选中.

⑵h1 em 选择器可以解释为 “作为 h1 元素后代的任何 em 元素”。如果要从左向右读选择器,可以换成以下说法:“包含 em 的所有 h1 会把以下样式应用到该 em”。

具体应用:

可以使 HTML 中不可能实现的任务成为可能。假设有一个文档,其中有一个边栏,还有一个主区。边栏的背景为蓝色,主区的背景为白色,这两个区都包含链接列表。不能把所有链接都设置为蓝色,因为这样一来边栏中的蓝色链接都无法看到。解决方法是使用后代选择器。在这种情况下,可以为包含边栏的 div 指定值为 sidebar 的 class 属性,并把主区的 class 属性值设置为 maincontent。

编写以下样式:

div.sidebar {background:blue;}

div.maincontent {background:white;]

div.sidebar a:link {color:white;}

div.maincontent a:link {color:blue;} 

㈧子元素选择器

⑴子元素选择器(Child selectors)只能选择作为某元素子元素的元素。

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

⑶子选择器使用了大于号(子结合符)。子结合符两边可以有空白符,这是可选的。

 

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

          h1 > strong {color:red;}

 如果从右向左读,选择器 h1 > strong 可以解释为“选择作为 h1 元素子元素的所有 strong 元素”。      

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

attachments-2021-07-hWKOTKKw60f8d84ed6e0c.jpg       

 ㈨相邻兄弟选择器

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

⑵相邻兄弟选择器使用了加号(+),即相邻兄弟结合符(Adjacent sibling combinator)。与子结合符一样,相邻兄弟结合符旁边可以有空白符。

 例如:如果要增加紧接在 h1 元素后出现的段落的上边距,可以这样写:

h1 + p {margin-top:50px;}

这个选择器读作:“选择紧接在 h1 元素后出现的段落,h1 和 p 元素拥有共同的父元素”。

 具体解释:请看下面这个文档树片段:

attachments-2021-07-L5tSyxGP60f8d86304cc4.jpg

在上面的片段中,div 元素中包含两个列表:一个无序列表,一个有序列表,每个列表都包含三个列表项。这两个列表是相邻兄弟,列表项本身也是相邻兄弟。

不过,第一个列表中的列表项与第二个列表中的列表项不是相邻兄弟,因为这两组列表项不属于同一父元素(最多只能算堂兄弟)。

简单来说:ul与ol是相邻兄弟,而ul里面的列表项与ol里面的列表项不是相邻兄弟。

注意用一个结合符只能选择两个相邻兄弟中的第二个元素。请看下面的选择器:

li + li {font-weight:bold;}

上面这个选择器只会把列表中的第二个和第三个列表项变为粗体。第一个列表项不受影响。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

程序员编程交流QQ群:805358732

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-ycCaRMFh62ad46a51d18b.jpeg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. Pack 1131 文章
  3. 小柒 1038 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章