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 相关文章推荐
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 Javascript
JSON JQUERY模板实现说明
Jul 03 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
May 15 Javascript
jquery中插件实现自动添加用户的具体代码
Nov 15 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
Nov 17 Javascript
AngularJS中的JSONP实例解析
Dec 01 Javascript
微信小程序--组件(swiper)详细介绍
Jun 13 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
ES6知识点整理之Proxy的应用实例详解
Apr 16 Javascript
在小程序中推送模板消息的实现方法
Jul 22 Javascript
js中的this的指向问题详解
Aug 29 Javascript
js+canvas实现刮刮奖功能
Sep 13 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
2014/09/28 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
php实现两个数组相加的方法
2015/02/17 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
Webkit的跨域安全问题说明
2011/09/13 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
vue实现通讯录功能
2018/07/14 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
Python探索之Metaclass初步了解
2017/10/28 Python
python无序链表删除重复项的方法
2020/01/17 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
学院书画协会部门岗位职责
2013/12/01 职场文书
节约用水标语
2014/06/11 职场文书
仓管员岗位职责
2015/02/03 职场文书
文明礼仪主题班会
2015/08/13 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript
如何在Python中妥善使用进度条详解
2022/04/05 Python