为什么在flex或grid中悬停不起作用? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在flex或grid中悬停不起作用? [关闭]相关的知识,希望对你有一定的参考价值。

我正在尝试在水平菜单栏中使用flex和grid,并且悬停无法正常工作。它在没有网格或弹性的情况下工作正常。我正在尝试是否可以与grid或flex一起使用。

html

<div class="hmenu">
 <ul>
  <li>A</li>
  <li>B</li>
  <li>C</li>
 </ul>

CSS:

.hmenu{ display: grid; grid-auto-columns: auto; background-color: #015491; margin-top: 5px; }
.hmenu > ul { display: flex; justify-content: center; align-items: center; }
.hmenu > ul > li { display: flex; width: auto; height: 100%; background: linear-gradient(-45deg, #788cff, #b4c8ff); border: #A67BC6 solid; padding: 10px; align-items: center; justify-content: center; margin-right: 50px; }
.hmenu > a { font-size: 15px; line-height: 100%; text-transform: uppercase; text-decoration: none; font-family: sans-serif "Avenir Light"; font-weight: strong 300; color: #FFFFFF; }
.hmenu a:hover { box-shadow: 0px 16px 22px 2px rgba(51,51,51,0.2); transform: translateY(-20px); background-color: #73b3e7; }
答案

a:hover仅适用于A HREF元素,并且在您的代码中没有它们。

放置一个HREF元素:

<div class="hmenu">
 <ul>
  <li><a href="...">A</a></li>
  <li><a href="...">B</a></li>
  <li><a href="...">C</a></li>
 </ul>
</div>

或使用.hmenu:hover代替.hmenu a:hover。

.hmenu{ display: grid; grid-auto-columns: auto; background-color: #015491; margin-top: 5px; }
.hmenu > ul { display: flex; justify-content: center; align-items: center; }
.hmenu > ul > li { display: flex; width: auto; height: 100%; background: linear-gradient(-45deg, #788cff, #b4c8ff); border: #A67BC6 solid; padding: 10px; align-items: center; justify-content: center; margin-right: 50px; }
.hmenu > a { font-size: 15px; line-height: 100%; text-transform: uppercase; text-decoration: none; font-family: sans-serif "Avenir Light"; font-weight: strong 300; color: #FFFFFF; }
.hmenu :hover { box-shadow: 0px 16px 22px 2px rgba(51,51,51,0.2); transform: translateY(-20px); background-color: #73b3e7; }

此外,您应该使用.hmenu a而不是.hmenu> a,或者也许使用.hmenu> ul> li> a ...,但是按原样,它将不起作用。

另一答案
<li><a href="...">A</a></li>
  <li><a href="...">B</a></li>
  <li><a href="...">C</a></li>
 </ul>

现在可以使用!

另一答案
<div class="hmenu"> <ul> <li>A</li> <li>B</li> <li>C</li> </ul> </div> .hmenu{ display: grid; grid-auto-columns: auto; background-color: #015491; margin-top: 5px; } .hmenu > ul { display: flex; justify-content: center; align-items: center; } .hmenu > ul > li { display: flex; width: auto; height: 100%; background: linear-gradient(-45deg, #788cff, #b4c8ff); border: #A67BC6 solid; padding: 10px; align-items: center; justify-content: center; margin-right: 50px; } .hmenu > a { font-size: 15px; line-height: 100%; text-transform: uppercase; text-decoration: none; font-family: sans-serif "Avenir Light"; font-weight: strong 300; color: #FFFFFF; } .hmenu ul li:hover { box-shadow: 0px 16px 22px 2px rgba(51,51,51,0.2); transform: translateY(-20px); background-color: #73b3e7; }
现在可以使用!

以上是关于为什么在flex或grid中悬停不起作用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

jquery animate 在鼠标悬停时不起作用[关闭]

元素上的悬停效果在 CSS 中不起作用 [重复]

flex-grow 在 Internet Explorer 11 中不起作用 [关闭]

悬停对IE10的影响

CSS悬停在初始动画后不起作用

jQuery / SASS悬停不起作用[关闭]