CSS3选择器

2019-01-03  本文已影响0人  陈裔松的技术博客

基本选择器

子元素选择器
section > div {
    color: #f00;
}
相邻兄弟元素选择器
section > div + article {
    color: #f00;
}
通用兄弟元素选择器
section > div ~ article {
    color: #f00;
}
群组选择器
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;
}

伪类选择器

动态伪类
a:visited{
  color: #f00;
}
UI元素状态伪类

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

input:disabled{
    background: #f00;
}
button:disabled{
    color: red;
}
CSS结构类(nth选择器)
section > div:first-child {
    color: #f00;
}
div:last-child {
    color: #f00;
}
ul > li:nth-child(2) {
    background: #f00;
}

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

// 匹配属于其父元素的偶数个的Element元素
ul > li:nth-child(even) {
    background: #f00;
}
ul > li:nth-last-child(3) {
    background: #f00;
}
div:nth-of-type(2) {
    color: #f00;
}
div:nth-last-of-type(2) {
    color: #f00;
}
div:first-of-type {
    color: #f00;
}
div:last-of-type {
    color: #f00;
}
article:only-child {
    background: #f00;
}

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

// 这个不会选中
<section>
    <article>1</article>
    <article>2</article>
</section>
article:only-of-type {
    background: #f00;
}

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

// 这个也会选中
<section>
    <div>4</div>
    <article>5</article>
    <div>6</div>
</section>
div:empty {
    background: #f00;
}
否定选择器:not(element/selector)
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)

div::first-line {
    color: #f00;
    font-weight: bold;
}
div::first-letter {
    color: #f00;
    font-size: 24px;
    font-weight: bold;
}
// 特点
// 1. 是第一个子元素
// 2. 是行级元素
// 3. 内容通过content写入
// 4. 标签中找不到对应的标签
// 5. 可以用一切CSS控制样式

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

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

// 清除浮动的例子
header::after{
    display: block;
    content: "";
    clear: both;
}
div::selection {
    background: red;
    color: #ff0;
}
上一篇下一篇

猜你喜欢

热点阅读