微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么悬停时在未排序的列表中选择了另一个项目?

如何解决为什么悬停时在未排序的列表中选择了另一个项目?

我创建了一个由未排序列表和列表项组成的导航栏。其中有一个标签,它又包含一个 svg 图形和一个 span 元素。 我只是不明白为什么 :hover 中的元素的行为如下所述。

我将光标移到列表项上,它完全符合我在 css 中定义的内容。但是如果我去 svg,那么下面的列表项就会改变。

(在 Codepen 上你可以看到完整的代码https://codepen.io/su3n/pen/OJbvxOX

我的 HTML 结构是这样的:

<nav class="navbar">
  <ul class="navbar-lst">
    
    <li class="navlst-item logo">
      <a href="#" class="navlst-link">
       
        <span class="link-txt fade-in"></span>
      </a>
    </li>
    
    <li class="navlst-item active">
       <a href="#" class="navlst-link">
        <svg></g></svg>
         <span class="link-txt fade-in">Home</span>
       </a>
    </li>

<!-- etc -->

</ul>
</nav>

而我的 CSS 是这样的:

.navbar {
  width: 5rem;
  height: 100vh;
  position: fixed;
  background-color: var(--bg-primary);
  transition: width 300ms ease;
}

.navbar-lst {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
}

.navlst-item {
  width: 100%;
  filter: opacity(0.7) grayscale(0.7);
}

.navlst-link:hover,.active{
  background-color: rgba(0,0.1);
  Box-shadow: 0.2rem 0px 0px var(--lila) inset;
  filter: opacity(1) grayscale(0);
}

.navlst-link svg {
  min-width: 3rem;
  max-width: 3rem;
  padding-left: 1.1rem;
}

.navlst-item:last-child {
  margin-top: auto;
}

.navlst-link {
  height: 5rem;
  display: flex;
  align-items: center;
  text-decoration: none;
}

.link-txt {
  padding-left: 1rem;
  flex-shrink: 0;
  display: none;
  color: red;
}

.link-txt:first-child {
  text-transform: uppercase;
  letter-spacing: 0.1rem;
}

.navbar:hover {
  width: 20rem;
}

.navbar:hover .link-txt{
  display: block;
  color: white;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。