CSS3 - 选择器

一、 前言


CSS3的理念就是模块化,其中最重要的模块有:

  • 选择器
  • 框模型
  • 背景和边框
  • 文本效果
  • 2D/3D转换
  • 动画
  • 多列布局
  • 用户界面

今天,我们要讨论的就是其中的选择器这个模块。

用好选择器可以大幅度提升WEB开发人员在书写和修改样式表时的工作效率。大多数情况下我们要对样式表进行修改时都会使用class或者id属性,而这些属性是没有任何语义的,仅仅只是用来为css样式服务,属于多余属性。当这些没有语义的属性充斥在整个html结构中时,是非常混乱的,对于我们自身修改也很不方便。

在CSS3中,提倡使用选择器将样式和元素直接绑定起来,这样在样式表中什么样式与什么元素相匹配变的一目了然,修改起来也方便。

不仅如此,通过选择器还可以实现各种复杂的指定,同时也能大量减少样式表代码的书写量,最终书写出来的样式表也会变得简洁明了。

下面,让我们进入CSS3选择器的世界。

二、 选择器分类


CSS3的选择器总体上可以分为4类:

  • 属性选择器
  • 结构伪类选择器
  • UI伪类选择器
  • 其他选择器

每一类选择器所承担的主要职责都是不一样的,在正文中我会对它们做详细的介绍。

三、 正文


1、 属性选择器
  • markdown表格中 ‘ | ’ 用 ‘ / ’ 代替,否则会引起表格混乱,如果大家有解决办法,请留言告知
  • 正确的举例用 ' Y ' 表示
  • 错误的举例用 ‘ N ’ 表示

注意,当省略E选择符的时候,代表匹配任意元素。

