by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=8607

本文可全文转载,个人网站无需授权,但需要保留原作者、出处以及文中链接,任何网站均可摘要聚合,商用请联系授权。

之前有至少5个人在评论中询问我文章中链接hover时候波浪下划线动画是怎么实现的,类似下图gif示意:

这里就介绍下是如何实现的。

有两种实现方法,各有优劣。

一、使用径向渐变纯CSS实现

就是使用径向渐变绘制我们的波浪线效果,一个波浪线循环段是有一个朝上的半个圆弧和一个朝下的半个圆弧组合而成的。

所以,我们只要使用径向渐变绘制圆弧,再通过background-position控制两个圆弧的位置,让其前后拼接在一起就可以实现波浪线效果。

相关CSS代码如下:

.flow-wave {

background: radial-gradient(circle at 10px -7px, transparent 8px, currentColor 8px, currentColor 9px, transparent 9px) repeat-x,

radial-gradient(circle at 10px 27px, transparent 8px, currentColor 8px, currentColor 9px, transparent 9px) repeat-x;

background-size: 20px 20px;

background-position: -10px calc(100% + 16px), 0 calc(100% - 4px);

}

实时效果如下若无效果请访问原页面地址:https://www.zhangxinxu.com/wordpress/?p=8607:

有了静态的波浪线效果,剩下的就像这个波浪线动起来,用CSS3 animation动画控制background-position位置即可。

.flow-wave {

animation: waveFlow 1s infinite linear;

}

@keyframes waveFlow {

from { background-position-x: -10px, 0; }

to { background-position-x: -30px, -20px; }

}

于是波浪线动画效果就实现了。

这种方法实现的优点是颜色控制非常方便,例如,我们修改文字颜色为原谅绿,弯弯水波的颜色也变成了原谅绿:

此方法实现的不足就是:理解成本有点高,如何使用CSS radial-gradient模拟波浪线效果是需要相当的CSS功力积累的,上手不太容易,以后要修改个尺寸什么的也不太好维护。同时,在普通屏幕密度屏幕下的Chrome浏览器上,线条并不平滑,吹毛求疵的设计师不一定会接受。

此时,可以试试下面这种更利于理解的方法。

二、使用SVG波形矢量图作为背景

就是我们直接使用一个使用SVG波形矢量图作为背景,不用自己去手动CSS绘制,代码量差不多,还更容易理解。CSS代码示意:

.svg-wave {

background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 4'%3E%3Cpath fill='none' stroke='%23333' d='M0 3.5c5 0 5-3 10-3s5 3 10 3 5-3 10-3 5 3 10 3'/%3E%3C/svg%3E") repeat-x 0 100%;

background-size: 20px auto;

}

实时效果如下若无效果请访问原页面地址:https://www.zhangxinxu.com/wordpress/?p=8607:

有了静态的波浪线效果,剩下的就像这个波浪线动起来,用CSS3 animation动画控制background-position位置即可。

.svg-wave {

animation: waveMove 1s infinite linear;

}

@keyframes waveMove {

from { background-position: 0 100%; }

to { background-position: -20px 100%; }

}

此方法就是我博客链接使用的方法。

优点是线条边缘平滑,效果细腻,易理解,易上手,易维护。

缺点也很明显,就是波浪线的颜色无法实时跟着文字的颜色发生变化,适用于文字颜色不会多变的场景。

如果我们想要改变波浪线的颜色也很简单,修改background代码中的stroke='%23333'这部分,'%23'就是就是#,因此,stroke='%23333'其实就是stroke='#333'的意思。例如,我们需要改成红色略带橙色,可以stroke='%23F30',也可以写完整stroke='%23FF3300'。

这个颜色就是我博客链接波浪线的颜色,如下图:

大家可以根据自己实际开发的场景选择合适的方法。

三、每当要结束的时候

text-decoration属性早已支持波浪线下划线:

text-decoration-style: wavy;

效果如下截图:

可以看到,线好粗好不协调,而且字符和装饰线发生重叠的时候,装饰线直接消失了,结果波浪线变成了一截一截的,还需要使用text-decoration-skip进行额外控制。因此,实际开发,不建议在实际项目中使用。

更新于2020-03-21

text-decoration属性实现可以在实际项目中使用的波浪线也是可以的,可以参见我的这篇文章:“CSS text-decoration实现宽度100%波浪线效果”。

由于不同浏览器下的波浪线宽度不一样,因此我们无法预知每个波浪线重复片段的宽度,想要无限运动理论上就不太可行。

因此,文字或者图形的波浪线动画效果不能使用text-decoration的波浪线。

PS:text-decoration新增不止波浪线,还有虚线点线等,有兴趣可以参阅我之前写的“了解CSS3 text-decoration波浪线等新特性”这篇文章。

最后,写一首诗吧:

每当要结束的时候,

我总想再扯点什么。

追问癖好源自哪里?

