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 相关文章推荐
使用UglifyJS合并/压缩JavaScript的方法
Mar 07 Javascript
js转化毫秒为时间格式代码
Apr 10 Javascript
Node.js编码规范
Jul 14 Javascript
jquery实现浮动的侧栏实例
Jun 25 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
js自制图片放大镜功能
Jan 24 Javascript
js 获取图像缩放后的实际宽高,位置等信息
Mar 07 Javascript
利用node.js如何搭建一个简易的即时响应服务器
May 28 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
underscore之Chaining_动力节点Java学院整理
Jul 10 Javascript
vuex存取值和映射函数使用说明
Jul 24 Javascript
JS实现简易图片自动轮播
Oct 16 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读取文件内容的五种方式
2015/12/28 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
证婚人经典证婚词
2014/01/09 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android