You need to enable JavaScript to run this app. CSS3 hover触发的宽度过渡效果失效,附代码与演示地址
优惠活动
大模型
产品
解决方案
定价
更多

CSS3 hover触发的宽度过渡效果失效,附代码与演示地址

宽度滑入动画修正方案

现有代码存在三处核心问题,会导致动画无法正常触发、效果不符合预期:

  • 触发逻辑完全错配:当前把展开动画绑定在.lang a:hover上,但a标签初始max-width:0时可视宽度几乎为0,根本无法稳定接住鼠标悬浮事件,正确的触发场景应该是鼠标悬浮在父级.lang容器上时,所有内部链接同步触发展开动画
  • 属性冲突破坏过渡:hover状态同时写width:300px和max-width:300px,固定宽度会直接跳过max-width的过渡过程,导致动画直接跳变没有平滑效果
  • 内边距溢出导致收合不彻底:a标签固定padding:10px是全方向的,当max-width为0时,左右内边距会撑出元素边界,收起状态下会留多余缝隙、动画左右不对称

修正后可直接运行的代码

调整后的CSS代码(HTML结构无需改动):

.lang {
    background-color: rgba(255,255,255,0.1);
    left: -130px;
    top: 400px;
    /* 给父级加无背景的热区,扩大鼠标触发范围,避免移开就收起 */
    padding: 10px 0;
}

.lang a {
    /* 初始状态去掉左右方向的内边距,保证max-width为0时完全收合 */
    padding: 10px 0;
    color: black;
    max-width: 0;
    display: block;
    overflow: hidden;
    white-space: nowrap;
    /* 同时给max-width和padding-left加过渡,展开时文字不会贴边 */
    transition: max-width 1s ease-in-out, padding-left 0.3s ease;
}

/* 绑定父级悬浮事件触发所有子链接展开 */
.lang:hover a {
    max-width: 300px;
    padding-left: 10px;
}

调整后效果和参考交互完全一致:鼠标移到侧边区域时,所有语言、搜索链接会从左向右平滑展开,移开后自动收合,没有跳变、留缝的问题。

内容的提问来源于stack exchange,提问作者Mahmoud Khosravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 08:06:01