css|那些高级且优雅🎉🎉的css选择器

294 阅读3分钟

1、.class | 类选择器

选择所有class="class"的元素

2、#firstname | id选择器

选择所有id="firstname"的元素

3、* | 通配符选择器

选择所有元素

4、p |标签选择器

选择所有<p>元素

5、div,p |并集选择器

选择所有<div>元素和<p>元素

6、 div p | 后代选择器

选择<div>元素内的所有<p>元素

7、div>p | 子选择器

选择所有父级是 <div> 元素的 <p> 元素

image.png

8、div+p | 相邻兄弟选择器

选择所有紧跟在 <div> 元素之后的第一个 <p> 元素

image.png

属性选择器

9、[target] |

选择所有带有target属性元素

image.png

10、[target=-blank]

选择所有使用target="-blank"的元素

image.png

11、[title~=flower] IE8之下使用,就不学了吧

选择标题属性包含单词"flower"的所有元素

伪类选择器

12、 a:link

选择所有未访问链接

13、 a:visited

选择所有访问过的链接

14、 a:active

选择活动链接

15、 a:hover

选择鼠标在链接上面时

16、input:focus

选择具有焦点的输入元素

17、p:first-letter

选择每一个<p>元素的第一个字母

image.png

18、p:first-line

选择的p元素在父元素的第一个位置

image.png

19、p:first-child

匹配<p>的父元素的第一个p元素

例子:

image.png

因为a的父元素是div,div的第一个子元素是a,所以会改变颜色

image.png

此时a元素的父元素是div,但是div的第一个子元素不是a,是p,所以不会有任何改变

image.png

last-child原理是一样的,因为p元素的父元素是div,但是div的最后一个子元素是div不是p,所以不会有变化,如果想有变化,就把最后的class=div2的div删除,就行了

20、p:first-of-type

选择的p元素是其父元素的第一个出现的p元素

image.png

思考💡:p:first-child和p:first-of-type的区别?

因为感觉说的都是父元素的第一个,那怎么就结果不一样了呢?

分析:first-child呢,看重的是位置,就是必须是第一个,p元素必须在位置上是第一个,如果第一个不是p,就不会有样式的展示了,但是first-of-type看重的是type,也就说,样式是一定会显示的,只要的在div里遇到的第一个p就会改变样式,哪怕p之前有1000个span,那他也是div里第一个p,所以一定会显示(即使前路漫漫都不是你,我也一定要找到第一个你,改变你,有点浪漫😊😊😊)

21、p:last-of-type

选择每个p元素是其父级的最后一个出现的p元素

image.png

那如果理解了,p:first-child和p:first-of-type的区别,那p:last-child和p:last-of-type的区别也没有问题了

22、p:only-of-type

选择每个p元素是其父级的唯一p元素

image.png

父元素里可以有别的元素,但是只有一个p元素

23、p:only-child

选择每个p元素是其父级的唯一子元素

image.png

父元素里只有我一个p元素,不可以有其他元素

24、p:nth-child(3)

选择每个p元素是其父级的第三个子元素

image.png

25、 p:nth-of-type(3)

选择每个p元素是其父级的第三个p元素

image.png

还是那句话,p:nth-of-type(3)就是找第3个p,总要找到,p:nth-child(3),就是第三个,是p我就干事,不是p我就不干,坚决不干

26、p:nth-last-child(2)

image.png

到数第二个不是p,啥也不干~

27、p:nth-last-of-type(2)

image.png

综上所述,就是只要是child类,只要对应位置不是,他就不干了,只要是type类,他会知道第n个p,找到就干活,这么对比的话,其实感觉像2种人,child要极端一些,只要结果不是,不满意,就罢了,type要温和一些,自己会慢慢寻找,会遵守自己的约定,更喜欢type一些