要实现这个效果,你可以使用CSS的:hover
伪类选择器和opacity
属性来控制元素的透明度。以下是一个简单的示例,展示了如何让所有其他的div
在悬停时淡出,而不仅仅是那些之后的div
。
<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
</div>
.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
gap: 10px;
}
.item {
padding: 20px;
background-color: #f0f0f0;
text-align: center;
transition: opacity 0.3s ease;
}
.item:hover {
opacity: 1;
}
.item:not(:hover) {
opacity: 0.5;
}
container
包裹所有的item
,每个item
代表菜单中的一个项。.container
:设置为网格布局,使用grid-template-columns
来创建响应式列,repeat(auto-fit, minmax(100px, 1fr))
表示自动适应屏幕宽度,每列最小宽度为100px,最大为1fr(等分剩余空间)。.item
:设置基本样式,包括内边距、背景色、文本居中和过渡效果。.item:hover
:当悬停在某个item
上时,将其透明度设置为1(完全不透明)。.item:not(:hover)
:当没有悬停在某个item
上时,将其透明度设置为0.5(半透明)。这种效果常用于需要突出显示当前选中项的菜单或卡片布局中。通过淡出其他项,可以引导用户的注意力集中在当前悬停的项上。
transition
属性设置正确,通常使用opacity 0.3s ease
可以获得平滑的过渡效果。grid-template-columns
的值,或者使用媒体查询来针对不同屏幕尺寸设置不同的列数。will-change
属性来优化动画性能:will-change
属性来优化动画性能:通过以上方法,你可以实现一个响应式的菜单,当悬停在某个项上时,其他项会淡出,从而突出显示当前项。
领取专属 10元无门槛券
手把手带您无忧上云