Blogger Information
Blog 100
fans 8
comment 2
visits 150214
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CSS选择器、伪类、伪元素详解
lilove的博客
Original
1065 people have browsed it

一、常用的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元素;
Correcting teacher:WJWJ

Correction status:qualified

Teacher's comments:写的不错,很认真,格式也很规范!
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post