You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅用CSS实现浏览器缩放时<hr>宽度动画的问题排查

我明白你遇到的问题了——窗口缩放时<hr>的宽度瞬间变化,完全没有你想要的平滑过渡效果,明明之前实现过,现在却卡壳了对吧?让我帮你找找问题所在。

问题根源

你的<hr>设置了width: 100%,它的宽度完全依赖父元素.container;而.container的宽度是50vw,窗口缩放时这个数值是瞬间更新的,没有任何过渡动画。哪怕你给<hr>加了transition: width 2s ease,它的宽度变化也是跟着父容器的即时变化走的,自然看不到平滑的动画效果。

解决方案

给.container也加上过渡效果,让它的宽度变化变得平滑,这样<hr>的100%宽度就会跟着父容器的渐变过程一起动画。

修改后的完整代码如下:

CSS 部分

html, body {
  background: #aaa;
  text-align: center;
  text-transform: uppercase;
  color: #fff;
  letter-spacing: 2px;
  transition: all 1s;
  font-size: calc(1.25vw + 1.75vh);
}

h1, h3 {
  font-weight: normal;
}

hr {
  width: 100%;
  margin-left: 0%;
  border: 0;
  background-color: #fff;
  height: 1px;
  transition: width 2s ease;
}

.center {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

.container {
  width: 50vw;
  transition: width 2s ease; /* 新增这一行,和hr的过渡时长保持一致 */
}

HTML 部分

<div class="center">
  <div class="container">
    <hr>
    <h1>Test</h1>
    <h3>Lorem ipsum Lorem ipsum Lorem ipsum.</h3>
    <hr>
  </div>
</div>

额外说明

如果你不想给整个容器加过渡,也可以直接把<hr>的宽度改成50vw,保留它自身的transition,这样也能实现效果。但我更推荐给容器加过渡——这样容器内的其他元素(比如标题文本)也能跟着有更统一的适配动画,整体体验会更好。

内容的提问来源于stack exchange,提问作者Cabo Biw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:20