远方那里有个孤岛。

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。

本文地址:https://www.zhangxinxu.com/wordpress/?p=8607

(本篇完)

HTML怎么在字体下方加波浪线,CSS实现文字下面波浪线动画效果相关推荐

  1. html怎么在字体中加波浪线,强大的CSS:文字下波浪线动画效果

    之前有至少5个人在评论中询问我文章中链接hover时候波浪下划线动画是怎么实现的,类似下图gif示意: 这里就介绍下是如何实现的. 有两种实现方法,各有优劣. 一.使用径向渐变纯CSS实现 就是使用径 ...

  2. 产生粗体字的html标签,html字体加粗用css设置文字粗体样式

    html如何加粗文字,HTML加粗标签元素有哪些?CSS字体加粗又怎么来实现?粗体代码是什么? 综合以上问题,可以使用CSS样式和HTML标签两种方法来实现,在实际布局时候根据需要来选择文字字体加粗方 ...

  3. CSS:文字下波浪线动画效果

    之前有至少5个人在评论中询问我文章中链接hover时候波浪下划线动画是怎么实现的,类似下图gif示意: 这里就介绍下是如何实现的. 有两种实现方法,各有优劣. 一.使用径向渐变纯CSS实现 就是使用径 ...

  4. html语言 加粗,html字体加粗用css设置文字粗体样式

    HTML加粗标签元素有哪些?CSS字体加粗又怎么来实现?粗体代码是什么? 综合以上问题,可以使用CSS样式和HTML标签两种方法来实现,在实际布局时候根据需要来选择文字字体加粗方法途径. 一.html ...

  5. CSS实现文字下面波浪线

    方法1.使用径向渐变绘制我们的波浪线效果 一个波浪线循环段是有一个朝上的半个圆弧和一个朝下的半个圆弧组合而成的. 所以,我们只要使用径向渐变绘制圆弧,再通过background-position控制两 ...

  6. mel加载一个物体不同姿态的模型实现动画效果

    题目,我从VS导出一个物体的不同姿态生成一系列obj文件 然后想通过MAYA MEL来实现这一系列的动画 script如下: global proc loadObjs() {string $pathO ...

  7. css文字在图片下方_【HTML+CSS】文字和图片保持同一水平线的三种方式

    方式1.table-cell方式 方式2.flex方式 方式3.absolute方式 css . html < 最终效果 你有什么好的方式呢?欢迎留言

  8. html字体超出后隐藏省略号,CSS控制文字超出部分省略号显示

    一:单行文本显示不完时,我们只需要设置单行文本的宽度,不允许换行,溢出隐藏及换行省略四个属性即可: p{ max-width: 100px; overflow:hidden; text-overflo ...

  9. html字体飞入效果并定住,css3+vue彩色文字飞入飞出动画效果

    一款好看的css3+vue实现的彩色文字飞入飞出动画效果,点击文字飞出动画,然后又飞入回来,很棒的vue文字动画特效. 查看演示 下载资源: 39 次 下载资源 下载积分: 10 积分 js代码 Vu ...

最新文章

  1. Vim对中文编码的支持[转]
  2. 入门Python数据分析最好的实战项目
  3. python编程输入标准-青少年Python编程能力标准等级模拟考试
  4. ADO.NET开发总结(学习笔记)
  5. jupyter 显示全部数据
  6. boost::fusion::traits::tag_of用法的测试程序
  7. redistemplate注入为null_Windows DLL 注入技术
  8. [C++STL]常用查找算法
  9. Struts2框架基础篇
  10. 数字通信原理笔记(一)---概述
  11. ubuntu 18 安装显卡驱动时卡死及系统重装
  12. 商业变现永不眠(二) — 如何具体规划自己产品的商业化路径?
  13. 添加蒙版,分分钟搞定PPT封面
  14. bootstrap编写响应式页面
  15. Dijkstra最短路由算法,求任意两点之间的最短距离【Java】
  16. PDN连接与默认 APN
  17. 极致cms,极致cms程序,极致cms开发
  18. 李宏毅HW01——新冠疫情数据的预测
  19. Java Type接口 运行时获取泛型类型
  20. iOS开发之swift资料大全

热门文章

  1. 华为4G智能机Assend Mate2定价三千元左右
  2. canape调用map文件选择的格式
  3. lol微信登录服务器,LOL部分大区开放微信登录功能 什么区能微信登录?
  4. 微信小程序隐私指引通用模板设置参考,微信小程序用户隐私保护指引设置
  5. 科技博主拆坏了 iMac Pro,苹果拒绝提供维修
  6. 只有蠢货才会拒绝巫妖王:寒冰王座
  7. win10正确安装PostgreSQL数据库和PostGIS插件
  8. ae 导出html动画提取每帧数据解决错切导出失败的问题
  9. 分享 5 个 JSON 相关的常用小技巧
  10. postfix发送邮件测试不成功——可能是用户名大小写问题