CSS3选择器

基本选择器

子元素选择器
  • 概念:只能选择某元素的子元素
  • 语法:父元素 > 子元素(Father > Children)
section > div {
    color: #f00;
}
相邻兄弟元素选择器
  • 概念:可以选择紧接在另一元素的元素,而且他们具有一个相同的父元素
  • 语法:元素 + 兄弟相邻元素(Element + Sibling)
section > div + article {
    color: #f00;
}
通用兄弟元素选择器
  • 概念:选择某元素后面所有兄弟元素,而且他们具有一个相同的父元素
  • 语法:元素 ~ 后面所有兄弟相邻元素(Element ~ Siblings)
section > div ~ article {
    color: #f00;
}
群组选择器
  • 概念:将具有相同样式的元素分组在一起,每个选择器之间使用逗号“,”隔开
  • 语法:元素1,元素2,...,元素n(Element1,Element2,...,Elementn)
section > article,
section > aside,
section > div {
    color: #f00;
    margin-top: 10px;
    background: #abcdef;
}

属性选择器

对带有指定属性的HTML元素设置样式。
使用CSS3属性选择器,可以只指定元素的某个属性,也可以同时指定元素的某个属性和其对应的属性值

类型1:Element[attribute]

为带有attribute属性的Element元素设置样式

a[href] {
    text-decoration: none;
}
类型2:Element[attribute="value"]

为带有attribute="value"属性的Element元素设置样式

a[href="#"] {
    color: #f00;
}
类型3:Element[attribute~="value"]

选择attribute属性包含 单词 "value"的元素,并设置其样式
注意:这里是单词"value"

a[class~="two"] {
    color: #ff0;
}

<a class="one two" href="#">attribute</a>    // 会选择到
<a class="two three" href="#">attribute</a>  // 会选择到
<a class="twothree" href="#">attribute</a>   // 不会选择到
类型4:Element[attribute^="value"]

设置attribute属性值以"value"开头的所有Element元素的样式

a[href^="#"] {
    color: #0f0;
}
类型5:Element[attribute$="value"]

设置attribute属性值以"value"结尾的所有Element元素的样式

a[href$="#"] {
    color: #00f;
}
类型6:Element[attribute*="value"]

设置attribute属性值包含"value"的所有Element元素的样式
注意:看清楚与类型3Element[attribute~="value"]选择器的不同

a[class*="two"] {
    color: #0ff;
}

<a class="one two" href="#">attribute</a>      // 会选择到
<a class="two three" href="#">attribute</a>    // 会选择到
<a class="twothree" href="#">attribute</a>     // 会选择到
类型7:Element[attribute|="value"]

选择attribute属性值为"value"或以"value-"开头的元素,并设置其样式
注意:这里的属性值为"value",是指只有"value"属性

a[href|="#"] {
    color: #f0f;
}

伪类选择器

动态伪类
  • 概念:这些伪类并不存在于HTML中,只有当用户和网站交互的时候才能体现出来
  • 锚点伪类
    :link:当链接没有被访问过的时候
    :visited:当链接已经被访问过的时候
  • 用户行为伪类
    :hover:当鼠标在链接上划过的时候
    :active:当鼠标在链接上按下但是还没有弹起的时候
    :focus:当获取光标的时候
a:visited{
  color: #f00;
}
UI元素状态伪类

:enabled:可编辑状态的元素
:disabled:不可编辑状态的元素
:checked:每个已被选中的 input 元素(注意:只用于单选按钮和复选框,只有Opera支持)

input:disabled{
    background: #f00;
}
button:disabled{
    color: red;
}
CSS结构类(nth选择器)
  • :first-child:选择属于其父元素的首个子元素Element元素
section > div:first-child {
    color: #f00;
}
  • :last-child:选择属于其父元素的最后一个子元素Element元素
div:last-child {
    color: #f00;
}
  • :nth-child(n):匹配属于其父元素的第n个子元素的Element元素
    注意:n是一个简单表达式,取值从 0 开始计算。这里只能是"n",不能用其他字母代替
    总结:这里的第几个子元素,就是我们平常说的第几个,也就是从第1个开始算起。
ul > li:nth-child(2) {
    background: #f00;
}

// 匹配属于其父元素的奇数个的Element元素
ul > li:nth-child(odd) {
    background: #f00;
}

// 匹配属于其父元素的偶数个的Element元素
ul > li:nth-child(even) {
    background: #f00;
}
  • :nth-last-child(n):匹配属于其父元素的第n个子元素的Element元素,从最后一个子元素开始计数
