凭什么你先——css选择器合集

我们在开发页面时,最常遇到的一个情况就是选择对应内容书写样式。这就涉及到了我们经常说的选择器了,例如我们经常用到的.content{},这就是选择器中的类选择器。今天也是趁着复习的机会,来好好整理一下css的选择器和他们的优先及关系。

css选择器有哪些?

我们在书写样式时经常用到的选择器有标签选择器,id选择器,类选择器。但是,除了这些选择器外,还有一些组合式的选择器,下面我就一一给大家介绍一下各种选择器。

普通选择器

1、 标签选择器

标签选择器就是通过标签来选择相应的元素。例如:

css 复制代码
p {
  font-size: 16px;
}

我们通过p这个标签来修改p标签里面的样式,将其内字体大小设置为16px

2、类选择器

我们在定义一个dom元素时,通常会给他添加一个类名,如<p class="title">不知道些什么</p>,我们在进行样式编写时就可以通过类名来选择,如:

css 复制代码
.title {
  font-size: 16px;
}

3、id选择器

我们不仅可以通过类名来选择想要的dom元素,还可以通过id来选择dom元素。如<p id="title">不知道些什么</p>,给元素绑定个id,然后通过id来选择它

css 复制代码
#title {
  font-size: 16px;
}

组合选择器

组合选择器,就是通过前面的基础选择器组合起来进行选择。组合选择器有后代选择器,自己选择器,兄弟选择器,群组选择器

1、后代选择器

后代选择器是用来选取某个元素的所有后代元素。如:

html 复制代码
<div id="app">
  <p>绿色</p>
  <div>
    <p>绿色</p>
  </div>
</div>
css 复制代码
#app p {
  color: green;
}

通过id选择器选择id为app的容器,然后选择这个容器下面的所有p标签的dom元素。

2、子集选择器

这个选择器就是可以只选择它下面一层的内容了,如上面一样,使用子选择器,就只能选择到id为app容器直接下面的一个p标签。具体的效果可以自己去看看,就只有第一个文本的颜色为绿色。

css 复制代码
#app>p {
  color: green;
}

3、兄弟选择器

兄弟选择器分为相邻兄弟选择器和一般兄弟选择器。分别是 h1+p , h1~p相邻兄弟就是只选择它旁边的选择器,而一般选择器是选择另一个元素之后的所有同级元素。例如:

xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        h1 + p {
            color: green;
        }
        /* h1 ~ p {
            color: pink;
        } */
    </style>
</head>
<body>
    <h1>Title</h1>
    <p>什么颜色</p>
    <p>什么颜色</p>
</body>
</html>

这个时候就是第一个p标签的颜色为绿色,如果使用一般兄弟选择器的话就是两个p标签内容都为粉色。

4、群组选择器

就是把你想要的内容都集合在一起书写,如:

css 复制代码
p, h1, h2 {
  color: black;
}

这个就很简单了,就不需要过多的介绍了。

4、属性选择器

属性选择器在CSS中用于选择具有特定属性的元素。我们可以通过这个选择器来选择具有特定属性的元素,还可以选择具有指定属性和特定值的元素。如:

css 复制代码
input[type="text"] {
  background-color: lightblue;
}
css 复制代码
[data-index] {
  color: red; 
}

伪选择器

这个为什么叫伪选择器,因为它并不存在。

1、伪类选择器

就是向选择器添加一些特定的样式,如:鼠标放上去的样式,选中的样式,访问过的样式等等。 例如:

css 复制代码
p:hover{
font-weight: bold;
}

这表示鼠标放上去的样式

2、伪元素选择器

伪元素选择器在CSS中用于选择和样式化元素的特定部分,而不是整个元素本身。如:before:after 表示刚开始,和结束前。还有一些其他的,不过我们最常用的还是这两个。

xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Pseudo-Element Example</title>
  <style>
    /* CSS 规则 */
    .quote::before {
      content: """;
    }

    .quote::after {
      content: """;
    }

    .quote::first-letter {
      font-size: 2em;
    }

    .quote::first-line {
      color: red;
    }
  </style>
</head>
<body>
  <p class="quote">用伪元素来添加引号,并突出显示第一字母和第一行文字。</p>
</body>
</html>

选择器的优先级

选择器是有优先级的,这样才能确定两个选择器选择同一个元素时会使用哪种样式。在MDN中也有介绍关于选择器的优先级的问题。

优先级就是分配给指定的 CSS 声明的一个权重,它由 匹配的选择器中的 每一种选择器类型的 数值 决定。 而当优先级与多个 CSS 声明中任意一个声明的优先级相等的时候,CSS 中最后的那个声明将会被应用到元素上。 当同一个元素有多个声明的时候,优先级才会有意义。因为每一个直接作用于元素的 CSS 规则总是会接管/覆盖(take over)该元素从祖先元素继承而来的规则。

备注: 文档树中元素的接近度(Proximity of elements)对优先级没有影响。

------MDN-优先级

但是我感觉很官方,看的很懵逼。所以通过查找一些资料,以及实验总结了这些选择器的优先级。对于选择器优先级可以这样来划分:

! important 最高权限

优先级 important>内联 > id > class > ... > 标签

省略号代表:后代选择器 = 子集 = 兄弟

这组合选择器很难评的,因为它是通过多个选择器组合在一起的,如果它以id选择器组合的话,它的优先级就比类选择器要高,所以我就放后面了。

相同优先级的选择器会进行覆盖,也就是后面的样式会把前面的样式覆盖掉

总结

这就是我们常用的选择器及其优先级,我在这里就简单的整理了一下,可能还有不足的地方,希望大佬指正。

相关推荐
景天科技苑8 分钟前
【vue3+vite】新一代vue脚手架工具vite,助力前端开发更快捷更高效
前端·javascript·vue.js·vite·vue项目·脚手架工具
小行星12519 分钟前
前端预览pdf文件流
前端·javascript·vue.js
小行星12526 分钟前
前端把dom页面转为pdf文件下载和弹窗预览
前端·javascript·vue.js·pdf
Lysun00135 分钟前
[less] Operation on an invalid type
前端·vue·less·sass·scss
土豆湿42 分钟前
拥抱极简主义前端开发:NoCss.js 引领无 CSS 编程潮流
开发语言·javascript·css
J总裁的小芒果1 小时前
Vue3 el-table 默认选中 传入的数组
前端·javascript·elementui·typescript
Lei_zhen961 小时前
记录一次electron-builder报错ENOENT: no such file or directory, rename xxxx的问题
前端·javascript·electron
咖喱鱼蛋1 小时前
Electron一些概念理解
前端·javascript·electron
yqcoder1 小时前
Vue3 + Vite + Electron + TS 项目构建
前端·javascript·vue.js
鑫宝Code1 小时前
【React】React Router:深入理解前端路由的工作原理
前端·react.js·前端框架