当前位置:  开发笔记 > 编程语言 > 正文

如何增加CSS中文本和下划线之间的差距

如何解决《如何增加CSS中文本和下划线之间的差距》经验,为你挑选了7个好方法。

使用CSS,在text-decoration:underline应用文本时,是否可以增加文本与下划线之间的距离?



1> chelmertz..:

没有,但你可能会喜欢的东西去border-bottom: 1px solid #000padding-bottom: 3px.

如果你想要"下划线"的相同颜色(在我的例子中是边框),你只需要省略颜色声明,即border-bottom-width: 1pxborder-bottom-style: solid.

对于多行,您可以在元素内的跨度中包装多行文本.例如,insert multiline texts here然后只需添加border-bottom,并padding- 演示


不适用于多行链接:(
我很不确定为什么这个答案有这么多的赞成.这不适用于多行文本.
这个技巧的唯一问题是当我使用等于div高度的line-height然后vertical-align:middle; 为了让它居中,然后我不能使用这个技巧,因为下划线最终在div下面.
对于多行,您可以在元素内的跨度中包装多行文本.例如,` 在此处插入多行文本 `然后只需在``上添加border-bottom和padding.https://jsfiddle.net/Aishaterr/vrpb2ey7/1/

2> last-child..:

text-underline-offset直接使用的问题是即使使用text-decoration-width,下划线往往文本太远而看起来不错.所以我们仍然没有完全控制.

一个为您提供像素精度的解决方案是使用border-bottom伪元素:

a {
    text-decoration: none;
    position: relative;
}
a:after {
    content: '';

    width: 100%;
    position: absolute;
    left: 0;
    bottom: 1px;

    border-width: 0 0 1px;
    border-style: solid;
}

通过更改padding-bottom: 0属性(负数很好),您可以将下划线准确定位在您想要的位置.

这种技术要注意的一个问题是线条包裹它有点奇怪.


好的工作,但这对跨越多行的锚点不起作用
想象一下,对于那些不熟悉网络开发,平面设计师,普通用户或者你的妈妈的人来说,这就是在文本和下划线之间添加一些受控空间所需要的,他们会想知道你在做什么对你的生活有什么影响. .
这对我的特定问题不起作用,但这是一个很棒的技巧.+1

3> 小智..:

你可以用它 text-underline-position: under

有关更多详细信息,请参见此处:https://css-tricks.com/almanac/properties/t/text-underline-position/

另请参阅浏览器的兼容性.


对于没有任何解决方法的现代浏览器,这是正确的答案.
到目前为止,这只适用于Chrome浏览器,而不是其他浏览器的解决方案.
谢谢!如果您尝试使用虚线下划线并且看到它在文本底部和线条之间没有空间的情况下绘制,则可以解决问题.
它甚至不能在Firefox中使用,甚至不能与供应商前缀一起使用-而是在W3C规范中使用:https://www.w3.org/TR/css-text-decor-3/#text-underline-position-property 。其他相关资源:https://www.quackit.com/css/css3/properties/css_text-underline-position.cfm

4> squarecandy..:

深入了解视觉风格的细节text-decoration:underline几乎是徒劳的,所以你将不得不采用某种方式去除删除text-decoration:underline并用其他内容替换它,直到一个神奇的远期未来版本的CSS给我们更多的控制权.

这对我有用:

   a {
    background-image: linear-gradient(
        180deg, rgba(0,0,0,0),
        rgba(0,0,0,0) 81%, 
        #222222 81.1%,
        #222222 85%,
        rgba(0,0,0,0) 85.1%,
        rgba(0,0,0,0)
    );
    text-decoration: none;
}

调整%值(81%和85%)以更改行与文本的距离

调整两个%值之间的差异以更改线条粗细

调整颜色值(#222222)以更改下划线颜色

适用于多行内联元素

适用于任何背景

这是一个具有所有专有属性的版本,具有一些向后兼容性:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore.

更新:SASSY版本

我为此做了一个scss mixin.如果您不使用SASS,上面的常规版本仍然很好...

a {     
    /* This code generated from: http://colorzilla.com/gradient-editor/ */
    background: -moz-linear-gradient(top,  rgba(0,0,0,0) 0%, rgba(0,0,0,0) 81%, rgba(0,0,0,1) 81.1%, rgba(0,0,0,1) 85%, rgba(0,0,0,0) 85.1%, rgba(0,0,0,0) 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0)), color-stop(81%,rgba(0,0,0,0)), color-stop(81.1%,rgba(0,0,0,1)), color-stop(85%,rgba(0,0,0,1)), color-stop(85.1%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,0))); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* IE10+ */
    background: linear-gradient(to bottom,  rgba(0,0,0,0) 0%,rgba(0,0,0,0) 81%,rgba(0,0,0,1) 81.1%,rgba(0,0,0,1) 85%,rgba(0,0,0,0) 85.1%,rgba(0,0,0,0) 100%); /* W3C */

    text-decoration: none;
}

然后像这样使用它:

@mixin fake-underline($color: #666, $top: 84%, $bottom: 90%) {
    background-image: linear-gradient(
        180deg, rgba(0,0,0,0),
        rgba(0,0,0,0) $top,
        $color $top + 0.1%,
        $color $bottom,
        rgba(0,0,0,0) $bottom + 0.1%,
        rgba(0,0,0,0)
    );
    text-decoration: none;
}

更新2:下降提示

如果你有一个坚实的背景颜色,尝试添加一个薄text-stroketext-shadow与你的背景相同的颜色,使下降器看起来不错.

信用

这是我最初在https://eager.io/app/smartunderline上找到的技术的简化版本,但该文章已被删除.



5> Jordan Starr..:

这对我来说很好。



  

Google



6> Dominic P..:

我知道这是一个老问题,但对于单行文本设置display: inline-block然后设置height已经很好地控制边框和文本之间的距离.



7> Michael Grei..:

@ last-child的答案是一个很好的答案!

但是,为我的H2添加边框会产生比文本更长的下划线.

如果您正在动态编写CSS,或者如果您喜欢我,那么您很幸运且知道文本是什么,您可以执行以下操作:

    改变content到正确长度的东西(即相同的

    text)将字体颜色设置为transparent(或rgba(0,0,0,0))

要强调

Processing

(例如),将last-child的代码更改为:

a {
    text-decoration: none;
    position: relative;
}
a:after {
    content: 'Processing';
    color: transparent;

    width: 100%;
    position: absolute;
    left: 0;
    bottom: 1px;

    border-width: 0 0 1px;
    border-style: solid;
}


H2是块元素,可以解释为什么下划线比文本长.也许`display:inline-block`可以修复它.用`content`替换文本看起来像是一个可以在很多方面打破的黑客.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有