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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
javascript事件冒泡和事件捕获详解
May 26 Javascript
js事件监听器用法实例详解
Jun 01 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
Oct 29 Javascript
Bootstrap入门书籍之(三)栅格系统
Feb 17 Javascript
jQuery 如何实现一个滑动按钮开关
Dec 01 Javascript
jQuery实现遮罩层登录对话框
Dec 29 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
Jun 26 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
Aug 07 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
Jan 10 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
Jan 13 Javascript
react native 文字轮播的实现示例
Jul 27 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
简单的cookie计数器实现源码
2013/06/07 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
xml和web特殊字符
2009/04/28 Javascript
javascript时区函数介绍
2012/09/14 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
np.dot()函数的用法详解
2020/01/17 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
工作收入证明模板
2014/10/10 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
给上级领导的感谢信
2015/01/22 职场文书
辩护词范文大全
2015/05/21 职场文书
党员公开承诺书2016
2016/03/24 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
上帝为你开了一扇窗之Tkinter常用函数详解
2021/06/02 Python
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android