结合 CSS3 transition transform 实现简单的跑马灯效果的示例


Posted in HTML / CSS onFebruary 07, 2018

这是之前客户的一个需求,给的 demo 是用 gif 实现跑马灯,但是我们的没法用 gif,因为图上的文字需要翻译成各国语言,所以不能使用图片来实现,那么,自己写一个咯。

思考过程

结合 CSS3 transition transform 实现简单的跑马灯效果的示例

html

<div lantern>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
  </ul>
</div>

css

* {
  margin: 0;
  padding: 0;
}

[lantern] {
  overflow: hidden;
}

ul {
  white-space: nowrap;
  font-size: 0;
  transform: translateX(0);
  transition: transform 0s linear;
}

li {
  width: 50vw;
  border: 1px solid red;
  display: inline-block;
  height: 30px;
  font-size: 16px;
}

js

function lantern($element,speed = 10) {
    let liWidth = 0;
    let $ul = $element.find("ul");

    function run(init = false) {
      let $li = $ul.find("li").first();
      liWidth = $li.outerWidth();

      if(!init){
        $ul.append($li[0].outerHTML);
        $li.remove();
      }
      
      $ul[0].style.transitionDuration = "0s";
      $ul[0].style.transform = "translateX(0)";

      setTimeout(function() {
        $ul[0].style.transitionDuration = speed + "s";
        $ul[0].style.transform = "translateX(-" + liWidth + "px)";
      }, 20);
    }

    run(true);
    setTimeout(() => {
      setInterval(run, speed * 1000);
    }, 0);
  }
 
lantern($('[lantern]'), 20);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
Jun 11 HTML / CSS
利用css3如何设置没有上下边的列表间隔线
Jul 03 HTML / CSS
10分钟理解CSS3 Grid布局
Dec 20 HTML / CSS
浅谈HTML5 defer和async的区别
Jun 07 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
Mar 25 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
Nov 30 HTML / CSS
html5基础标签(html5视频标签 html5新标签用法)
Dec 30 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
Mar 21 HTML / CSS
五分钟学会HTML5的WebSocket协议
Nov 22 HTML / CSS
使用canvas实现黑客帝国数字雨效果
Jan 02 HTML / CSS
CSS 文字装饰 text-decoration & text-emphasis 详解
Apr 06 HTML / CSS
关于flex 上下文中自动 margin的问题(完整例子)
May 20 HTML / CSS
css3 clip实现圆环进度条的示例代码
Feb 07 #HTML / CSS
使用css3做0.5px的细线的示例代码
Jan 18 #HTML / CSS
详解CSS 3 中的 calc() 方法
Jan 12 #HTML / CSS
css3实现冲击波效果的示例代码
Jan 11 #HTML / CSS
css3如何绘制一个圆圆的loading转圈动画
Jan 09 #HTML / CSS
浅谈CSS3中的变形功能-transform功能
Dec 27 #HTML / CSS
css3的动画特效之动画序列(animation)
Dec 22 #HTML / CSS
You might like
php计算整个目录大小的方法
2015/06/01 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
Python处理Excel文件实例代码
2017/06/20 Python
Python numpy 常用函数总结
2017/12/07 Python
python3 求约数的实例
2019/12/05 Python
python环境下安装opencv库的方法
2020/03/05 Python
python能自学吗
2020/06/18 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
phpquery中文手册
2021/03/18 PHP
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
意大利比基尼品牌:MISS BIKINI
2019/11/02 全球购物
三月学雷锋月活动总结
2014/04/28 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
贷款委托书
2014/08/01 职场文书
师德师风剖析材料
2014/09/30 职场文书
考试作弊检讨
2015/01/27 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
Python的这些库,你知道多少?
2021/06/09 Python
Python正则表达式中flags参数的实例详解
2022/04/01 Python
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers