tab栏之下划线跟随运动

339 阅读1分钟

下面将实现的是一个tab栏,当鼠标移动上去时: 若当前是从左向右,那么下划线的宽度就是从左向右从0%增加到100%; 当下划线的宽度是从右向左,那么下划线的宽度就是从右向左从0%增加到100%

需要注意的就是每个li之间需要用padding来进行隔离

具体实现代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }

    ul {
      display: flex;
      margin-left: 20px;
    }

    li {
      list-style: none;
      padding: 20px;
      position: relative;
    }

    li::before {
      content: "";
      position: absolute;
      top: 0;
      left: 100%;
      width: 0;
      height: 100%;
      border-bottom: 2px solid #000;
      transition: 0.2s all linear;
    }

    li:hover::before {
      width: 100%;
      left: 0;
    }

    li:hover~li::before {
      left: 0;
    }
  </style>
</head>

<body>
  <ul>
    <li>不可思议的css</li>
    <li>导航栏</li>
    <li>光标下划线跟随</li>
    <li>PURE CSS</li>
    <li>Nav Underline</li>
  </ul>
</body>

</html>

image.png