【问题标题】:Bootstrap 5 underline default changed?Bootstrap 5下划线默认更改?
【发布时间】:2021-04-05 08:49:51
【问题描述】:

在 Bootstrap 4 中,我理解它将默认文本装饰设置为无。

但是使用 Bootstrap 5 如果我只是添加一个原始锚标记,它现在同时显示蓝色文字和下划线。

我希望只在悬停时显示 undelrine。这是 bootstrap 5 在发行版中更改的内容吗?我找不到任何说明它的文档。

目前我使用:

    a {
    text-decoration: none;
    color: inherit;
}

a:hover {
    text-decoration: underline;
    color: inherit
}

但这也会影响任何按钮作为链接,例如

<a href="{% url 'answer-create' question.id %}" class="btn btn-outline-dark mr-2 py-0">Answer</a>

【问题讨论】:

    标签: html bootstrap-4 bootstrap-5


    【解决方案1】:

    是的,从 Bootstrap 5 alpha1 开始,migration docs state

    “链接默认带有下划线(不仅仅是悬停),除非它们是特定组件的一部分”

    你可以像这样创建一个特殊的类:

    .text-underline-hover {
        text-decoration: none;
    }
    
    .text-underline-hover:hover {
        text-decoration: underline;
    }
    
    <a href="#" class="text-underline-hover">Link</a>
    

    Demo

    或者,如果您希望它适用于除包含class= 属性的锚以外的所有锚,请使用:

    a:not([class]) {
        text-decoration: none;
    }
    
    a:not([class]):hover {
        text-decoration: underline;
    }
    

    这不会影响btn,只有没有class 的链接会在悬停时加下划线。

    【讨论】:

    • 谢谢,是否有最佳做法仅在悬停时启用?我已经在上面编辑了我的问题,以显示我目前正在做什么和工作,尽管它会导致链接按钮也受到影响,这不是我想要的。
    • 我不知道这个决定背后的原因。如果您想了解更多信息,可以open an issue on GH
    • 我的更新为你提供了解决方案。这样btn就不会受到影响。见:codeply.com/p/3tRMSkoshD
    • 完美运行,这意味着我不必添加任何自定义样式。谢谢!
    • 对于大型网站,可能有此&lt;a class="mb-4" ... 的代码链接,这两种解决方案都无法正常工作。后一种解决方案将使其带有下划线,第一种解决方案将涉及查找和调整所有这些链接。不过,这个答案是一个好的开始。让我尝试调整第二个解决方案并将其作为新答案发布。
    【解决方案2】:

    一体化解决方案

    Bootstrap 5 的这个 CSS 代码不会在您的 &lt;a ...&gt; 链接上加下划线(除非将鼠标悬停在上面):

    • 即使他们有另一个课程,例如 mb-4
    • 除非他们有 btn 类,在这种情况下他们保持不变。

    复制粘贴到您的 CSS 文件中的代码:

    /* Bootstrap 5 tweak: do not underline links unless hovered over */
    a:not([class*="btn"]) {
        text-decoration: none;
    }
    a:not([class*="btn"]):hover {
        text-decoration: underline;
    }
    

    证明:

    /* Simulate Bootstrap 5 CSS */
    a { 
        text-decoration: underline;
    }
    a:hover { 
        text-decoration: underline;
    }
    a.btn {
       text-decoration: none;
       border: 1px solid #ccc;
    }
    a.btn:hover {
       text-decoration: none;
       border: 1px solid #ccc;
       background-color:  #ccc;
    }
    
    /* Bootstrap 5 tweak: do not underline links unless hovered over */
    a:not([class*="btn"]) {
        text-decoration: none;
    }
    a:not([class*="btn"]):hover {
        text-decoration: underline;
    }
    <a href="foo.html">An a link without class</a><br/>
    <br/>
    <a href="foo.html" class="cool">An a link with class cool</a><br/>
    <br/>
    <a href="foo.html" class="btn">An a link with class btn</a>

    【讨论】:

      【解决方案3】:

      您的 &lt;a&gt; 标记也有 btn 类,这就是您出现这种行为的原因。

      class="btn btn-outline-dark mr-2 py-0"
      

      因为引导程序中的按钮也有 btn 类。这就是为什么要使用 CSS。

      a:hover {
          text-decoration: underline;
          color: inherit
      }
      

      btn 类的所有按钮也变为下划线。

      解决方案:

      只需从&lt;a&gt; 中删除btn btn-outline-dark 并使用自定义类对其进行样式设置。

      <a href="{% url 'answer-create' question.id %}" class="mylink mr-2 py-0">Answer</a>
      

      【讨论】:

      【解决方案4】:

      由于默认锚点现在带有下划线,因此定义自定义 CSS 规则很棘手,因为这些规则会干扰组件(例如导航栏、下拉菜单等)。

      我认为官方解决方案将在所有锚点上使用.text-decoration-none。这有点烦人,但它是明确的,而且我们都希望是面向未来的。 :)

      【讨论】:

        猜你喜欢
        • 2022-01-07
        • 1970-01-01
        • 2012-10-19
        • 2012-04-03
        • 2012-09-15
        • 2014-08-27
        • 2015-12-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多