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

如何实现文本后接两侧自适应破折号的居中单行按钮布局

单行自适应破折号居中按钮布局实现

直接使用Flex弹性布局即可完成需求,无需硬编码破折号数量,天然支持单行对齐,两侧破折号自动等宽撑满剩余空间。

核心实现思路

  • 外层容器设置为弹性盒,强制所有子元素沿水平方向排列、垂直居中对齐,从根源解决不同元素不在同一行的问题
  • 前置文本、按钮设置为不收缩,避免内容被挤压变形或换行
  • 按钮两侧各放一个空填充元素,设置弹性增长属性平分所有剩余宽度,填充区域用样式生成破折号效果,比手动写入-字符更整齐,不会出现半截破折号的显示问题

完整代码

<div class="dash-line">
  <span class="pre-text">Some text</span>
  <span class="dash"></span>
  <button class="center-btn">Centered Button</button>
  <span class="dash"></span>
</div>
.dash-line {
  width: 100%;
  display: flex;
  align-items: center;
  column-gap: 12px; /* 控制文本、破折号、按钮的间距,可按需调整 */
}

.pre-text {
  flex-shrink: 0;
  font-size: 16px;
}

.dash {
  flex: 1; /* 两个dash元素自动平分剩余宽度 */
  height: 1px;
  /* 渐变生成均匀破折号,修改参数可调整破折号长短、间距 */
  background: repeating-linear-gradient(
    to right,
    currentColor,
    currentColor 8px,
    transparent 8px,
    transparent 16px
  );
}

.center-btn {
  flex-shrink: 0;
  padding: 6px 16px;
  cursor: pointer;
}

如果需要使用真实-字符作为填充,可替换.dash的样式为以下代码,在标签内写入足量-即可,超出部分会自动隐藏:

.dash {
  flex: 1;
  overflow: hidden;
  white-space: nowrap;
}

效果特性

  • 容器宽度、前置文本长度、按钮尺寸变化时,两侧破折号始终保持等宽,按钮自动居中
  • 所有元素默认单行展示,不会出现错位换行
  • 破折号样式可灵活调整,无需手动增减破折号数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.18 16:15:43