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

鼠标悬停时文本左右两侧线条展开动画实现求助

实现悬停文本时左右线条展开的效果

嘿,我懂你要的这种精致效果——鼠标一放到文本上,左右两边的线条就顺滑地拉满整个容器宽度对吧?用伪元素完全能搞定,大概率是你之前的布局逻辑没理顺,我给你个简洁省心的实现方案,用Flex布局来做最直观:

第一步:HTML结构

超级简单,只需要一个容器包裹你的文本就行:

<div class="text-with-lines">SOME TEXT</div>

第二步:CSS核心样式

用Flex布局控制元素排列,伪元素负责生成线条,配合过渡动画实现展开效果:

/* 父容器基础样式 */
.text-with-lines {
  display: flex;
  align-items: center; /* 让线条和文本垂直居中对齐 */
  gap: 1rem; /* 线条和文本之间的间距,可根据需求调整 */
  width: 100%; /* 让容器占满父级宽度,也可以设固定宽度比如800px */
  justify-content: center; /* 默认状态下文本居中,线条隐藏 */
}

/* 左右线条的伪元素 */
.text-with-lines::before,
.text-with-lines::after {
  content: '';
  height: 1px; /* 线条粗细,可按需调整 */
  background-color: #333; /* 线条颜色,换成你需要的色调 */
  flex-grow: 0; /* 初始状态不占用空间,线条默认隐藏 */
  width: 0;
  transition: all 0.3s ease; /* 动画过渡速度,0.3s是比较自然的节奏 */
}

/* 悬停时触发线条展开 */
.text-with-lines:hover::before,
.text-with-lines:hover::after {
  flex-grow: 1; /* 让两个伪元素平分容器剩余空间,自动拉满左右 */
}

额外自定义选项

如果你想要虚线线条,把伪元素的样式改成这样就行:

.text-with-lines::before,
.text-with-lines::after {
  content: '';
  border-top: 1px dashed #333; /* 虚线样式 */
  flex-grow: 0;
  width: 0;
  transition: all 0.3s ease;
}

要是觉得动画太快或太慢,调整transition里的0.3s数值即可,比如改成0.5s会更平缓。

这个方案的好处是不用手动计算宽度,Flex会自动帮你分配空间,兼容性也很好,主流浏览器都支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:17:50