CSS 特效 词条目录
前端Wiki/CSS 特效/加载与滚动/滚动特效

悬停放大列表

悬停放大列表:列表项悬停时整体轻微放大并高亮,其余项缩小变淡——列表导航、歌单、文章列表都很常用。纯 CSS 用 :hover 配合 :has() 选择器即可实现“其它项让位”。

兼容性::has() 在 Chrome 105+/Safari 15.4+ 支持;不支持的环境降级为“只放大当前项”即可。

  • 当前项 scale(1.03) 放大;容器 :has(:hover) 时其余项缩小
  • transition 统一 .3s,手感顺滑
  • 用 :has(.item:hover) 而不是麻烦的 JS 兄弟选择
HTML
<style>
.list { max-width: 420px; margin: 30px auto; list-style: none;
        padding: 0; transition: .3s; }
.list .item { padding: 16px 20px; margin: 8px 0; border-radius: 10px;
  background: #f6f8fa; cursor: pointer;
  transition: transform .3s ease, opacity .3s ease, background .3s; }
.list .item:hover { transform: scale(1.03); background: #e8f0fe; }
.list:has(.item:hover) .item:not(:hover) {
  transform: scale(.97); opacity: .55; }
</style>
<ul class="list">
  <li class="item">列表项 A —— 悬停我</li>
  <li class="item">列表项 B</li>
  <li class="item">列表项 C</li>
  <li class="item">列表项 D</li>
</ul>
本节要点悬停放大列表用 :has() 让其余项“退让”;不支持的环境降级为单端放大。
🔗 相关词条伪元素弹性布局CSS3