博客列表 >CSS 基本选择器、上下文选择器、伪类选择器区别演示

CSS 基本选择器、上下文选择器、伪类选择器区别演示

kong
kong原创
2023年02月08日 16:54:52304浏览

选择器

基本选择器

  1. 元素选择器 - div h1 h2

  2. 属性选择器 - div[class='box']
    id, class 使用频率很高的选择器,有专用的语法糖

#id, .class

上下文选择器

  1. 父子元素 >
  2. 后代元素 div p
  3. 兄弟元素 +
  4. 同级元素 ~

伪类选择器

结构伪类

  1. :nth-child(): 选取父元素的第 N 个子元素
  2. :first-child: 第一个元素
  3. :last-child: 最后一个
  4. :nth-last-child(): 匹配属于其元素的第 N 个子元素的每个元素,从最后一个子元素开始计数

状态伪类

  1. :hover: 鼠标悬停
  2. :enabled: 有效控件
  3. :disabled: 禁用控件
  4. :checked: 选中控件
  5. :required: 必选控件
  6. :focus: 焦点控件

伪类选择器

:nth-of-type(an + b)

  1. a: 系数, [0,1,2,3…]
  2. n: 参数, [0,1,2,3…]
  3. b: 偏移量, 从零开始
    规则: 计算出来的索引,必须是有效的(从1开始)

实例

基本选择器

  1. <ul class="list" id="list">
  2. <li class="item">item1</li>
  3. <li class="item">item2</li>
  4. <li class="item">item3</li>
  5. <li class="item cur">item4</li>
  6. <li class="item">item5</li>
  7. <li class="item">item6</li>
  8. <li class="item">item7</li>
  9. <li class="item">item8</li>
  10. </ul>
  1. .list {
  2. background-color: red;
  3. }
  4. #list {
  5. background-color: red;
  6. }

上下文选择器

  1. <ul class="list">
  2. <li class="item">item1</li>
  3. <li class="item">item2</li>
  4. <li class="item">item3</li>
  5. <li class="item cur">item4</li>
  6. <li class="item">item5</li>
  7. <li class="item">item6</li>
  8. <li class="item">item7</li>
  9. <li class="item">item8</li>
  10. </ul>

父元素选择器 >

  1. .list > {
  2. background-color: red;
  3. }

后代元素 空格

  1. .list li {
  2. background-color: red;
  3. }

兄弟元素 +

  1. .list li + li {
  2. background-color: red;
  3. }

同级元素 ~

  1. .list li ~ li {
  2. background-color: red;
  3. }

伪类选择器

  1. <ul class="list">
  2. <li class="item">item1</li>
  3. <li class="item">item2</li>
  4. <li class="item">item3</li>
  5. <li class="item">item4</li>
  6. <li class="item">item5</li>
  7. <li class="item">item6</li>
  8. <li class="item">item7</li>
  9. <li class="item">item8</li>
  10. <li class="item">item9</li>
  11. <li class="item">item10</li>
  12. </ul>

1. 结构伪类

  1. /* 第一个 */
  2. .list li:first-child {
  3. background-color: blue;
  4. }
  5. /* 最后一个 */
  6. .list li:last-child {
  7. background-color: aqua;
  8. }
  9. /* 匹配前三个 */
  10. .list > :nth-child(-n-3) {
  11. background-color: beige;
  12. }
  13. /* 匹配倒数第三个 */
  14. .list > :nth-last-child(-n + 3) {
  15. background-color: khaki;
  16. }
  17. /* 规则: 计算出来的索引,必须是有效的(从1开始) */
  18. .list > :nth-of-type(4n + 1) {
  19. background-color: blueviolet;
  20. }

2.状态伪类

  1. <form action="" method="post">
  2. <label for="a1">
  3. <input type="text" id="a1" name="" value="" />
  4. </label>
  5. <label for="a2">
  6. <input type="button" id="a2" name="" disabled value="按钮" />
  7. </label>
  8. <label for="a3">
  9. <input type="text" id="a3" name="" required value="数值" />
  10. </label>
  11. <label for="a4">
  12. <input type="text" id="a4" name="" value="数值1" />
  13. </label>
  14. <label for="a5">
  15. <input type="checkbox" name="" id="a5" />
  16. <span>演示</span>
  17. </label>
  18. <button type="button">提交</button>
  19. </form>
  1. /* 鼠标悬停 */
  2. form button:hover {
  3. background-color: gold;
  4. }
  5. /* 有效控件 */
  6. form label:nth-child(1) input:enabled {
  7. background-color: aquamarine;
  8. }
  9. /* 禁用控件 */
  10. form label:nth-child(2) input:disabled {
  11. background-color: gray;
  12. }
  13. /* 必选控件 */
  14. form label:nth-child(3) input:required {
  15. background-color: salmon;
  16. }
  17. /* 焦点控件 */
  18. form label:nth-child(4) input:focus {
  19. background-color: sienna;
  20. }
  21. /* 选中控件 */
  22. form label:nth-child(5) input[type="checkbox"]:checked + span {
  23. color: red;
  24. }

使用 :checked 实现显示和隐藏

  1. <label for="ic" class="btn">
  2. <span>点击</span>
  3. <input type="checkbox" id="ic" name="2" />
  4. <ul class="list">
  5. <li>item1</li>
  6. <li>item2</li>
  7. <li>item3</li>
  8. <li>item4</li>
  9. <li>item5</li>
  10. </ul>
  11. </label>
  1. .list {
  2. display: none;
  3. }
  4. .btn input[type="checkbox"]:checked + ul {
  5. display: block;
  6. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议