前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS入门5-选择器

CSS入门5-选择器

作者头像
love丁酥酥
发布2018-08-27 15:17:39
8260
发布2018-08-27 15:17:39
举报
文章被收录于专栏:coding for love

(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!)

(注2:更多内容请查看我的目录。)

1. 选择器简介

大家都参加过学校运动会开幕式吧,或者看过电视节目中的开幕式。不同的队伍有不同的穿着,不同的口号和队形,不同的人有不同的职责,站位也不一样。那么如果你作为开幕式的负责人,你该如何安排呢?让哪个队伍穿什么颜色的衣服,哪个人负责在前面举旗,哪些人喊什么口号,做什么动作。作为负责人,你会如何安排下去呢?比如,你准备了白色,蓝色,绿色的衣服,你得决定哪些人来穿什么颜色的衣服吧,你可能会安排说,一年级学生统一穿蓝色。这里,一年级学生就是你选择的对象,蓝色衣服就是他们的表现样式。同样你也可以说所有男生要穿黑裤子,每班班长要站出来扛大旗,这里你会发号各种指令,让队伍表现的如你所愿,但是每一种指令都会匹配到某个或者某一类人身上,这里你指派的对象就是选择器了。

而对于css来讲,它的选择器就是能帮他找到指定元素的方法。

2. 选择器分类

我们来回忆一下html元素,指的是从开始标签(start tag)到结束标签(end tag)的所有代码,它可以拥有属性和内容。如下所示:

代码语言:javascript
复制
<p>hi</p>
<p>hello</p>
<p>你好</p>
<ul>
    <li>第一行</li>
    <li>第二行</li>
    <li>第三行</li>
    ...
    <li>倒数第二行</li>
    <li>最后一行</li>
</ul>
<div>
    <p>hi</p>
    <p>hello</p>
    <p>你好</p>
</div>

2.1 唯一标识-id选择器

我们想找到如上所述代码的第一行的hi,让它显示成蓝色,也就是准确找到某一个元素给他匹配指定样式有什么办法呢?我们可以给他一个唯一识别的id,就像你入学时学校分配给你的学号,或者你的身份证号,这些是唯一的,只属于你的号码。所以找到某个元素,可以使用id选择器。

id选择器

用法说明:

代码语言:javascript
复制
选择器:#id
示例:#key
作用:选择“id=key”的元素
特征:#开头

用法示例:

代码语言:javascript
复制
<p id="sayHi">hi</p>

找到id并匹配样式的方法如下:

代码语言:javascript
复制
#sayHi {color:blue;}

请记住,id选择器是唯一能准确地找到某个元素的办法

2.2 基础标签类选择-元素选择器和类选择器

现在考虑一个需求,你想要所有的运动员穿运动服,长跑运动员穿白色运动服,田径运动员穿红色运动五,怎么办?喊出所有人的学号吗,显然不可能。我们得为这些人打一个标签。其实html就是这么干的,每一类元素都有自己的标签,就是元素名或者标签名,如果你想操作的这一类元素不是已经拥有某个标签名的元素,你也可以为他们专门定义一个类名。这就是我们的元素选择器和类选择器。

元素选择器:

用法说明:

代码语言:javascript
复制
选择器:element
示例:p
作用:选择所有p元素
特征:标签名

用法示例:

代码语言:javascript
复制
p {color: red;}
div {width: 100px;}

类选择器:

用法说明:

代码语言:javascript
复制
选择器:.class
示例:.val
作用:选择所有class="val"的元素
特征:.开头

用法示例:

代码语言:javascript
复制
<p class="blue">hi</p>
<p class="blue">hello</p>
代码语言:javascript
复制
.blue {color:blue;}

2.3 特征选择-属性选择器

每个人都有一些特征,比如身高。在队伍中,我们往往会让高的人站后面,魁梧的人举旗帜等等。html中的元素也拥有众多的特征-属性。其实id和class也属于属性,只不过他们是特殊的具有标识功能的属性。

属性选择器:

用法说明:

