第二个li标签父元素不是ul吗 为什么列表1没有变红

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .biao:first-child{
            color: red;
        }
    </style>
</head>
<body>
    <ul>
        <li>列表1</li>
        <li class="biao">列表2</li>
        <li>列表3</li>
        <li>列表4</li>
        <li>列表5</li>
    </ul>
</body>
</html>

img

使用:first-child伪类时一定要保证前面没有兄弟节点,或者用一个div包裹住

img

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .biao:first-child {
        color: red;
      }
    </style>
  </head>
  <body>
    <ul>
      <!-- <li>列表1</li> -->
      <li class="biao">列表2</li>
      <li>列表3</li>
      <div>
        <li class="biao">被div包裹住的li</li>
      </div>

      <li>列表5</li>
    </ul>
  </body>
</html>

<style>
        li:first-child{
            color: red;
        }
    </style>

改成这样就可以了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .biao{
            color: red;
        }
    </style>
</head>
<body>
    <ul>
        <li>列表1</li>
        <li class="biao">列表2</li>
        <li>列表3</li>
        <li>列表4</li>
        <li>列表5</li>
    </ul>
</body>
</html>

如果你想让ul的第一个元素变红,那么class应该应用于ul
css只作用于引用了它的那一部分
它不是js,不去自动找文档里的其他部分
你不能整个页面只有一个li引用class,然后在里面写个复杂的表达式调整整个页面的布局,那是行不通的

:first-child表示在一组兄弟元素中的第一个元素