CSS 选择器

1. 基本选择器

1.1 标签选择器

给指定的标签加样式,语法如下:

[标签名] {
    /* 样式 */
}
p {
    color: red;
}

1.2 ID 选择器

给指定 ID 的标签添加样式,语法如下:

#[id] {
    /* 样式 */
}
<body>
    <div id="abc"></div>
</body>
#abc {
    height: 20px;
    width: 20px;
    background-color: black;
}

1.3 类选择器

类选择器以标签的 class 属性值作为选择对象,语法如下:

.[类名] {
    /* 样式 */
}
<body>
    <div class="abc"></div>
</body>
.abc {
    height: 20px;
    width: 20px;
    background-color: black;
}

1.4 通配选择器

通配选择器选择的是页面所有内容,语法如下:

* {
    /* 样式 */
}
  • 一般用于清除默认样式
* {
    margin: 0;
    padding: 0;
}

2. 复合选择器

2.1 指定选择器

  选择同时满足多个选择器的元素,可以理解为交集概念,语法如下:

[选择器1][选择器2]...[选择器n] {
    /* 样式 */
}
<body>
    <h2 class="cls">古诗词</h2>
    <p title="将进酒" class="cls">黄河之水天上来,奔流到海不复回。</p>
    <p title="越人歌" class="cls">山有木兮木有枝,心悦君兮君不知。</p>
</body>
p.cls[title=将进酒] {
    background-color: brown;
}
  • 注意,选择器之间不留空格,只会选择满足所有选择器的对象。

2.2 包含选择器

  选择分别满足多个选择器的对象,是一个并集的概念,语法如下:

[选择器1],[选择器2],[选择器n] {
    /* 样式 */
}
<body>
    <div>凑热闹</div>
    <h2 class="cls">古诗词</h2>
    <p id="将进酒">黄河之水天上来,奔流到海不复回。</p>
    <p title="越人歌">山有木兮木有枝,心悦君兮君不知。</p>
</body>
div,.cls,#将进酒,[title=越人歌] {
    background-color: brown;
}

3. 关系选择器

  关系选择器也属于复合选择器。

3.1 子元素选择器

从第一个选择器选择的父对象中选择子对象,语法如下:

[父选择器]>[子选择器] {
    /* 样式 */
}
<body>
    <div>
        <h2>标题1</h2>
        <p>段落1</p>
        <div>
            <h2>标题2</h2>
            <p>段落2</p>
        </div>
    </div>
    <span>
        <p>段落2</p>
    </span>
</body>
div>p {
    color: red;
}
  • 只要是满足选择器的父子,无论在哪,都会被选中。

3.2 相邻选择器

  相邻选择器,从第一个选择器选择的对象中,用第二个选择器选择下一个相邻的元素,语法如下:

[第一个选择器]+[第二个选择器] {
    /* 样式 */
}
<h2>标题</h2>
<p class="p1">段落1</p>
<p class="p2">段落2</p>
<span>段落3</span>
h2+p { color: red; }    /* 选中段落一 */
h2+.p1 { color: red; }  /* 选中段落一 */
h2+.p2 { color: red; }  /* 无选中 */
h2+span{ color: red;}   /* 无选中 */
  • 注意:相邻选择器只能选择相邻元素,满足弟选择器才会被选中。

3.3 兄弟选择器

  兄弟选择器,从兄选择器选择的对象中,用弟选择器选出所有的弟弟元素,语法如下:

[兄选择器]~[弟选择器] {
    /* 样式 */
}
<h2>标题</h2>
<p class="p1">段落1</p>
<p class="p2">段落2</p>
<span>段落3</span>
h2~p { color: royalblue; }  /* h2 下面的所有 p 元素被选中 */
h2~span { color: red; }     /* h2 下面的所有 span 元素被选中 */

3.4 后代选择器

  后代选择器是从父元素中选出所有后代元素,语法如下:

[祖先选择器][空格][后代选择器] {
    /* 样式 */
}
<div id="com">
    <h2>标题</h2>
    <p class="p1">段落1</p>
    <p class="p2">段落2</p>
    <span>段落3</span>
    <div>
        <p>段落3</p>
        <div>
            <p>段落4</p>
        </div>
    </div>
</div>
#com p {
    color: red;
}
  • 注意与指定选择器区分,指定选择器的选择器之间没有空格,后代选择器有空格。

4. 属性选择器

  属性选择器根据标签的属性或属性与值进行选择,语法如下:

[属性名] {}          /* 选择有指定属性的元素 */
[属性名=属性值]{}    /* 匹配属性与属性值 */
[属性名^=属性值]{}   /* 前缀匹配 */
[属性名$=属性值]{}   /* 后缀匹配 */
[属性名*=属性值]{}   /* 模糊匹配 */
<p title="将进酒">黄河之水天上来,奔流到海不复回。</p>
<p title="越人歌">山有木兮木有枝,心悦君兮君不知。</p>
<p title="大林寺桃花">人间四月芳菲尽,山寺桃花始盛开。</p>
<p title="望月怀远">海上生明月,天涯共此时。</p>
<p title="念奴娇·赤壁怀古">江山如画,一时多少豪杰。</p>
[title="将进酒"] { color: red; }
[title^="越"] { color: orange; }
[title$="花"] { color: blue; }
[title*="怀"] { color: purple; }

5. 伪选择器

  伪选择器包括伪类和伪元素,语法如下:

[选择器][伪元素或伪类名] {
    /* 样式 */
}
<p>段落</p>
p:hover {
    color: red;
}

使用时查手册:

6. 样式继承

  为一个祖先元素设置样式,可以自动被其子元素继承,利用继承可以将一些通用的样式,统一设置到祖先元素上,这样只需要设置一次,让所有后代元素都拥有该样式。
  需要注意的是,不是所有的样式都会被继承,如背景相关的、布局相关的样式不会被继承。

7. 选择器权重

  不同的选择器选择相同的元素,并且对相同的样式设置不同的值时,会有样式冲突。发生样式冲突时,应用哪个值由选择器的权重(优先级)决定。

选择器的权重:

样式优先级
内联样式1,0,0,0
id 选择器0,1,0,0
类和伪类选择器0,0,1,0
元素选择器0,0,0,1
通配选择器0,0,0,0
继承的样式没有优先级
属性值后面加 !important;最高优先级

注意:

  • 比较优先级时,需要将所有选择器的权重相加计算,权值越大则越优先应用。如:div#box1 比 div 优先级高。
  • 分组选择器是单独计算,选择器的累加不会超过其最大的数量级,如果优先级计算相同,此时优先使用靠下的样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值