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中匿名函数,函数直接量和闭包
May 08 Javascript
jQuery UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
JS制作类似选项卡切换的年历
Dec 03 Javascript
Javascript 实现匿名递归的实例代码
May 25 Javascript
微信小程序使用Socket的实例
Sep 19 Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 Javascript
vue中input的v-model清空操作
Sep 06 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
js实现特别简单的钟表效果
Sep 14 Javascript
vue项目实现多语言切换的思路
Sep 17 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无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
Numpy之random函数使用学习
2019/01/29 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
python中常用的数据结构介绍
2021/01/12 Python
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
简易离婚协议书范本
2014/10/24 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
2015年公司工作总结
2015/04/25 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
回复函范文
2015/07/14 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
SQL Server内存机制浅探
2022/04/06 SQL Server
MySQL安装失败的原因及解决步骤
2022/06/14 MySQL