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

如何实现文字下划线左右最大各延伸300px且适配不同屏幕宽度

实现自适应延伸下划线的方案

方案1:伪元素实现(推荐,无多余DOM)

实现原理

  • 用伪元素生成下划线,无需额外添加空节点
  • 通过min()函数动态计算宽度,同时满足两个限制:最大宽度为文本宽度+600px(左右各延伸300px)、最大不超过屏幕宽度减20px(避免贴边)
  • 绝对定位配合水平偏移实现下划线与文本居中对齐

完整代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>自适应下划线</title>
  <style>
    .text-wrapper {
      display: inline-block;
      position: relative;
      /* 可自定义文本上下边距 */
      margin: 20px 0;
    }
    .text-wrapper::after {
      content: '';
      position: absolute;
      /* 调整下划线和文本的间距 */
      bottom: -4px;
      left: 50%;
      transform: translateX(-50%);
      /* 下划线高度 */
      height: 2px;
      /* 下划线颜色 */
      background-color: #222;
      /* 核心规则:动态计算宽度 */
      width: min(calc(100% + 600px), calc(100vw - 20px));
    }
  </style>
</head>
<body style="text-align: center; padding: 0 10px;">
  <div class="text-wrapper">
    <p>Hello</p>
  </div>
</body>
</html>

方案2:基于原有代码修改

无需调整整体结构,仅修改两处样式即可修复问题:

  1. 左右空div将固定width:300px改为flex: 1; max-width: 300px,实现宽屏固定300px、窄屏自动收缩
  2. 外层父容器添加max-width: 100%,避免超出屏幕宽度

修改后代码

<div style="max-width: 100%; width: fit-content; display: flex; flex-direction: column; margin: 0 auto;">
    <div style="display: flex; flex-direction: row; width: 100%;">
        <div style="flex: 1; max-width: 300px;"></div>
        <p style="margin: 0;">Hello</p>
        <div style="flex: 1; max-width: 300px;"></div>
    </div>
    <hr style="width: 100%; margin: 4px 0 0 0;">
</div>

效果验证

  • 宽屏场景:下划线向左右各延伸300px,符合预期
  • 窄屏场景:下划线自动收缩到适配屏幕宽度,不会溢出被裁剪

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:36:03