属性选择器 作用 举例
E[foo] 选择匹配E的元素,且该元素定义了foo属性 <div foo="xx">
E[foo="bar"] 选择匹配E的元素,且该元素定义了foo属性值为"bar" <div foo="bar"> Y
<div foo="ba"> N
E[foo~="bar"] 选择匹配E的元素,且该元素定义了foo属性,foo属性值是一个以空格符分隔的列表 <div foo="bar"> Y
<div foo="me bar"> Y
<div foo="bar-me"> N
E[foo/="en"] 选择匹配E的元素,且该元素定义了foo属性,foo属性值是一个以连字符( - )分隔的列表 <div foo="en"> Y
<div foo="en-cn"> Y
<div foo="en cn"> N
E[foo^="bar"] 选择匹配E的元素,且该元素定义了foo属性,foo属性值必须以"bar"作为开头 <div foo="bar"> Y
<div foo="barq"> Y
<div foo="bar q"> Y
<div foo="bar-q"> Y
<div foo="qbar"> N
E[foo$="jpg"] 选择匹配E的元素,且该元素定义了foo属性,foo属性值必须以"jpg"作为结尾 <div foo="jpg"> Y
<div foo="ajpg"> Y
<div foo="a-jpg"> Y
<div foo="jpe"> N
E[foo*="bar"] 选择匹配E的元素,且该元素定义了foo属性,foo属性值在任意位置包含"bar"字符串即可 <div foo="bar"> Y
<div foo="aabar"> Y
<div foo="abarz"> Y
<div foo="aa-bar"> Y
<div foo="barqq"> Y
<div foo="bar aa"> Y
<div foo="zbaar"> N
2、 结构伪类选择器
结构伪类选择器 作用 举例
E:root 匹配E所在文档的根元素,在html文档中,根元素就是html元素 <html></html>
E:nth-child(n) 选择所有在其父元素中第n个位置的匹配E的子元素,
参数n可以是数字(1、2、 3)、关键字(odd、even)和公式(2n、2n+3),
公式n的起始值是0,数字n的起始值是1
…………
E:nth-last-child(n) 选择所有在其父元素中倒数第n个位置的匹配E的子元素,
该选择器与E:nth-child(n) 是计算相反顺序额选择器,语法和用法相同
…………
E:nth-of-type(n) 选择所有在其父元素中同类型第n个位置的匹配E的子元素,
注意,所有匹配E的子元素被分离出来单独排序,非E子元素不参与排序,
参数n可以是数字(1、2、 3)、关键字(odd、even)和公式(2n、2n+3),
公式n的起始值是0,数字n的起始值是1
…………
E:nth-last-of-type(n) 选择所有在其父元素中同类型倒数第n个位置的匹配E的子元素,
该选择器与E:nth-of-type(n)是计算顺序相反的选择器,语法和用法相同
…………
E:first-child 选择位于其父元素中第一个位置,且匹配E的子元素 …………
E:last-child 选择位于其父元素中最后一个位置,且匹配E的子元素 …………
E:only-child 选择其父元素只包含一个子元素,且该子元素匹配E …………
E:first-of-type 选择在其父元素中匹配E的第一个同类型的子元素 …………
E:last-of-type 选择在其父元素中匹配E的最后一个同类型的子元素 …………
E:only-of-type 选择在其父元素只包含一个同类型子元素,且该子元素匹配E …………
E:first-letter 选择每个E元素的首字母 …………
E:first-line 选择每个E元素的第一行 …………
E:before 在每个E元素的内容之前插入内容 …………
E:after 在每个E元素内容之后插入内容 …………
E:empty 选择匹配E的元素,且该元素不包含节点,
注意,文本也属于节点
…………
3、 UI伪类选择器
UI伪类选择器 作用 举例
a:link 选择所有未被访问的a链接 …………
a:visited 选择所有已经被访问的a链接 …………
a:active 选择活动链接(即鼠标点下去没有松开的时候) …………
a:hover 选择鼠标指针位于其上的a链接 …………
E:focus 选择获得焦点的E元素(所有用户可以输入的元素都有焦点) …………
E:enabled 选择可以输入的E元素(所有用户可以输入的元素都有enable属性) …………
E:disabled 选择禁止输入的E元素(所有用户可以输入的元素都有disabled属性) …………
input:checked 选择radio和checkbox中被选中的input元素(只有rhttp://www.w3school.com.cn/cssref/css_selectors.aspadio和checkbox有该选择器) ……………
4、 其他伪类选择器
其他伪类选择器 作用 举例
E:not(s) 否定伪类选择器类型,选择匹配E的所有元素,并且过滤掉匹配s选择符的所有元素 …………
E::selection 匹配用户选择的E元素 …………
E:target 目标伪类选择器类型,选择匹配E的所有元素,且匹配元素被相关URL指向 …………

四、 结束语

本文对CSS3选择器模块进行了分类梳理,因为比较简单,所以并没有写例子来验证,大家只要多多练习,一定可以熟练的掌握好这些选择器,提升我们的编写CSS样式的水平,真正做到结构、样式以及行为三者分离。

最后,附上W3C选择器模块详细介绍,大家可以去上面多多练习。
http://www.w3school.com.cn/cssref/css_selectors.asp

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,728评论 1 92
  • 第2章 CSS3选择器 W3C在CSS3的工作草案中把选择器独立出来成为一个模块。实际上,选择器是CSS只是中的重...
    白小虫阅读 349评论 0 2
  • 基础 属性选择器(CSS2) [attr=val] attr代表属性值,val代表变量值 属性选择器的扩展(CSS...
    秋枫残红阅读 325评论 0 1
  • 第6章 征服CSS3选择器 属性选择器 在HTML中,通过各种各样的属性可以给元素增加很多附加的信息。例如,通过i...
    阿振_sc阅读 404评论 0 1
  • 想有一颗透彻的心, 静夜候着花开, 犹如一树的海棠花, 我看见满脸的笑, 是星空下的光芒印迹, 只能许下一个愿望,...
    男爵蔡阅读 545评论 0 0