常用css选择器

CSS常用选择器:

一、简单选择器

*,通用元素选择器,匹配任何元素
E,标签选择器,匹配所有使用E标签的元素
.class,class选择器,匹配特定class属性的元素
/#ID,id选择器,匹配特定id属性的元素

二、属性选择器

[atrr] ,选择包含 attr 属性的所有元素,不论 attr 的值为何
[attr=val] ,仅选择 attr 属性被赋值为 val 的所有元素

三、组合选择器

A, B ,多元素选择器:选中匹配 A 或B 元素
A B ,后代选择器:选中匹配 A 元素的后代B 元素(A B之间空格分开)
A > B,子元素选择器:选中匹配 A父元素内的直接B子元素
A + B,直接相邻选择器:选中匹配 B 元素之后的相邻的同级的A元素
A ~ B,普通相邻选择器:选中B元素之后的同级 A 元素(无论直接相邻与否)
.a.b,匹配class=''a b"元素
A.b,匹配class="a"的元素

四、伪类选择器

伪类与伪元素的区别:

css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素是用来修饰不在文档树中的部分,比如,一句话中的第一个字母,或者是列表中的第一个元素。下面分别对伪类和伪元素进行解释:

伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。比如说,当用户悬停在指定的元素时,我们可以通过:hover来描述这个元素的状态。虽然它和普通的css类相似,可以为已有的元素添加样式,但是它只有处于dom树无法描述的状态下才能为元素添加样式,所以将其称为伪类。

伪元素用于创建一些不在文档树中的元素,并为其添加样式。比如说,我们可以通过:before来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。

1、动态伪类选择器:

a:link ,匹配所有未被点击的链接
a:visited ,匹配所有已被点击的链接
a:hover ,匹配鼠标悬停其上的a元素
a:active ,匹配鼠标已经其上按下、还没有释放的a元素
E :focus ,选择获取焦点的输入字段

2:UI元素伪类选择器:

E:checked : {attribute},匹配所有用户界面(form表单)中处于选中状态的元素E
E:enabled : {attribute},匹配所有用户界面(form表单)中处于可用状态的E元素
E:disabled : {attribute},匹配所有用户界面(form表单)中处于不可用状态的E元素
E::selection : {attribute},匹配E元素中被用户选中或处于高亮状态的部分

3:结构伪类选择器:

:root()选择器,从字面上我们就可以很清楚的理解是根选择器,他的意思就是匹配元素E所在文档的根元素。在HTML文档中,根元素始终是<html>。“:root”选择器等同于<html>元素
:not()选择器称为否定选择器,和jQuery中的:not选择器一模一样,可以选择除某个元素之外的所有元素。
:empty()选择器表示的就是空。用来选择没有任何内容的元素,这里没有内容指的是一点内容都没有,哪怕是一个空格。
:target()选择器来对页面某个target元素(该元素的id被当做页面中的超链接来使用)指定样式,该样式只在用户点击了页面中的超链接,并且跳转到target元素后起作用
:first-child()选择器表示的是选择父元素的第一个子元素的元素E。简单点理解就是选择元素中的第一个子元素
: last-child匹配元素的最后一个子元素。
:nth-child根据元素的位置匹配一个或者多个元素
(它接受一个an+b形式的参数,an+b匹配到的元素示例如下:
1n+0,或n,匹配每一个子元素。
2n+0,或2n,匹配位置为2、4、6、8…的子元素,该表达式与关键字even等价。
2n+1匹配位置为1、3、5、7…的子元素、该表达式与关键字odd等价。
3n+4匹配位置为4、7、10、13…的子元素。)
:nth-last-child()从某父元素的最后一个子元素开始计算,来选择特定的元素
:first-of-type匹配属于其父元素的首个特定类型的子元素的元素。
:nth-of-type与nth-child相似,不同之处在于它是只匹配特定类型的元素。

五、伪元素选择器

伪元素概念:

伪元素用于创建一些不在文档树中的元素,并为其添加样式。比如说,我们可以通过:before来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。

E::before在被选元素前插入内容。需要使用content属性来指定要插入的内容。被插入的内容实际上不在文档树中。
E::after在被元素后插入内容,其用法和特性与:before相似
E::first-letter匹配元素中文本的首字母。被修饰的首字母不在文档树中。
E:first-line匹配元素中第一行的文本。这个伪元素只能用在块元素中,不能用在内联元素中。
E::selection匹配用户被用户选中或者处于高亮状态的部分。
E::placeholder匹配占位符的文本,只有元素设置了placeholder属性时,该伪元素才能生效

计算选择器的优先级

简单情况:

优先级从高到低分别是:

在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式
作为style属性写在元素标签上的内联样式
Id选择器
类选择器
伪类选择器
属性选择器
标签选择器
通配符选择器
浏览器自定义

复杂场景:

如有多种选择器组合使用,同时选中某元素,直接计算a,b,c,d的值
行内样式 <div style="xxx"></div> ==> a
ID 选择器 ==> b
类,属性选择器和伪类选择器 ==> c
标签选择器、伪元素 ==> d
abcd优先级依次降低

范例

<style>
 .box:first-child {
  color: red;
}
.box:first-of-type {
  background: blue;
}
.box :first-child {
  font-size: 30px;
}
.box :first-of-type {
  font-weight: bold;
}
 </style>
  <div class="container">
    <div class="box">div.box</div>
    <p class="box">p.box</p>
    <div class="box">div.box</div>
    <div class="box">
      <div class="item">div.item</div>
      <p class="item">p.item</p>
    </div>
    <p class="box"></p>
  </div>
  • .box:first-child {
    color: red;
    }
    选择其父元素的第一个class=".box"的子元素为红色,选中的是 <div class="box">div.box</div>并让其字体颜色为红色

  • .box:first-of-type {
    background: blue;
    }
    选择其父元素中指定的某种类型且class=".box"的子元素的背景颜色为蓝色,选中的是 <div class="box">div.box</div>,<p class="box">p.box</p>,并让其背景颜色为蓝色

  • .box :first-child {
    font-size: 30px;
    }
    选择class="box"父元素内的第一个子元素的字体为30px,选中的是 <div class="item">div.item</div>,并让其字体大小为30px;

  • .box :first-of-type {
    font-weight: bold;
    }
    选择claa="box"父元素内的第一个某种类型的子元素的字体加粗,选中的是 <div class="item">div.item</div>
    <p class="item">p.item</p>,并让其字体加粗
    作者:彭荣辉
    链接:https://www.jianshu.com/u/0f804364a8a8
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,842评论 1 92
  • CSS选择器结构逻辑图 接下来按照结构逻辑图具体讲解各个选择器的作用及用法; 基本选择器 基本选择器主要有以下5类...
    FoolishFlyFox阅读 581评论 0 8
  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,878评论 0 5
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,119评论 0 0
  • 阳光突然变得缓慢 我看到漂浮尘埃 更不能忽略你的笑脸 空气中有种特殊的味道 心里说不出的感觉 祈祷你不要望过来 这...
    Vita小丸阅读 152评论 0 0