ul > li:nth-last-child(3) {
    background: #f00;
}
  • :nth-of-type(n):匹配属于其父元素的特定类型的第N个子元素
    总结:先筛选出特定类型的元素,然后再数第N个
div:nth-of-type(2) {
    color: #f00;
}
  • :nth-last-of-type(n):匹配属于其父元素的特定类型的第N个子元素,从最后一个子元素开始计数
div:nth-last-of-type(2) {
    color: #f00;
}
  • :first-of-type:匹配属于其父元素的特定类型首个子元素
div:first-of-type {
    color: #f00;
}
  • :last-of-type:匹配属于其父元素的特定类型最后一个子元素
div:last-of-type {
    color: #f00;
}
  • :only-child:匹配属于其父元素的唯一子元素的元素
    总结:也就是没有其他兄弟元素的情况
article:only-child {
    background: #f00;
}

// 这个会选中
<section>
    <article>3</article>
</section>

// 这个不会选中
<section>
    <article>1</article>
    <article>2</article>
</section>
  • :only-of-type:匹配属于其父元素的特定类型唯一子元素的元素
    总结:可以有其他兄弟元素,但是元素本身这种类型只能有一个
article:only-of-type {
    background: #f00;
}

// 这个会选中
<section>
    <article>3</article>
</section>

// 这个也会选中
<section>
    <div>4</div>
    <article>5</article>
    <div>6</div>
</section>
  • :empty:匹配没有子元素(包括文本节点)的元素
div:empty {
    background: #f00;
}
否定选择器:not(element/selector)
  • 概念:匹配非指定元素/选择器的元素
  • 语法:父元素:not(子元素/子选择器)
  • 例子:
nav > a:not(:last-of-type) {
    border-right: 1px solid red;
}
// 最后一个a标签不会有右边框
<nav>
    <a href="#">first</a>
    <a href="#">second</a>
    <a href="#">third</a>
    <a href="#">fourth</a>
    <a href="#">fifth</a>
</nav>

div:not(p)
{
    color:#ff0000;
}
// 选中div标签中的span元素
<div>
    <span>这是 div 元素中的文本。</span>
    <p>test</p>
</div>
伪元素

概念:用于向某些选择器设置特殊效果
语法:元素::伪元素 (Element::pseudo-element)

  • ::first-line:对Element元素的第一行文本进行格式化
    此伪元素只能用于块级元素。块元素中文本超过宽度会换行,所以可以对第一行进行格式化。而行级元素内的文本被认为是一行,所以无法适用。
div::first-line {
    color: #f00;
    font-weight: bold;
}
  • ::first-letter:用于向文本的首字母设置特殊样式
    此伪元素只能用于块级元素。如果是中文,就给第一个字设置样式。
div::first-letter {
    color: #f00;
    font-size: 24px;
    font-weight: bold;
}
  • ::before:在元素的内容前面插入新内容
    常用“content”配合使用
// 特点
// 1. 是第一个子元素
// 2. 是行级元素
// 3. 内容通过content写入
// 4. 标签中找不到对应的标签
// 5. 可以用一切CSS控制样式

div::before {
    content: "我在内容的前面";
}
<div>伪元素</div>
  • ::after:在元素的内容后面插入新内容
    常用“content”配合使用,多用于清除浮动
// 特点
// 1. 是最后一个子元素
// 2. 是行级元素
// 3. 内容通过content写入
// 4. 标签中找不到对应的标签
// 5. 可以用一切CSS控制样式
// 6. 可用于清除浮动

div::after{
    content: "我在内容的后面";
}
<div>伪元素</div>

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

推荐阅读更多精彩内容

  • 第2章 CSS3选择器 W3C在CSS3的工作草案中把选择器独立出来成为一个模块。实际上,选择器是CSS只是中的重...
    白小虫阅读 349评论 0 2
  • 可以参考:1、https://blog.csdn.net/q1056843325/article/details/...
    碎碎先生阅读 193评论 0 0
  • 一,CSS3 选择器分类 二,选择器语法 1,基本选择器语法 选择器 类型 功能描述 * 通配选择器 选择文档中所...
    newSpring666阅读 298评论 0 0
  • 基本选择器 1.通配符选择器 *通配符——通配符选择器是用来选择所有元素,也可以选择某个元素下的所有元素 2.元素...
    前端森林阅读 324评论 0 0
  • 第6章 征服CSS3选择器 属性选择器 在HTML中,通过各种各样的属性可以给元素增加很多附加的信息。例如,通过i...
    阿振_sc阅读 403评论 0 1