以前实现文字滚动经常使用marquee标签,现在随着H5的兴起,鉴于该标签糟糕的体验,这个标签已经被W3C标准废弃了,尽管现在浏览器还支持这个标签,但是寻找文字滚动的新方式才是未来的选择。也有很多人会使用js脚本来实现文字滚动,这是兼容性和可操作性最强的做法。但是这种方式往往会使用定时器,实时操作DOM,除了比marquee能实现更多的滚动效果及功能外,并没有减少性能消耗,并且在一些新兴的MVVM框架中,如Vue,React,它们往往会对DOM视图进行数据绑定,这时候使用js操作DOM来实现文字滚动就有可能会破坏这种绑定,当文字再改变时就触发不了DOM更新了。随着CSS的发展,实现文字滚动有了更好的方式,那就是使用CSS动画。
当然,仅仅使文字滚动使用平移动画就好了:

<style>.scroll{width: 200px;height: 50px;line-height: 50px;white-space: nowrap;overflow: hidden;font-size: 30px;border: 1px solid #FF0000;}.scroll span{display: inline-block;/*inline样式不能使用动画*/animation: scroll 10s linear infinite;}@keyframes scroll {from {transform: translateX(200px)}to {transform: translateX(-100%)}}
</style>
<div class="scroll"><span>我是一个滚动条啊滚动条</span>
</div>

但是这种滚动方式体验很差,中间有过多空白,接下来我们要实现一个首尾相连的文字滚动。在不使用js改变DOM结构的前提下,要为span里添加重复内容我们可以使用after伪元素,它有个attr函数可以获取所在父元素的属性内容,前提只要我们提前将span里的内容同时设置到属性里比如data-text,我们就可以只使用CSS为span添加尾部内容,这对使用VUE等框架是很方便的。

<style>.scroll{width: 200px;height: 50px;line-height: 50px;font-size: 30px;white-space: nowrap;overflow: hidden;border: 1px solid #ff0000;}.scroll span{display: inline-block;/*inline样式不能使用动画*/animation: scroll 12s linear infinite;}.scroll span:after{content: attr(data-text);margin-left: 4em;}@keyframes scroll {from {transform: translateX(0);}to {transform: translateX(calc(-50% - 2em)); /*总长的一半再加上margin-left的一半*/}}
</style>
<div class="scroll"><span  data-text="我是一个滚动条啊滚动条">我是一个滚动条啊滚动条</span>
</div>

上面已经基本上实现了首尾相连的文字滚动了,但是带有inline性质的元素会继承上层的很多样式影响布局,同时不同浏览器对div.scroll的最终宽度计算会有偏差,导致文字滚动出现错位。为了抹平差异,我们要对after元素使用绝对定位。

<style>.scroll{position: relative;width: 200px;height: 50px;line-height: 50px;font-size: 30px;white-space: nowrap;overflow: hidden;border: 1px solid #ff0000;}.scroll span{display: inline-block;/*inline样式不能使用动画*/animation: scroll 12s linear infinite;}.scroll span:after{position: absolute;left: 100%;content: attr(data-text);margin-left: 4em;}@keyframes scroll {from {transform: translateX(0);}to {transform: translateX(calc(-100% - 4em)); /*总长再加上margin-left*/}}
</style>
<div class="scroll"><span  data-text="我是一个滚动条啊滚动条">我是一个滚动条啊滚动条</span>
</div>

这样一个纯CSS实现的文字滚动的效果就实现了,如果要实现文字超长滚动只需判断div里的span宽度是否超出并为div添加scroll类即可。但是以上实现还是存在一个缺点,就是动画周期是提前定好的,对于不同长度的文字,滚动的速度会有快有慢,如果要追求对任何文字长度均采用固定速度滚动,可以使用js根据span宽度动态指定动画周期。

使用CSS3动画实现文字滚动相关推荐

  1. CSS3动画实现背景滚动

    在上一个模仿微信打飞机的游戏中,在敌机掉落下来时,如果背景图片也可以一直无穷滚动的话,那么效果就会更好. 现在就是要利用CSS3来实现一张图片的无穷滚动. 首先了解一下CSS3的动画属性: ①.ani ...

  2. html文字依次显示,利用定时器和css3动画制作文字依次渐变显示的效果

    如上图,这种效果看着是不是挺"柔"的 附代码 文字一次渐变出现 body{ background-color: #333333; padding: 20px; -webkit-bo ...

  3. android 动画无缝滚动,CSS3动画之无缝滚动

    与js的无缝滚动类似,整个承载图片的盒子移动,克隆一组图片放置最后,当一组图片播放结束后将盒子定位在有一组图片宽度的左侧 HTML结构:

  4. css动画中文字慢慢显示,利用定时器和css3动画制作文字依次渐变显示的效果

    如上图,这种效果看着是不是挺"柔"的 附代码 文字一次渐变出现 body{ background-color: #333333; padding: 20px; -webkit-bo ...

  5. 文字滚动插件(css3动画)- 代码篇

    文字滚动插件(css3动画)- 代码篇 效果图动画: templete代码如下: <div class="list"><div class="rowup ...

  6. html 自动滚动通知,利用CSS3实现文字滚动通知动画特效

    特效描述:利用CSS3实现 文字滚动通知 动画特效.利用CSS3实现文字滚动通知动画特效 代码结构 1. HTML代码 .menu-list{list-style:none; width:300px; ...

  7. CSS3动画大全(附源码)flex布局,grid布局3d旋转,图像模糊,文字发光

    CSS3动画大全(附源码)3d旋转,图像模糊,文字发光! 文章目录 CSS3动画大全(附源码)3d旋转,图像模糊,文字发光! html代码 css grid布局 flex布局 文字发光 & 图 ...

  8. html语言鼠标悬停特效,CSS3鼠标悬停文字幻影动画特效

    这是一款CSS3鼠标悬停文字幻影动画特效.该特效利用before和after伪元素来制作当鼠标悬停在超链接文本上的时候的幻影效果. 使用方法 在页面中引入bootstrap.css.jquery和ph ...

  9. html 纯css设置转圈,CSS3 转圈彩色文字动画实例及animation-play-state属性规则

    网页中的动画通常是当鼠标移到上面,动画立即停止,便于用户阅读:CSS3新增的制作动画属性也考虑到这个问题,只要作了相应的设置,鼠标移到上面,动画也会停止,移开鼠标,动画继续运动:这主要通过animat ...

最新文章

  1. Gartner十大IT预测:七大数字巨头,有五家将心甘情愿“自我颠覆”
  2. bus.js非父子组件之间通讯
  3. 荷兰牛栏 荷兰售价_荷兰的公路货运是如何发展的
  4. Grub2主题修改和美化--------LinuxWindows
  5. 全面解码美妆消费者心智
  6. python——VS2017开发python与python3.6更新特性
  7. Kali Linux 网络扫描秘籍 第一章 起步(一)
  8. java 前台商品展示模块_SSH框架网上商城项目第10战之搭建商品类基本模块
  9. 蓝桥杯2014c++真题:扑克序列(next_permutation)
  10. Java直接遍历并读取zip压缩文件的内容以及错误处理
  11. 笔记本电脑插耳机后耳机无声音有外放情况,咋办??
  12. 机器学习十大经典算法入门
  13. python孩子 哪里学_Python知识免费学!孩子提高逻辑思维,这样练就够了!
  14. 9月25日科技资讯|小米推出售价 19999 元的 MIX Alpha;高通已向华为重启供货;.NET Core 3.0 发布
  15. 印章识别--笛卡尔坐标系转换成极坐标系
  16. Halcon学习(3)读取图片操作
  17. mysql中replace函数的用法
  18. 文件搜素神器Everything技巧总结
  19. 4.操作卡片和OBU的指令以及流程
  20. 简单几步 对Liunx服务器的宽带进行测速

热门文章

  1. leetcode378. 有序矩阵中第K小的元素(Python3)
  2. Java 分层设计(DAO设计模式)
  3. 东方博宜OJ 1002 - 【入门】编程求解1+2+3+...+n
  4. 性能测试领域:你知道的越多,不知道的也就越多
  5. 矩阵旋转(转置,顺时针,逆时针)
  6. 人物关系 人脸识别_内在美人物关系介绍图谱 - 电视剧 - 星关系
  7. vbs恶作剧(病毒)程序代码
  8. 基于python 的股票行情查询系统开发(一)
  9. DeeperNetwork2022 新年献词:邀您共赴,WEB3.0的星辰大海
  10. 输入三个数字比较大小