CSS入门5-选择器

(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!)
(注2:更多内容请查看我的目录。)

1. 选择器简介

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

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

2. 选择器分类

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

<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选择器

用法说明:

选择器:#id
示例:#key
作用:选择“id=key”的元素
特征:#开头

用法示例:

<p id="sayHi">hi</p>

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

#sayHi {color:blue;}

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

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

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

元素选择器:

用法说明:

选择器:element
示例:p
作用:选择所有p元素
特征:标签名

用法示例:

p {color: red;}
div {width: 100px;}

类选择器:

用法说明:

选择器:.class
示例:.val
作用:选择所有class="val"的元素
特征:.开头

用法示例:

<p class="blue">hi</p>
<p class="blue">hello</p>
.blue {color:blue;}

2.3 特征选择-属性选择器

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

属性选择器:

用法说明:

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

用法示例:

<p otitle="sayhi">hi</p>
<p otitle="sayhi">hello</p>
[otitle] {color:blue;}

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

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

2.4.1伪类选择器

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

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

1、静态伪类(只应用于超链接)
  [注意]visited伪类只能设置字体颜色、边框颜色、outline颜色的样式

:link       未访问
:visited    已访问
a:link{color: red;}
a:visited{color: green;}

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

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

3、目标伪类:target(IE8-不支持)
匹配锚点对应的目标元素

:target{color: red;}
#test :target{color: red;}//id为test的目标元素

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

:enabled    可用状态
:disabled    不可用状态
:checked    选中状态

示例

input:enabled{color: red}
[注意]input和:和enabled之间都不可以有空格

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

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)

示例:

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 伪元素选择器

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

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

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

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

2.3.1 社群关系-分组选择器

分组选择器:

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

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

后代选择器:

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

子代选择器:

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

通用兄弟选择器:

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

相邻兄弟选择器:

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

2.5 通配选择器

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

通配选择器:

选择器:*
示例:*
作用:选择所有元素

参考

CSS选择器
CSS Selectors
深入理解伪元素
深入理解CSS伪类
W3school-CSS 选择器参考手册
css属性选择器=,|=,^=,$=,=的区别 (学习笔记)
CSS3伪类和伪元素的特性和区别
详解 CSS 属性 - 伪类和伪元素的区别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92
  • CSS选择器 标签选择器 什么是标签选择器? 作用: 根据指定的标签名称, 在当前界面中找到所有该名称的标签, 然...
    Jackson_yee_阅读 493评论 0 0
  • 诸葛亮的二姐所生子叫庞涣。诸葛亮的《戒外甥书》就是写给他的。诸葛亮在这封信中,教导他该如何立志、修身、成材。 正文...
    bruceryant阅读 757评论 0 0
  • 道不尽?水自流,清夜以空示繁花,幽香自散千里外,星斗满天烁芳华。 言不清?云自浮,湖面尽染晴空意,落花已故流水畅,...
    Zevling凌月阅读 405评论 0 1