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学习之一个简易的日历控件
Mar 24 Javascript
js异常捕获方法介绍
Apr 10 Javascript
详细解密jsonp跨域请求
Apr 15 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
Apr 01 Javascript
简单实现Vue的observer和watcher
Dec 21 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
Jan 08 Javascript
利用node.js搭建简单web服务器的方法教程
Feb 20 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
Dec 08 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
VueJs组件之父子通讯的方式
May 06 Javascript
详解js中的几种常用设计模式
Jul 16 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 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程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
用JS实现选项卡
2020/03/23 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Python代码实现KNN算法
2017/12/20 Python
python监控文件并且发送告警邮件
2018/06/21 Python
Python中作用域的深入讲解
2018/12/10 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
200行python代码实现2048游戏
2019/07/17 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
QML用PathView实现轮播图
2020/06/03 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
深入了解NumPy 高级索引
2020/07/24 Python
python 制作网站小说下载器
2021/02/20 Python
团队口号大全
2014/06/06 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
可可西里观后感
2015/06/08 职场文书
2016新年问候语大全
2015/11/11 职场文书
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