代码语言:javascript
复制
选择器:[attribute]
示例:[target]
作用:选择所有带有target属性的元素
特征:中括号包围
代码语言:javascript
复制
选择器:[attribute=value ]
示例:[target="_blank“]
作用:选择所有target="_blank"属性的元素
特征:中括号包围,=链接
代码语言:javascript
复制
选择器:[attribute~=value ]
示例:[title~="_flower“]
作用:选择所有title属性包含单词“flower”的元素
特征:中括号包围,~=链接,属性中包含独立的单词为value
代码语言:javascript
复制
选择器:[attribute|=value ]
示例:[lang|="en“]
作用:选择所有lang属性以“en”单词开头的元素
特征:中括号包围,|=链接,属性中必须是完整且唯一的单词,或者以-分隔开
代码语言:javascript
复制
选择器:[attribute^=value ] 
示例:[src^="http“]
作用:选择所有src属性以“http”字符串开头的元素
特征:中括号包围,^=链接
代码语言:javascript
复制
选择器:[attribute$=value ]
示例:[src$=".jpg“]
作用:选择所有src属性以“.jpg”字符串结尾的元素
特征:中括号包围,$=链接
代码语言:javascript
复制
选择器:[attribute*=value ]
示例:[src*="abc“]
作用:选择所有src属性包含“abc”字符串的元素
特征:中括号包围,*=链接

用法示例:

代码语言:javascript
复制
<p otitle="sayhi">hi</p>
<p otitle="sayhi">hello</p>
代码语言:javascript
复制
[otitle] {color:blue;}

2.4 隐藏标签类选择-伪类和伪元素

前面提到了基础标签类选择,就是元素选择器,和类选择器,这些都是在html的结构中注明的选择器。css还为我们提供了特殊的选择器,能够帮助我们像类和元素一样去做出更复杂的选择。

2.4.1伪类选择器

效果就像给某些特定的元素添加一个类,当然该元素是已存在的。伪类的种类众多,可以参考这两篇文章CSS选择器深入理解CSS伪类。(因为这节主要是概念内容,从定义和示例去理解记忆即可,或者在使用中多学习留意,不必刻意解读和记忆,也不必做流水账的罗列,大家有兴趣可以多看看文档亦可)。下面这段对于伪类的区分很有意思,大家可以参考一下:

伪类顺序:link-visited-focus-hover-active

1、静态伪类(只应用于超链接)

  注意visited伪类只能设置字体颜色、边框颜色、outline颜色的样式

代码语言:javascript
复制
:link       未访问
:visited    已访问
a:link{color: red;}
a:visited{color: green;}

2、动态伪类(可应用于任何元素)

代码语言:javascript
复制
:focus     拥有焦点(IE7-不支持)
:hover     鼠标停留(IE6-不支持给<a>以外的其他元素设置伪类)
:active    正被点击(IE7-不支持给<a>以外的其他元素设置伪类)

3、目标伪类:target(IE8-不支持)

匹配锚点对应的目标元素

代码语言:javascript
复制
:target{color: red;}
#test :target{color: red;}//id为test的目标元素

4、UI元素伪类(IE8-不支持)

代码语言:javascript
复制
:enabled    可用状态
:disabled    不可用状态
:checked    选中状态

示例

代码语言:javascript
复制
input:enabled{color: red}
[注意]input和:和enabled之间都不可以有空格

5、结构伪类(IE8-不支持)

代码语言:javascript
复制
E:first-child(IE6-不支持) 父元素的第一个子元素,且该子元素是E,与E:nth-child(1)等同
E:last-child(IE6-不支持) 父元素的最后一个子元素,且该子元素是E,与E:nth-last-child(1)等同
:root 选择文档的根元素,即<html>元素
E F:nth-child(n) 选择父元素的第n个子元素,父元素是E,子元素是F
E F:nth-last-child(n) 选择父元素的倒数第n个子元素,父元素是E,子元素是F
E F:nth-of-type(n) 选择父元素的具有指定类型的第n个子元素,父元素是E,子元素是F
E F:nth-last-of-type(n) 选择父元素的具有指定类型的倒数第n个子元素,父元素是E,子元素是F
E:first-of-type 选择父元素中具有指定类型的第1个子元素,与E:nth-of-type(1)相同
E:last-of-type 选择父元素中具有指定类型的最后1个子元素,与E:nth-last-of-type(1)相同
E:only-child 选择父元素中只包含一个子元素,子元素是E
E:only-of-type 选择父元素中只包含一个同类型的子元素,子元素是E
E:empty 选择没有子元素的元素,而且该元素也不包含任何文本节点
  [注意]n可以是整数(从1开始),也可以是公式,也可以是关键字(even、odd)

示例:

代码语言:javascript
复制
p:first-child    代表的并不是<p>的第一个子元素,而是<p>元素是某元素的第一个子元素
p > i:first-child    匹配所有<p>元素中的第一个<i>元素
p:first-child i 匹配所有作为第一个子元素的<p>元素中的所有<i>
元素
6、:lang 相当于|=属性选择器(IE7-不支持)
p:lang(en) 匹配语言为"en"的<p>

2.4.2 伪元素选择器

效果就像专门创造一个虚拟的元素并选中,每个选择器只能有一个伪元素且必须放在最后。

代码语言:javascript
复制
选择器::first-letter
示例:p:first-letter
作用:选择每个p元素的首字母
代码语言:javascript
复制
选择器::first-line
示例:p:first-line
作用:选择每个p元素的首行
代码语言:javascript
复制
选择器::first-child
示例:p:first-child
作用:选择属于父元素的第一个子元素的每个 <p> 元素。
代码语言:javascript
复制
选择器::before
示例:p:befor
作用:在每个p元素的内容之前插入内容
代码语言:javascript
复制
选择器::after
示例:p:after
作用:在每个p元素的内容之后插入内容
代码语言:javascript
复制
选择器:::selection
示例:::selection
作用:选择被用户选取的元素部分

注意:css3为了区分伪类和伪元素,引入了::来标记伪元素。

2.3 关系选择-社群关系,亲戚关系

2.3.1 社群关系-分组选择器

分组选择器:

代码语言:javascript
复制
选择器:element, element
示例:div, p
作用:选择所有div元素和所有p元素
特征:,连接,可以翻译成“和”

2.3.2 亲戚关系-后代选择器,子代选择器,通用兄弟选择器和相邻兄弟选择器

后代选择器:

代码语言:javascript
复制
选择器:element element
示例:div p
作用:选择所有div元素后代的所有p元素
特征:空格连接,可以翻译成“后代的”

子代选择器:

代码语言:javascript
复制
选择器:element>element
示例:div>p
作用:选择所有div元素子代的所有p元素
特征:">"连接,可以翻译成“子代的”

通用兄弟选择器:

代码语言:javascript
复制
选择器:element~element
示例:div~p
作用:选择所有div元素兄弟的所有p元素
特征:~连接,可以翻译成“兄弟的”

相邻兄弟选择器:

代码语言:javascript
复制
选择器:element+element
示例:div+p
作用:选择所有div元素相邻后一个兄弟的所有p元素
特征:+连接,可以翻译成“相邻后一个兄弟”

2.5 通配选择器

就好像教官在喊:“全体都有”,选择所有的元素

通配选择器:

代码语言:javascript
复制
选择器:*
示例:*
作用:选择所有元素

参考

CSS选择器

CSS Selectors

深入理解伪元素

深入理解CSS伪类

W3school-CSS 选择器参考手册

css属性选择器=,|=,^=,$=,=的区别 (学习笔记)

CSS3伪类和伪元素的特性和区别

详解 CSS 属性 - 伪类和伪元素的区别

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.12.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 选择器简介
  • 2. 选择器分类
  • 2.1 唯一标识-id选择器
  • 2.2 基础标签类选择-元素选择器和类选择器
    • 2.3 特征选择-属性选择器
      • 2.4 隐藏标签类选择-伪类和伪元素
        • 2.4.1伪类选择器
        • 2.4.2 伪元素选择器
      • 2.3 关系选择-社群关系,亲戚关系
        • 2.3.1 社群关系-分组选择器
        • 2.3.2 亲戚关系-后代选择器,子代选择器,通用兄弟选择器和相邻兄弟选择器
      • 2.5 通配选择器
      • 参考
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档