原生CSS实现文字无限轮播的通用方法


Posted in HTML / CSS onMarch 30, 2021

文字轮播在生活中很常见,各个超市及实体店门头通常会有文字轮播的广告牌,本文详细介绍下实现逻辑。

场景

商店门头广告牌,需要通过横向移动的文字来展示公告(加边框是为了更好演示)。

原生CSS实现文字无限轮播的通用方法

逻辑说明

原生CSS实现文字无限轮播的通用方法

实现文字无限轮转的逻辑主要有两点:

  • 文字水平移动
  • 文字首尾相接 

第1点实现方法是使用CSS动画,transform: translateX(-50%),即往左平移自身的一半。

第2点实现方法,跟第1点有关。CSS动画在默认情况下播放完成后是突变的,即播放完成时位置突变到初始位置(突变是瞬间完成的,人肉眼感知不到),因此我们可以利用突变来实现文字首尾相接。

我们用两段相同的文本,当第一段文本播放完毕,开始播放第二段文本时,此时动画突变又开始重新播放第一段文字,因两段文字内容一样,所以用户无感知。

思考

目前这种实现方式是通用的吗?

这种方式其实已经解决了大部分需求,但是当文字比较少,当文字的宽度小于窗口宽度时,是有问题的,我画的轮转逻辑示意图只是其中的一种情况。

当文字的宽度小于窗口宽度时,如何实现?

其实道理都一样,文字轮转核心之一是需要两段相同的文本,但它是有前提的,前提是一段文本的宽度必须大于窗口的宽度。

如何达到这个前提条件?

答案是 整体复制文本直到文本的宽度大于窗口的宽度,然后再处理成两段相同的文本。

总结

文字无限轮转的要点如下:

  • 文本宽度必须大于窗口宽度,文本宽度不够时就整体复制文本直到文本宽度大于窗口宽度
  • 两段相同的文本
  • 移动 50% 的距离

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>文字无限轮播</title>
 
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
 
        #wrap {
            overflow: hidden;
            position: relative;
            width: 200px;
            height: 20px;
            white-space: nowrap;
        }
 
        #inner {
            position: absolute;
            animation: slide 5s linear infinite;
        }
 
        #first{
            display: inline-block;
            border: 1px solid red;
        }
 
        #second{
            display: inline-block;
            border: 1px solid green;
        }
 
        @keyframes slide {
            0% {
                transform: translateX(0);
            }
            100% {
                transform: translateX(-50%);
            }
        }
    </style>
</head>
<body>
<div id="wrap">
    <div id="inner">
        <span id="first">本店主营拉面,刀削面,烩面,盖浇饭</span>
        <span id="second">本店主营拉面,刀削面,烩面,盖浇饭</span>
    </div>
</div>
</body>
</html>

到此这篇关于原生CSS实现文字无限轮播的通用方法的文章就介绍到这了,更多相关CSS实现文字无限轮播内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
CSS3实现菜单悬停效果
Nov 17 HTML / CSS
CSS3选择器新增问题的实现
Jan 21 HTML / CSS
html5视频播放_动力节点Java学院整理
Jul 13 HTML / CSS
canvas实现图片马赛克的示例代码
Mar 26 HTML / CSS
HTML5的结构和语义(2):结构
Oct 17 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
May 15 HTML / CSS
HTML5操作WebSQL数据库的实例代码
Aug 26 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
使用canvas一步步实现图片打码功能的方法
Jun 17 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
Mar 17 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
Sep 15 HTML / CSS
CSS基础详解
Oct 16 HTML / CSS
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
CSS3通过var()和calc()函数实现动画特效
CSS3实现模糊背景的三种效果示例
使用css样式设计一个简单的html登陆界面的实现
CSS实现漂亮的时钟动画效果的实例代码
CSS3点击按钮圆形进度打钩效果的实现代码
完美实现CSS垂直居中的11种方法
You might like
E路文章系统PHP
2006/12/11 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
Python 调用DLL操作抄表机
2009/01/12 Python
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
python3代码中实现加法重载的实例
2020/12/03 Python
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
计算机学生的自我评价分享
2014/02/18 职场文书
高考备战决心书
2014/03/11 职场文书
文明礼仪主题班会
2015/08/13 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript
Python学习之异常中的finally使用详解
2022/03/16 Python
js 实现验证码输入框示例详解
2022/09/23 Javascript