博客列表 >CSS选择器、伪类、伪元素详解

CSS选择器、伪类、伪元素详解

lilove的博客
lilove的博客原创
2020年06月17日 01:52:151066浏览

一、常用的CSS选择器

选择器的意义:使CSS样式表能够准确选择到要改变样式的html元素。

  • 简单选择器:使用html元素标签名称 <...> , 可直接选择一类标签;

  • 类选择器:.class 表示,对应元素标签内属性 class="..."

    还可以多个类复合使用以 .class1.class2 表示,CSS中使用class选择器较常见;

  • id选择器:*#id 表示,对应元素标签内属性 id="..."

    通常我们可以去掉 * ,写成 #id

    现在id选择器使用场景主要在javascript中的锚点表单中。

  • 后代选择器:例如 .class .children,表示选择 .class下的所有 .children 元素;

  • 父子选择器: .class > li , 选择 .class 元素下的所有 li 子元素;

  • 同级相邻选择器: .class1.class2 + .class3 , 选择指定元素的后一个元素;

  • 同级相邻所有选择器: .class1.class2 ~ .class1 , 选择指定元素的后所有元素;


二、伪类选择器(不分组)

  • 选择指定元素的第1个子元素:

    .class :first-child.class1 > .class2:first-child

  • 选择指定元素的最后1个子元素:

    .class1 > :last-child.class1 > .class2:last-child

  • 选择指定元素的第3个子元素:

    .class1 > :nth-child(3) ,注意这里是从1开始的索引

  • 选择指定元素偶数子元素:

    .class > :nth-child(2n) ,n的值递增1,从0开始,第0个元素不存在;

    还可以用 .class > :nth-child(even)

  • 选择指定元素奇数子元素:

    .class > :nth-child(2n-1) , .class > :nth-child(2n+1)

    还可以用 .class > :nth-child(odd)

  • 选择指定子元素位置开始后面的所有元素:

    .container > .item:nth-child(n + 4) , 表示从第4开始取后面所有元素;

  • 选择指定元素前3个子元素:

    .class1 .class2:nth-child(-n + 3)

  • 选择指定元素后3个子元素:

    .class1 .class2:nth-last-child(-n + 3)

  • 选择指定元素倒数第2个子元素:

    .class1 .class2:nth-last-child(2)


三、伪类选择器(分组)

  • 分组选择指定元素最后1个:

    .class1 class2:last-of-type

  • 分组选择指定元素第3个:

    .class1 class2:nth-of-type(3)

  • 指定元素前三个分组子元素:

    .class1 class2:nth-of-type(-n + 3)

  • 指定元素后两个分组子元素:

    .class1 class2:nth-last-of-type(-n + 2)


四、伪类与伪元素

在html代码中的用法

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>小刚的开发日志,伪类与伪元素</title>
  7. </head>
  8. <style>
  9. #login {
  10. display: none;
  11. }
  12. /* :target目标 */
  13. #login:target {
  14. display: block;
  15. }
  16. /* 焦点 */
  17. input:focus {
  18. background-color: chartreuse;
  19. }
  20. /* 文本选中 */
  21. input::selection {
  22. color: chocolate;
  23. background-color: cyan;
  24. }
  25. /* :not()排除不满足条件 */
  26. ul > :not(:nth-of-type(2)) {
  27. background-color: lightblue;
  28. }
  29. /* 在指定元素之前生成伪元素 */
  30. ul::before {
  31. content: "小刚的日志";
  32. color: lightcoral;
  33. }
  34. /* 在指定元素之后生成伪元素 */
  35. ul::after {
  36. content: "你好,世界";
  37. color: lightgreen;
  38. }
  39. </style>
  40. <body>
  41. <a href="#login">登陆</a>
  42. <button onclick="location='#login'">点击登录</button>
  43. <form action="" method="POST" id="login">
  44. <label for="email">邮箱:</label>
  45. <input type="email" name="email" id="email" />
  46. <label for="password">密码:</label>
  47. <input type="password" name="password" id="password" />
  48. <button>登陆</button>
  49. </form>
  50. <ul>
  51. <li>1</li>
  52. <li>2</li>
  53. <li>3</li>
  54. </ul>
  55. </body>
  56. </html>

以上代码运行效果


总结:

  1. css外部样式表中优先级:元素 < class选择器 < id选择器;
  2. nth-child()等相关选择器中表达式n的取值是从0开始的递增,遇到结果为0的时候忽略;
  3. 奇数,偶数可用固定参数odd,even;
  4. 元素可从倒数顺序来选择;
  5. 分组选择时会依据不同类型元素分别选择;
  6. 伪类与伪元素可无需javascript代码生成新的html元素;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议