解决文字与下划线重叠的问题

摘要:
我们需要解决的问题是:设置文本装饰时:下划线;当文本和下划线靠近时,看起来很不舒服。就像这样:第一种方法是指定覆盖关系文本修饰跳过是与文本修饰跳过相关的CSS3属性。此方法是最原生的,但由于兼容性问题,目前不适用。因此,通过填充,我们可以有效地调整文本的下边框和下边缘之间的距离,以达到所需的效果。垂直阴影为1px,因此具有下划线的外观。

最近在网上看了张鑫旭老师的一个帖子(解决文字和text-decoration:underline下划线重叠问题),收获不小。原文链接(http://www.zhangxinxu.com/wordpress/2016/11/css-text-decoration-underline-skip-override/

下面我简单的分享一下张鑫旭老师的几种方法。

我们所要解决的问题是:当设置文字text-decoration:underline;的时候,文字和下划线紧贴在一起,看起来很不舒服。

就像这样:金玉全王

方法一:text-decoration-skip指定覆盖关系

text-decoration-skip是与text-decoration相关的CSS3属性。

效果很不错,不过缺点在于目前只有Safari8+浏览器支持带-webkit-私有前缀的text-decoration-skip属性,且仅仅支持skip(默认值)和none两个值。

此方法是最原生的,但是由于兼容性问题,目前还不太合适。

方法二:使用border-bottom属性模拟

 我觉得这是一个不错的想法,CSS博大精深,哈哈。^.^

内联元素虽然不支持垂直方向的margin属性,但是支持垂直方向的padding属性和border属性,并且,对原来的布局定位等没有任何影响。因此,配合padding,我们就可以很有效地调节下边框和文字下边缘的距离,实现我们最想要的的效果。(张老师的原话)

代码如下:

a {
    text-decoration: none;
    border-bottom: 1px solid;
}
效果图:金玉全王

这样写的有点在于border-bottom还有dashed属性,我们还可以创造虚线下划线  :P

a {
    text-decoration: none;
    border-bottom: 1px dashed;
}
效果图:金玉全王
方法三:使用box-shadow属性模拟

 使用box-shadow的想法也是很棒的,其实动动脑子,CSS还有好多玩法。(●'◡'●)

直接上代码~

a {
    text-decoration: none;
    box-shadow: 0 1px;
}
这里box-shadow用了两个值,在这里解释一下:
box-shadow: h-shadow v-shadow blur spread color inset;
此处的两个值分别是 h-shadow 和 v-shadow。
h-shadow:水平阴影的位置。允许负值。
v-shadow:垂直阴影的位置。允许负值。

垂直阴影为1px于是就有了下划线的样子。
相比border-bottom属性,box-shadow的优势在于,即使我们把内联元素设置成display:inline-block,生成的下划线也不会对垂直对齐或者布局产生影响,但,如果是border-bottom,会增加元素的尺寸,可能就会影响元素的排列。
但是,box-shadow也有不足,一是兼容性,IE9+才支持,二是只能实线,不能虚线。(张老师原话)

方法四:使用canvas实现(著名的Underline.js)

 Underline.js项目地址:https://github.com/wentin/underlineJS

基本上,适合用在局部一些大的标语,标题,slogon等位置或者追求视觉的官方网站或活动页面上使用。

其他方法

例如:使用SVG滤镜处理、使用background-image属性模拟。

我就不多一一介绍了,感兴趣的话可以去张老师的博客查看详情。

免责声明:文章转载自《解决文字与下划线重叠的问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows7 下的纸牌游戏超难ABAPGIT用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

css 心形动画 爱心动画

1、PC 爱心动画(预览地址:http://www.yueqingfang.cn/heart/pc.html) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Red Heart</...

Python命名规范

文件名 全小写,可使用下划线 包 应该是简短的、小写的名字。如果下划线可以改善可读性可以加入。如mypackage。 模块 与包的规范同。如mymodule。 类 总是使用首字母大写单词串。如MyClass。内部类可以使用额外的前导下划线。   函数&方法 函数名应该为小写,可以用下划线风格单词以增加可读性。如:myfunction,my_exa...

如何取消Notepad++红色下划线(错误提示)

Notepad++是个优秀的编辑器,里面有很多插件,但是这些插件主要是针对英文版开发的,如果用中文的注释他就会认为 是错误而出现错误的下划线标识。 这个拼写错误提示的插件一般是为了检测英文的拼写错误,中文的注释它就认为是错误的,出现大量的红色下划线。 关掉这个错误提示插件有两种方法:    1、使用快捷键Alt+a ,即可取消错误提示  2、如图所示,点击...

关于python中带下划线的变量和函数 的意义

总结: 变量: 1. 前带_的变量: 标明是一个私有变量, 只用于标明,外部类还是可以访问到这个变量 2. 前带两个_ ,后带两个_ 的变量: 标明是内置变量, 3. 大写加下划线的变量: 标明是不会发生改变的全局变量 函数: 1. 前带_的变量: 标明是一个私有函数, 只用于标明, 2.前带两个_ ,后带两个_ 的函数: 标明是特殊函数 Pyth...

常用CSS样式

  1/**//**//**//*按钮样式*/  2.ButtonCss {}{  3    font-family: "Tahoma", "宋体";  4    font-size:9pt; color: #003399;  5    border: 1px #003399 solid;  6    color:006699;  7    BORDER...

CSS3动画特效——transform详解

CSS3动画特效——transform详解  还可以和过渡属性(Transition)连用      transition&transform,CSS中过度和变形的设置 前置属性: transform-origin更改一个元素变形的原点transform-style:设置元素的子元素是位于 3D 空间中还是平面中 flat:平面,如果选择平面即此...