我想要实现的是让我的 li 元素在悬停时自动消失。
当我将鼠标悬停在 li 元素上时,当前的行为是 - 所有元素都会获得填充,而不仅仅是我悬停的元素。
预期的行为是 - 悬停的元素(并且仅悬停的元素)获得填充顶部值,并相对于其他元素向下“绘制”
编辑:我也尝试使用translateY,但问题是它移动了我的元素,而不是将其延伸到底部,这没有实现我试图实现的“绘制”效果。
header {
display: flex;
justify-content: space-between;
margin: 0 50px;
align-items: center;
border-top: 5px solid brown;
}
ul {
display: flex;
list-style-type: none;
align-items: stretch;
gap: 20px;
}
li {
border: 0.5px solid black;
border-width: 0 0.5px 0.5px;
border-radius: 0 0 5px 5px;
}
li:hover {
padding-top: 100px;
transition: 0.2s;
}
a {
color: #000;
text-decoration: none;
height: 100%;
display: flex;
align-items: center;
}
<header>
<h2>Logo</h2>
<div>
<ul>
<li>
<a href="#">Link item</a>
</li>
<li>
<a href="#" }>Link item</a>
</li>
<li>
<a href="#">Link item</a>
</li>
</ul>
</div>
</header>
为了实现这一点,您需要为 li (此处为 fit-content)设置一个高度,这样当 Flex 标头扩展时它不会扩展。我还删除了像这样的标题中的align-items: center,当将鼠标悬停在 li 上时,h2 不会改变位置
header {
display: flex;
justify-content: space-between;
margin: 0 50px;
border-top: 5px solid brown;
}
ul {
display: flex;
list-style-type: none;
align-items: stretch;
gap: 20px;
}
li {
border: 0.5px solid black;
border-width: 0 0.5px 0.5px;
border-radius: 0 0 5px 5px;
height:fit-content;
}
li a:hover {
padding-top: 100px;
transition: 0.2s;
}
a {
color: #000;
text-decoration: none;
height: 100%;
display: flex;
align-items: center;
}
<header>
<h2>Logo</h2>
<div>
<ul>
<li>
<a href="#">Link item</a>
</li>
<li>
<a href="#" }>Link item</a>
</li>
<li>
<a href="#">Link item</a>
</li>
</ul>
</div>
</header>