前端提高篇(三十四)CSS进阶1常用选择器(属性选择器,同级选择器,伪类选择器

15 阅读5分钟

同级选择器:


1.用加号+连接的相邻选择符: 匹配的是紧随在E后的同级F元素

之前的文章最后一点有提到,

在这里插入图片描述

重点:在相邻紧挨着的兄弟的后者上添加样式

p1

div1
div2

样式:

p + div { color: red; }

运行效果:与p紧挨着的div受影响

在这里插入图片描述

2.用~连接的兄弟选择符:匹配的是任何在E之后的同级F元素

官网链接

在这里插入图片描述

p1

div1
div2

样式:

p ~ div { color: red; }

运行效果:p后面的两个div都受影响,不用紧挨着

在这里插入图片描述

3.伪类选择器


之前的入门文章也提到过,写的是伪类选择器在a标签上的应用

伪类选择器还有其他用途:如设置第一个子元素,不能只选取某元素的部分内容,是一整个元素都被选中

官网

:not(selector)

选择除了selector以外的元素

p1

p2

p3

p:not(.p1){

color: red;

}

运行效果:除了设置了class为p1的,其他的p标签都受影响

E:first-child

选择E的父类的第一个E子元素(第一个子元素且是E标签)

在这里插入图片描述

p1

  • 1
  • 2
  • 3
  • 4
  • 5
li:first-child { color: red; }

运行结果:寻找所有的li,找到其父类,再找父类第一个子元素,且为li的,只有ul下的第一个li符合要求,最后一个子元素li:last-child同理,5会变成红色

li:first-child:

在这里插入图片描述

li:last-child { color: red; }

在这里插入图片描述

E:nth-child(n)

与上同理,选择E父类的第n个E子元素,如果其父类的第n个子元素不是E,就不选择(n从1开始算),E:nth-last-child(n)是从尾巴开始往前算,

  • 0
    • 1
    • 2
    • 3
    • 4
    • 5
  • 6
  • li:nth-child(2) { color: red; }

    运行结果:数字2为红色,

    第一个li的父类是body,但body的第二个子元素是ul,不是<li>6</li>,不是li标签,所以没有产生作用

    在这里插入图片描述

    如果想缩小范围,可以与嵌套选择器结合使用

    原本选中了两个li

    li:nth-child(1) { color: red; }

    在这里插入图片描述

    与嵌套选择器组合使用:

    ul li:nth-child(1) { color: red; }

    运行效果:只有ul下的li会产生效果

    在这里插入图片描述

    如果希望第奇数个E子元素受影响,可以写成E:nth-child(2n-1)

    在这里插入图片描述

    E:nth-last-child(n)

    li:nth-last-child(3) { color: red; }

    在这里插入图片描述

    E:nth-of-type(n)

    选择与E同类型的标签(将不同类型的标签剔除)的前提下,寻找E的父类的第n个E子元素

    li:nth-of-type(3) {

    color: red;

    }

    运行结果:数字3是红色的,li0的父类的子元素,在nth-of-type选择器下只有两个,分别是li0和li6,ul因类型原因被排除,所以外层的li是不受影响的,ul下的li1的父类的第三个li子元素是li3

    在这里插入图片描述

    last-of-type,nth-of-type,nth-last-of-type同理

    empty找内容是空的元素

    1. 必须是空,空格也不行

    2. 如果是在::before和::after里增加了文字,是可以被选中的,

  • 0
    • 1
    • 2
    • 3
    • 4
  • 6
  • li:nth-of-type(3) { color: red; } li:empty{ width: 100px; height: 30px; border: 1px solid black; }

    运行效果:

    在这里插入图片描述

    li::before{

    content: 'asdf';

    }

    li:empty{

    width: 100px;

    height: 30px;

    border: 1px solid black;

    }

    运行结果:边框效果依然生效

    在这里插入图片描述

    :enable匹配表单中激活的元素,:disabled 匹配表单中禁用的元素

    input:enabled {

    border: 1px solid red;

    }

    input:disabled {

    border:1px solid blue

    }

    JavaScript 和 ES6

    在这个过程你会发现,有很多 JS 知识点你并不能更好的理解为什么这么设计,以及这样设计的好处是什么,这就逼着让你去学习这单个知识点的来龙去脉,去哪学?第一,书籍,我知道你不喜欢看,我最近通过刷大厂面试题整理了一份前端核心知识笔记,比较书籍更精简,一句废话都没有,这份笔记也让我通过跳槽从8k涨成20k。

    JavaScript部分截图

    开源分享:docs.qq.com/doc/DSmRnRG…