在标签内的div上悬停过渡[重复]

Posted

技术标签:

【中文标题】在标签内的div上悬停过渡[重复]【英文标题】:hover transition on div within an a tag [duplicate] 【发布时间】:2018-11-07 11:36:24 【问题描述】:

所以我有一个如下所示的导航:

  <nav>
    <ul>
      <li>
        <a href="#">About</a>
        <div style="background-color: #c03546;height: 10px;"></div>
      </li>
      <li>
        <a href="#">Companies</a>
        <div style="background-color: #f26d5b;height: 10px;"></div>
      </li>
      <li>
        <a href="#">Brands</a>
        <div style="background-color: #f6ea8c;height: 10px;"></div>
      </li>
    </ul>
  </nav

我只需要通过 css 应用一种样式,当我将鼠标悬停在它对应的 div 上时会出现(这些 div 最初不显示)加上 - 我需要它们逐渐出现,所以我需要有一个过渡持续时间。

到目前为止,我设法让 div 在将鼠标悬停在标签上时出现,但我无法添加过渡持续时间,因为它似乎不起作用

  nav 
    position: fixed;
    background-color: #fafafa;
    top: 0;
    width: 100%;
    border-bottom: 1px solid #cacaca;
  

  nav li 
    display: inline-block;
    padding: 0 1em;
  

  nav li a 
    color: #939393;
    font-weight: 400;
    transition-duration: 3s;
  

  nav li div
    display: none;
    transition-duration: 3s;
  

  nav li a:hover +div
    display: block;
  

【问题讨论】:

【参考方案1】:

display 属性不能被动画化。

但您可以改用 opacity 属性:

nav 
  position: fixed;
  background-color: #fafafa;
  top: 0;
  width: 100%;
  border-bottom: 1px solid #cacaca;


nav li 
  display: inline-block;
  padding: 0 1em;


nav li a 
  color: #939393;
  font-weight: 400;
  transition-duration: 3s;


nav li div
  opacity: 0;
  transition-duration: 3s;


nav li a:hover +div
  opacity: 1;
 <nav>
    <ul>
      <li>
        <a href="#">About</a>
        <div style="background-color: #c03546;height: 10px;"></div>
      </li>
      <li>
        <a href="#">Companies</a>
        <div style="background-color: #f26d5b;height: 10px;"></div>
      </li>
      <li>
        <a href="#">Brands</a>
        <div style="background-color: #f6ea8c;height: 10px;"></div>
      </li>
    </ul>
</nav>

【讨论】:

太棒了!我还能通过动画应用什么? w3.org/TR/css-transitions-1/#animatable-css

以上是关于在标签内的div上悬停过渡[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript:div内的元素:悬停时突出显示高度[重复]

加载时淡入淡出过渡到 div [重复]

有没有办法使用CSS向后工作[重复]

有没有办法使用CSS向后工作[重复]

CSS3 过渡不适用于显示属性 [重复]

Css过渡悬停渐变[重复]