【问题标题】:How can I increase the gap between text and its underline如何增加文本与其下划线之间的差距
【发布时间】:2021-04-12 18:26:24
【问题描述】:

我的引导导航栏如下所示:

当我将鼠标悬停在每个菜单选项上时,它会显示一个动画下划线,如下所示:

如何增加文本与其下划线之间的间距?

【问题讨论】:

  • 您可能会查看text-underline-offset,尽管(在撰写本文时)它仅与最新版本的主要浏览器兼容。
  • 让我确认您实际上想说什么。您刚刚编辑了将您的问题更改为不同问题的问题

标签: html css bootstrap-4 frontend


【解决方案1】:

使用边框代替下划线可以解决您的问题。试试这个代码。

ul.ml-auto > li > a > span{
    font: 15px Roboto,sans-serif;
    font-weight: 500;
    position: relative;
    display: inline-block;
    color: #FFFFFF80;
    overflow: hidden;
      padding-bottom: 5px;
    }
    ul.ml-auto > li > a > span::before {
    position: absolute;
    content: attr(data-content);
    color: #00FFFF;
    clip-path: polygon(0 0, 0 0, 0% 100%, 0 100%);
    transition: clip-path 275ms ease;
      display: block;
      border-bottom: 1px solid #00FFFF;
      padding-bottom: 3px;
    }

【讨论】:

    【解决方案2】:

    首先使用 text-decorate: underline 时不能修改间距

    你的代码使用 <:before> 因为 span 是内联样式,然后它的间距会随着里面的内容而固定。

    我的解决方案是为你和 <:before> 进行填充,然后在 :before 标签内使用border-bottom

    ul.ml-auto > li > a > span{
       ///Adding bottom-padding here
       padding-bottom: 3px; // your spacing you want - 1 cause the border will take 1px of the height
    }
    
    ul.ml-auto > li > a > span::before {
       border-bottom: 1px solid red;
       padding-bottom:2px;
    }
    

    <!DOCTYPE html>
    <html>
       <head>
           <title>Bootstrap Resize</title>
           <meta charset="utf-8"></meta>
           <meta name="viewport" content="width=device-width, initial-scale=1" ></meta>
           <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" />
           <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
       </head>
    
       <style type="text/css">
        .navbar-custom { 
        background-color: #484848;
        }
    
        ul.ml-auto > li > a > span{
        font: 15px Roboto,sans-serif;
        font-weight: 500;
        position: relative;
        display: inline-block;
        color: #FFFFFF80;
        overflow: hidden;
        padding-bottom:2px;
        }
        ul.ml-auto > li > a > span::before {
        position: absolute;
        content: attr(data-content);
        color: #00FFFF;
        border-bottom: 1px solid red;
        padding-bottom:2px;
        clip-path: polygon(0 0, 0 0, 0% 100%, 0 100%);
        transition: clip-path 275ms ease;
        }
        ul.ml-auto > li > a > span:hover::before {
        clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
        }
       </style>
    
       <body>                 
        <nav class="navbar navbar-custom navbar-expand-lg navbar-dark fixed-top" id="mainNav">
          <div class="container">
            <a  style="font: 20px Arial,sans-serif" class="navbar-brand js-scroll-trigger" href="#">HOME</a>
            <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
              <span class="navbar-toggler-icon"></span>
            </button>
    
            <div class="collapse navbar-collapse" id="navbarResponsive">
              <ul style="font: 15px Roboto,sans-serif" class="navbar-nav ml-auto">
                <li class="nav-item">
                  <a class="nav-link js-scroll-trigger" href="#about"><span data-content="LOREM">LOREM</span></a>
                </li>
                <li class="nav-item">
                  <a class="nav-link js-scroll-trigger" href="#expertise"><span data-content="LOREM">LOREM</span></a>
                </li>
                <li class="nav-item">
                  <a class="nav-link js-scroll-trigger" href="#portfolio"><span data-content="LOREM">LOREM</span></a>
                </li>
                <li class="nav-item">
                  <a class="nav-link js-scroll-trigger" href="#contact"><span data-content="LOREM">LOREM</span></a>
                </li>
              </ul>
            </div>
    
          </div>
        </nav>
       </body>
    </html>

    【讨论】:

      【解决方案3】:

      这里是一个示例 Html,用于在菜单中填充列表的顶部和底部

       <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> 
       <a class="navbar-brand" href="#">Navbar</a>
       <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
       <span class="navbar-toggler-icon"></span>
       </button>
       <div class="collapse navbar-collapse" id="navbarTogglerDemo01">
       <ul class="ml-auto navbar-nav">
       <li class="nav-item">
       <a class="nav-link" href="">Contact</a>
       </li> 
       <li class="nav-item">
       <a class="nav-link" href="">About me</a>
       </li> 
       <li class="nav-item">
       <a class="nav-link" href="">Features</a>
       </li> 
        </ul> 
         </div>
        </nav>
      
      here is the code for underline
      
      
      li{
          text-decoration: underline;
          text-underline-position: under;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-16
        • 2021-12-21
        • 2013-12-01
        • 2017-11-24
        • 2021-12-10
        • 2015-10-13
        • 2023-01-20
        相关资源
        最近更新 更多