原生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实现简单的checkbox复选框和radio单选框
Nov 05 HTML / CSS
纯css3实现思维导图样式示例
Nov 01 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
Apr 18 HTML / CSS
html5中valid、invalid、required的定义
Feb 21 HTML / CSS
探索HTML5本地存储功能运用技巧
Mar 02 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
Mar 22 HTML / CSS
Web前端页面跳转并取到值
Apr 24 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
Mar 31 HTML / CSS
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
May 14 HTML / CSS
用position:sticky完美解决小程序吸顶问题的实现方法
Apr 24 HTML / CSS
CSS 实现多彩、智能的阴影效果
May 12 HTML / CSS
CSS list-style-type属性使用方法
May 21 HTML / CSS
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
CSS3通过var()和calc()函数实现动画特效
CSS3实现模糊背景的三种效果示例
使用css样式设计一个简单的html登陆界面的实现
CSS实现漂亮的时钟动画效果的实例代码
CSS3点击按钮圆形进度打钩效果的实现代码
完美实现CSS垂直居中的11种方法
You might like
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
PHP 开源框架22个简单简介
2009/08/24 PHP
php 引用(&amp;)详解
2009/11/20 PHP
php 安全过滤函数代码
2011/05/07 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
Firefox div高度自适应
2009/04/28 Javascript
javascript json2 使用方法
2010/03/16 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
python进行文件对比的方法
2018/12/24 Python
python抖音表白程序源代码
2019/04/07 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
幼儿园中秋节活动方案2013
2014/01/29 职场文书
班主任工作经验材料
2014/02/02 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
python 多态 协议 鸭子类型详解
2021/11/27 Python
redis复制有可能碰到的问题汇总
2022/04/03 Redis