为无序列表ul li添加hover效果失败,寻求解决方案
修复导航列表的hover下划线效果问题
问题原因
- HTML结构错误:导航文字写在了
<a>标签外部,鼠标hover时无法触发<a>元素的hover事件,伪元素::after的hover状态自然不会生效。 - CSS语法错误:
#header选择器中的padding-bottom: 50缺少单位和分号,会干扰CSS解析。
修复方案
- 将导航文字移入
<a>标签内部,确保hover目标正确。 - 修正CSS语法错误,补充单位与分号。
- 可选:给伪元素添加过渡动画,优化交互体验。
修复后的完整代码
CSS 代码
body{ background: #080808; color: #fff; } #header{ width: 100%; height: 100vh; background-image: url(); background-position: center; background-size: cover; padding-bottom: 50px; /* 补充单位与分号 */ } .container{ padding: 10px 10% ; } nav{ display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; } .logo{ width: 140px; } nav ul li{ display: inline-block; list-style: none; margin: 10px 20px; } nav ul li a{ position: relative; text-decoration: none; color: #fff; } nav ul li a::after{ content: ""; position: absolute; bottom: -6px; left: 0; width: 0; height: 3px; background-color: red; transition: width 0.3s; /* 添加过渡动画 */ } nav ul li a:hover::after{ width: 100%; }
HTML 代码
<div class="container"> <nav> <img src="" class="logo"> <ul> <li><a href="#Home">Home</a></li> <!-- 文字移入a标签内 --> <li><a href="#About">About</a></li> <li><a href="#Services">Services</a></li> <li><a href="#Portfolio">Portfolio</a></li> <li><a href="#Contact">Contact</a></li> </ul> </nav> </div>
内容的提问来源于stack exchange,提问作者Ammad Ali
相关产品推荐
相关产品推荐

