• CSS常见选择器总结


    1.简单选择器

    简单选择器是开发中使用最多的选择器,包含:

    • 元素选择器,使用元素的名称

    • 类选择器,使用.类名

    • id选择器,使用#id

    id注意事项:

    一个HTML文档里面的id值 是唯一的,不能重复
    • id值如果由多个单词组成,单词之间可以用中划线-、下划线_连接,也可以使用驼峰标识
    • 最好不要用标签名作为id值

    2.属性选择器

    [att] 选择拥有att属性的元素

    [att=val] 选择拥有属性att并且属性值为val的元素

    1. <style>
    2. [title] {
    3. color: red;
    4. }
    5. [title=div] {
    6. background-color: blue;
    7. }
    8. style>
    9. <div>我是div元素div>
    10. <div title="div">我也是div元素div>
    11. <p>我是p元素p>
    12. <h2 title="h2">我是h2元素h2>

    3.后代选择器

    • 选中所有后代(用 空格 分隔)

    1. <style>
    2. /* 所有后代选择器 */
    3. .home span {
    4. color: red;
    5. font-size: 30px;
    6. }
    7. style>
    8. <div class="home">
    9. <span>啦啦啦啦span> //选中
    10. <div class="box">
    11. <p>我是p元素p>
    12. <span class="home-item">呵呵呵呵span> //选中
    13. div>
    • 选中直接后代(使用 分隔)

    1. <style>
    2. /* 所有后代选择器 */
    3. .home > span {
    4. color: red;
    5. font-size: 30px;
    6. }
    7. style>
    8. <div class="home">
    9. <span>啦啦啦啦span> //选中
    10. <div class="box">
    11. <p>我是p元素p>
    12. <span class="home-item">呵呵呵呵span> //未选中
    13. div>

    4.兄弟选择器

    • 相邻兄弟选择器(使用 连接)

    1. <style>
    2. .box + .content {
    3. color: red;
    4. }
    5. style>
    6. <div class="home">
    7. <div>叽叽叽叽div>
    8. <div class="box">呵呵呵呵div>
    9. <div class="content">哈哈哈哈div> //选中
    10. <p>我是p元素p>
    11. div>

           选中class="box"的元素的具有class="content "的直接兄弟元素,直接兄弟和class="content "要同时满足,只会选中一个。

    • 普遍兄弟选择器(使用 连接)

    1. <style>
    2. .box ~ div {
    3. background-color: #f6b8b8;
    4. }
    5. style>
    6. <div class="home">
    7. <div>叽叽叽叽div>
    8. <div class="box">呵呵呵呵div>
    9. <div class="content">哈哈哈哈div> //选中
    10. <div>嘻嘻嘻嘻div> //选中
    11. <div>嘿嘿嘿嘿div> //选中
    12. <p>我是p元素p>
    13. div>

           选中class="box"元素的后面的兄弟元素,并且这些兄弟是div元素 ,选中同时满足两个条件的元素,可以选中多个。

    5.组合选择器

    交集选择器(两个选择器紧密相连

    选中同时满足两个条件的元素:

    1. <style>
    2. div.box {
    3. color: red;
    4. font-size: 30px;
    5. }
    6. style>
    7. <div class="box">我是box里面的div元素div> //选中
    8. <div>我是普通div元素div>
    9. <p class="box">我是p元素p>

    并集选择器(两个选择器以,分隔)

    只要符合其中一个条件就选中

    1. <style>
    2. h1, h2 {
    3. color: red;
    4. font-size: 40px;
    5. }
    6. style>
    7. <p>我是p元素p> //选中
    8. <h1>我是h1元素h1> //选中

     

    6.伪类选择器

    伪类是 选择器的一种 ,它用于选择处于特定状态的元素。
    常见的伪类有:

    1.动态伪类

    • a:link 未访问的链接
    • a:visited 已访问的链接
    • a:hover 鼠标挪动到链接上(重要)
    • a:active 激活的链接(鼠标在链接上长按住未松开)
    1. <style>
    2. /* a元素的链接从来没有被访问过 */
    3. a:link {
    4. color: red;
    5. }
    6. /* a元素被访问过了颜色 */
    7. a:visited {
    8. color: green;
    9. }
    10. /* a元素鼠标放到上面 */
    11. a:hover {
    12. color: blue;
    13. }
    14. /* 点下去了, 但是还没有松手 */
    15. a:active {
    16. color: purple;
    17. }
    18. /* 所有的状态下同样的样式 */
    19. a {
    20. color: orange;
    21. }
    22. /* a/input元素聚焦(获取焦点) */
    23. input:focus {
    24. color: yellow;
    25. }
    26. style>
    27. <a href="http://www.mi.com">小米a>
    28. <a href="http://www.baidu.com">百度一下a>
    使用注意
    • :hover必须放在:link和:visited后面才能完全生效
    • :active必须放在:hover后面才能完全生效
    所以建议的编写顺序是 :link、:visited、:hover、:active

     除了a元素,:hover、:active也能用在其他元素上

    1. <style>
    2. /* 鼠标放到div元素上面 */
    3. div:hover {
    4. color: blue;
    5. }
    6. /* 点下去了, 但是还没有松手 */
    7. div:active {
    8. color: purple;
    9. }
    10. style>
    11. <div>我是div元素div>

    动态伪类(:focus) 

    选中拥有输入焦点的元素(能接收键盘输入),适用于 input 和 元素(a元素可以被键盘的Tab键选中聚焦)

    1. /*-------- a/input元素聚焦(获取焦点)-------- */
    2. <style>
    3. input:focus {
    4. background-color: #ea3f9d;
    5. color: yellow;
    6. }
    7. a:focus{
    8. background-color: #ea3f9d;
    9. color: yellow;
    10. }
    11. style>
    12. <a href="http://www.baidu.com">百度一下a>
    13. <input type="text">
    动态伪类的编写顺序建议为:
    :link、:visited、:focus、:hover、:active
    直接给a元素设置样式,相当于给a元素的所有动态伪类都设置了
    • 相当于a:link、a:visited、a:hover、a:active、a:focus的color都是设置了相同样式

    2.结构伪类

    :nth-child

    :nth-child(1)
    • 是父元素中的第1个子元素
    :nth-child(2n)
    • n代表任意正整数和0 (0,1,2,3...)
    • 是父元素中的第偶数个子元素(第2、4、6、8......个)
    • 跟:nth-child(even)同义
    :nth-child(2n + 1)
    • n代表任意正整数和0 (0,1,2,3...)
    • 是父元素中的第奇数个子元素(第1、3、5、7......个)
    • 跟:nth-child(odd)同义
    nth-child(-n + 2)
    • 代表前2个子元素
    1. <style>
    2. ul li:nth-child(3) {
    3. color: red;
    4. }
    5. /* 0, 1, 2, 3, 4, 5...... */
    6. ul li:nth-child(2n) {
    7. color: green;
    8. }
    9. ul li:nth-child(2n + 1) {
    10. color: rgb(102, 235, 72);
    11. } */
    12. div > div:nth-child(4n + 1) {
    13. color: orange;
    14. }
    15. div > div:nth-child(4n + 2) {
    16. color: purple;
    17. }
    18. div > div:nth-child(4n + 3) {
    19. color: red;
    20. }
    21. div > div:nth-child(4n) {
    22. color: blue;
    23. }
    24. /* 前几个 */
    25. div > div:nth-child(-n + 5) {
    26. font-size: 20px;
    27. }
    28. style>
    29. <ul>
    30. <li>列表元素1li>
    31. <li>列表元素2li>
    32. <li>列表元素3li>
    33. <li>列表元素4li>
    34. <li>列表元素5li>
    35. <li>列表元素6li>
    36. ul>
    37. <div>
    38. <div>列表元素1div>
    39. <div>列表元素2div>
    40. <div>列表元素3div>
    41. <div>列表元素4div>
    42. <div>列表元素5div>
    43. <div>列表元素6div>
    44. <div>列表元素7div>
    45. <div>列表元素8div>
    46. <div>列表元素9div>
    47. <div>列表元素10div>
    48. div>

     

     :nth-last-child( )

    从最后一个子元素开始往前计数

    •  :nth-last-child(1),代表倒数第一个子元素
    •  :nth-last-child(-n + 2),代表最后2个子元素

    :nth-of-type( )

    不同点是:nth-of-type()计数时只计算同种类型的元素

    :nth-last-of-type( )

    不同点是:nth-last-of-type()从最后一个这种类型的子元素开始往前计数

    3.否定伪类

    4.伪元素选择器

    常用的伪元素有
    • ::before
    • ::after

    ::before和::after用来在一个元素的内容之前或之后插入其他内容(可以是文字、图片)

    常通过 content 属性 来为一个元素添加修饰性的内容。
    1. /* 伪元素 */
    2. <style>
    3. .item::before {
    4. content: "321";
    5. color: orange;
    6. font-size: 20px;
    7. }
    8. .item::after {
    9. content: url("../images/hot_icon.svg");
    10. font-size: 20px;
    11. position: relative; /* 相对定位 */
    12. left: 5px;
    13. top: 2px;
    14. }
    15. style>
    16. <div class="item">我是box3div>

    • ::first-line(选中第一行)
    • ::first-letter (选中第一个字母)
    1. <style>
    2. .box {
    3. width: 800px;
    4. background-color: #f00;
    5. color: #fff;
    6. }
    7. .box::first-line {
    8. font-size: 30px;
    9. color: orange;
    10. }
    11. .box::first-letter {
    12. font-size: 50px;
    13. color: blue;
    14. }
    15. style>
    16. <div class="box">
    17. 雁门关,别名西陉关 ,坐落于我国山西省忻州市代县以北约成员国20千米的雁门山。它是长城上的一个关键大关,与宁武关、偏关并称之为“外三关”。坐落于偏关县大河上,辖四侧墙,总长度数百公里。迄今仍有30千米储存完好无损,所有用砖遮盖,沿堤岸耸立,十分壮阔。“边关丁宁岩,山连紫塞,地控大河北,鑫城携手共进强。”这也是前人对偏关的赞扬。早在春秋战国时代,这儿便是赵武灵王攻克胡林的竞技场。唐朝名将在关东建有九龙庙,宋代建有魏镇、杨三关。现有的关城始建明洪武二十三年,是重点学科文物古迹。
    18. div>

    为了区分伪元素和伪类,建议伪元素使用2个冒号::

  • 相关阅读:
    三个统一..........
    P34 JTable表格
    CSS 滚动捕获 scroll-snap-type
    编程参考 - C语言里使用fgets函数读了个寂寞
    springboot+jwt+shiro+vue+elementUI+axios+redis+mysql完成一个前后端分离的博客项目(笔记,帮填坑)
    PHP极简网盘系统源码 轻量级文件管理与共享系统网站源码
    技术实践|大模型内容安全蓝军的道与术
    搭建 AI 图像生成器 (SAAS) php laravel
    指针详解【C语言】
    干货!阿里「大型分布式技术手册」,站在巨人肩膀上学习架构
  • 原文地址:https://blog.csdn.net/ICanWin_lll/article/details/133996846