CSS选择器总结

选择器

选择器的分类

选择器类型内容操作或符号说明
基本选择器元素选择器h1 {} span {}
*通配选择器 * {}(全部元素)
类选择器.classname {}
id选择器 #idname {}
群组选择器none
层次选择器
交集选择器 E.F两者的交集
并集选择器E,F,H选择并集
后代选择器 E F所有的后代都会选择(F)
子选择器E>F只选择子一代,不会选择孙子代
兄弟选择器E+F 相同兄弟辈都会选择
通用兄弟选择器 E~F兄弟选择器只能选择相连的兄弟,用~子辈也会被选择
伪类选择器
动态伪类
目标伪类
语言伪类
UI状态伪类
结构伪类
否伪类伪类
伪元素选择器
属性选择器 div[attr="value"] {} ~= 表示包含value就选 |= 表示value等于开头或是value就选(ex: |=en, 则 en-US和en都会被选) ^= 表示value开头的会被选 $= 表示以value结尾的会被选 *= 表示value至少包含一次就选

伪类选择器和伪元素选择器

伪类是指html中没有声明的类。
在写标签用class 就可以添加类,css3中规定了一些通用的,不写也能用的类 就叫伪类。
例如first-child 、nth-child()、hover() 、active() 等等。

伪元素可以理解为一个元素,在渲染时会添加到元素后。
比较重要的有::befor 和 ::after ,通常用来添加内容(不会被屏幕阅读器识别)

关系选择器

后代选择器
...
<style>
section h1 {
    color: #7c7;
}
</style>
...
<body>
    <header></header>
    <section>
        <div>三兄弟标签一</div>
        <h1>三兄弟标签二</h1>
        <div>
            <h1>三兄弟之三的子标签</h1>
        </div>
    </section>
</body>
...

在这里插入图片描述
该表示后代选择器(空格链接),孙子级的h1也被选中.

子代选择器
...
<style>
section>h1 {
    color: #7c7;
}
</style>
...
<body>
    <header></header>
    <section>
        <div>三兄弟标签一</div>
        <h1>三兄弟标签二</h1>
        <div>
            <h1>三兄弟之三的子标签</h1>
        </div>
    </section>
</body>
...

子元素选择器
用>链接,表示子元素选择器,只会选择后代,而不会选择孙子代.

通用兄弟选择器
...
<style>
section h1~h2 {
    color: #7c7;
}
</style>
...
<section>
   <div>兄弟级别div标签</div>
   <h1>兄弟级别h1标签</h1>
    <div>
        <h1>孙子级别h1</h1>
        <div>孙子级别div标签</div>
        <h2>孙子级别h2</h2>
    </div>
    <div>兄弟级别div标签二</div>
    <h1>兄弟级别h1二代</h1>
    <h2>兄弟级别h2</h2>
</section>
...

在这里插入图片描述

通用兄弟选择器,只要存在复合的条件,哪怕不相邻,也可以被筛选到,包括后代的元素.

兄弟选择器
...
<style>
section h1~h2 {
    color: #7c7;
}
</style>
...
<section>
   <div>兄弟级别div标签</div>
   <h1>兄弟级别h1标签</h1>
    <div>
        <h1>孙子级别h1</h1>
        <div>孙子级别div标签</div>
        <h2>孙子级别h2</h2>
    </div>
    <div>兄弟级别div标签二</div>
    <h1>兄弟级别h1二代</h1>
    <h2>兄弟级别h2</h2>
</section>
...

在这里插入图片描述
只有相邻的才可以被选择,同样可以传递给后代.

怎么选

尽可能的简单,保持必要的特殊性,充分利用层叠特性

继承

CSS是通过文档树来来加到对应的节点, 因此CSS的应用也要考虑子属性的效果。
CSS继承的权重不会继承,为null(*通配符的权重为0 0>null);

...
<!--* {color:blue}-->
html {color: red;}
div {color:green;}
...
<div> Here is some <span>words.</span></div>
...

span会继承div的属性,而继承的属性为null,但若选通配符修改属性,则通配符的权重大于继承,最终span内容为蓝色。
但若选html来修改,span会继承html的颜色,单又会继承div的颜色,后面的会覆盖到前面的,最终为绿色。
需要注意不同元素的继承属性以及继承能力是不一样的。

覆盖

相同等级的选择器,后面的会覆盖前面的。

层叠

根据权重不同会有不一样的效果,可以这么理解,
ID是全文档唯一的,所以ID选择器的权重占百位;
而伪类,类,属性选择器其次重要所以占十位;
元素,伪元素选择器占个位,权重的位数不会进位。
继承的元素权重都为0。

后记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值