jQuery文字轮播特效


Posted in Javascript onFebruary 12, 2017

闲谈:离开学校那座象牙塔已经也有大半年的事件了,生活中不再充满了茫然只有忙碌。连续加班加点大半个月,做的活动项目终于算是告一段落了,而今天也将是考验其真正价值的时候,现在将这次开发中遇到的问题做一下总结。

项目背景: 这次的项目主要是做一次全国酒店人气排名的营销活动,主要是基于在微信中传播,预计访问量达到亿级,并发做到2000+/s,且有不少的容错预案,我这次主要负责前端首页方面的展示效果。

功能点:

文字无缝轮播(不要在意为什么在移动端还会有这样的需求)

jQuery文字轮播特效

当一说到文字无缝滚动时,大家最先想到的是marquee,但是已经好久没有接触这个标签了,w3c也不对其进行维护了,并且还有最后必须等到全部滚动完毕才会再次滚动,并且对于rem布局采用基于px的滚动体验会非常的
差等等。。

第二个想到的是采用类似jquery实现的图片轮播机制,可以基本完成,但是发现无论是jquery还是zepto文字在滚动的时候会抖动,可用性比较差。

再就是现在用到的css3 + 少量js,采用很少的代码就可以实现文字不同长度,文字条数不定的文字无缝滚动轮播。

下面先看html结构

<div class="outer">
    <ul id="J_scroll">
      <li>1.这是第一条数据</li>
      <li>2.这是第二条数据</li>
      <li>3.这是第三条数据</li>
      <li>4.这是第四条数据</li>
      <li>5.这是第五条数据</li>
      <li>1.这是第一条数据</li> 
    </ul>
  </div>

与图片的无缝滚动一样,也需要将第一条数据拷贝一份放在最后面

其次是css的相关数据

.outer{
    width: 122px;
    height: 80px;
    overflow: hidden;
  }
  .outer ul{
    display:inline-block;
    height: 80px;
    -webkit-transform: translate3d(0, 0, 0); /* 3d渲染,开启硬件加速 */
    transform: translate3d(0, 0, 0);
    font-size: 0;  /* 使inline-block无默认间距 */
    white-space: nowrap; /* 超出不折行 */
  }
  .outer ul li{
    display: inline-block;
    padding-right: 50px;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    font-size: 24px;
  }
  .theanimation{
    animation:theanimation 20s infinite linear;
    -webkit-animation:theanimation 20s infinite linear;
  }
  @keyframes theanimation{
   from {
    transform:translateX(0%);
   } 
   to {
    transform:translateX(-100%);
   } 
  }
  @-webkit-keyframes theanimation{ 
   from {
    -webkit-transform:translateX(0%);
   } 
   to {
    -webkit-transform:translateX(-100%);
   }
  }

由于IOS的一些渲染机制,最好滚动的元素内部都需要启动硬件加速,否则会有卡顿和文字显示不全的问题。

最后是js

$('#J_scroll').width($('#J_scroll').width() - $('#J_scroll li:first-child').innerWidth());
  $('#J_scroll').addClass('theanimation');

这里还是写的jquery,相信大家都能看的懂,就是让滚动元素的宽度等于他的内部元素的总宽度减去第一个(或者最后一个)元素的宽度,这样能保证无缝的效果。

最后要说明为什么要用js动态添加css3的类名实现滚动效果,一开始的时候我也是想直接将css3滚动特效写在滚动的元素上,但是在iPhone上发现首次加载当前页面的时候他不会自动滚动。

Javascript 相关文章推荐
自己的js工具 Cookie 封装
Aug 21 Javascript
Extjs学习笔记之三 extjs form更多的表单项
Jan 07 Javascript
JQuery实现鼠标移动到图片上显示边框效果
Jan 09 Javascript
window.location的重写及判断location是否被重写
Sep 04 Javascript
jQuery中find()方法用法实例
Jan 07 Javascript
JS实现判断碰撞的方法
Feb 11 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
May 25 Javascript
JavaScript编写推箱子游戏
Jul 07 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
May 12 Javascript
下一代Bootstrap的5个特点 超酷炫!
Jun 17 Javascript
Vue.js移动端左滑删除组件的实现代码
Sep 08 Javascript
axios简单实现小程序延时loading指示
Jul 30 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 #Javascript
jQuery、zepto、js常用小技巧
Feb 12 #Javascript
JS中如何实现Laravel的route函数详解
Feb 12 #Javascript
js输入框使用正则表达式校验输入内容的实例
Feb 12 #Javascript
浅谈js中同名函数和同名变量的执行问题
Feb 12 #Javascript
老生常谈jquery id选择器和class选择器的区别
Feb 12 #Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
Feb 12 #Javascript
You might like
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
javascript 闭包详解
2015/02/15 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
开源Web应用框架Django图文教程
2017/03/09 Python
python编程实现希尔排序
2017/04/13 Python
python中的计时器timeit的使用方法
2017/10/20 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
如何实现一个自定义类的序列化
2012/05/22 面试题
幼儿园亲子活动总结
2014/04/26 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
为自己工作观后感
2015/06/11 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
Python中for后接else的语法使用
2021/05/18 Python
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang