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

CSS动画需求:水平扩展线条动画停止时添加两端竖线

解决方案

实现思路

核心是等水平线条的扩展动画结束后,在两端显示竖线。可以用两种方式实现:一种是通过JS监听动画结束事件,给线条加状态类来显示竖线;另一种是纯CSS通过动画关键帧同步控制竖线的显示状态。

推荐方案(JS监听,兼容性更强)

HTML结构

沿用你现有的线条容器即可:

<div class="expanding-line"></div>

CSS样式

.expanding-line {
  width: 0;
  height: 2px;
  background: #333;
  position: relative;
  margin: 40px auto;
  /* 动画结束后保持最终状态 */
  animation: expandLine 2s ease forwards;
}

/* 先定义两端竖线的基础样式,默认隐藏 */
.expanding-line::before,
.expanding-line::after {
  content: "";
  position: absolute;
  width: 2px;
  height: 14px; /* 竖线高度可按需调整 */
  background: #333;
  top: 50%;
  /* 让竖线垂直居中 */
  transform: translateY(-50%);
  opacity: 0;
  /* 加个淡入过渡更自然 */
  transition: opacity 0.2s ease;
}

/* 左边竖线贴线条左端 */
.expanding-line::before {
  left: 0;
}

/* 右边竖线贴线条右端 */
.expanding-line::after {
  right: 0;
}

/* 动画结束后添加的类,用来显示竖线 */
.expanding-line.line-complete::before,
.expanding-line.line-complete::after {
  opacity: 1;
}

/* 水平扩展的动画关键帧 */
@keyframes expandLine {
  to {
    width: 80%; /* 线条最终宽度,可自行修改数值 */
  }
}

JS代码

监听动画结束事件,给线条加上显示竖线的类:

const line = document.querySelector('.expanding-line');
line.addEventListener('animationend', () => {
  line.classList.add('line-complete');
});

纯CSS方案(无需JS)

如果不想写JS,也可以直接在动画关键帧里控制竖线的显示:

.expanding-line {
  width: 0;
  height: 2px;
  background: #333;
  position: relative;
  margin: 40px auto;
  animation: expandWithEnds 2s ease forwards;
  /* 用CSS变量控制竖线透明度 */
  --end-opacity: 0;
}

.expanding-line::before,
.expanding-line::after {
  content: "";
  position: absolute;
  width: 2px;
  height: 14px;
  background: #333;
  top: 50%;
  transform: translateY(-50%);
  opacity: var(--end-opacity);
}

.expanding-line::before { left: 0; }
.expanding-line::after { right: 0; }

@keyframes expandWithEnds {
  0% {
    width: 0;
    --end-opacity: 0;
  }
  /* 前95%时间只扩展线条,不显示竖线 */
  95% {
    width: 80%;
    --end-opacity: 0;
  }
  /* 最后阶段显示竖线 */
  100% {
    width: 80%;
    --end-opacity: 1;
  }
}

注意事项

  • 可以根据参考图调整竖线的高度、线条的颜色、最终宽度这些参数,匹配需求。
  • JS方案兼容性更好,适合老浏览器;纯CSS方案需要浏览器支持CSS变量,现代浏览器都能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:24:17