完美实现八种js焦点轮播图(下篇)


Posted in Javascript onApril 20, 2020

继续上一篇的学习完美实现八种js焦点轮播图(上篇),供大家参考,具体内容如下

5.定时上下无缝滚动

思路:

1.思路1: 将ul复制一份,但滚动一半距离重新归位;(大型网站性能略低);
2.思路2: 通过相对定位,将第一个li移动到最后,再将ul和Li归位。

window.onload=function(){
 var oBox=document.getElementById('box');
 var oUl=document.getElementById('ul');
 var aLi_u=oUl.getElementsByTagName('li');
 var oOl=document.getElementById('ol');
 var aLi_o=oOl.getElementsByTagName('li');
 var LiHeight=aLi_u[0].offsetHeight;
 var iNow=0;//针对按钮的值
 var iNow2=0;//用于滚动
 var timer=null;
 for(var i=0;i<aLi_o.length;i++){
 aLi_o[i].index=i;
 aLi_o[i].onmouseover=function(){
  for(var i=0;i<aLi_o.length;i++){
  aLi_o[i].className='';

  this.className='active';
  //建立关系:很重要
  iNow=this.index;
  iNow2=this.index;

  startMove(oUl,{top:-this.index*LiHeight});
  }
 };

 }
 timer=setInterval(toRun,2000);
 oBox.onmouseover=function(){
 clearInterval(timer);
 };
 oBox.onmouseout=function(){
 timer=setInterval(toRun,2000);
 };
 function toRun(){
 if(iNow==0){
  //还原li并把ul归位
  aLi_u[0].style.position='static';
  oUl.style.top=0;
  //记得把iNow2还原
  iNow2=0;
 }
 if(iNow==aLi_o.length-1){
  //将第一个Li移到最后
  iNow=0;
  aLi_u[0].style.position='relative';
  aLi_u[0].style.top=aLi_u.length*LiHeight+'px';
 }else{
  iNow++;
 }
 iNow2++;
 for(var i=0;i<aLi_o.length;i++){
  aLi_o[i].className='';
 }
 aLi_o[iNow].className='active';
 startMove(oUl,{top:-iNow2*LiHeight});
 }
};

效果图:

完美实现八种js焦点轮播图(下篇)

6.左右无缝切换效果

思路:
 1.绝对定位:除第一个外的所有Li定位到右边,比较索引值与当前索引,定位要出现的li位置。
 2.加入“开关”或“时间间隔”等来控制运动切换频率!

window.onload=function(){
 var oUl=document.getElementById('ul');
 var aLi_u=oUl.getElementsByTagName('li');
 var oOl=document.getElementById('ol');
 var aLi_o=oOl.getElementsByTagName('li');
 var LiWidth=aLi_u[0].offsetWidth;
 var iNow=0;
 var bBtn=true;
 //除第一项外所有定位到右边
 for(var i=1;i<aLi_u.length;i++){
 aLi_u[i].style.left=LiWidth+'px';
 }

 for(var i=0;i<aLi_o.length;i++){
 aLi_o[i].index=i;

 aLi_o[i].onmouseover=function(){

  if(bBtn){
  bBtn=false;
  for(var i=0;i<aLi_o.length;i++){
   aLi_o[i].className='';
  }
  this.className='active';
  //判断左移右移
  if(iNow<this.index){
   //定位要出现的li
   aLi_u[this.index].style.left=LiWidth+'px';
   //将当前li移走
   startMove(aLi_u[iNow],{left:-LiWidth});
  }else if(iNow>this.index){
   aLi_u[this.index].style.left=-LiWidth+'px';
   startMove(aLi_u[iNow],{left:LiWidth});
  }

  startMove(aLi_u[this.index],{left:0},function(){
   bBtn=true;//只有当前运动完才可进行下一次运动
  });
  //将当前索引赋值
  iNow=this.index;

  }//开关if结束


 };

 }
};

效果图:

完美实现八种js焦点轮播图(下篇)

7.手风琴效果

 1.思路1:通过改变li宽度来制作;
 2.思路2:除第一项外的所有li按等距间隔定位,触发事件后等距变换位置 

window.onload=function(){
 var oUl=document.getElementById('ul');
 var aLi_u=oUl.getElementsByTagName('li');

 //除第一项外所有定位
 for(var i=1;i<aLi_u.length;i++){
 //等距30px定位
 aLi_u[i].style.left=(470-3*40)+(i-1)*30+'px';
 }
 for(var i=0;i<aLi_u.length;i++){
 aLi_u[i].index=i;
 aLi_u[i].onmouseover=function(){
  for(var i=0;i<aLi_u.length;i++){
  if(i<=this.index){
  //小于索引的全部左排列
   startMove(aLi_u[i],{left:i*30});
  }else{//大于索引的全部右排列
   startMove(aLi_u[i],{left:(470-3*40)+(i-1)*30});
  }
  }
 }
 }
};

效果图:

完美实现八种js焦点轮播图(下篇)

8.手风琴效果2

在之前的基础上均匀定位Li!

window.onload=function(){
 var oUl=document.getElementById('ul');
 var aLi_u=oUl.getElementsByTagName('li');
 var num=Math.ceil(470/aLi_u.length);//每个的宽度

 //除第一项外所有定位
 for(var i=1;i<aLi_u.length;i++){
 aLi_u[i].style.left=num*i+'px';
 }
 for(var i=0;i<aLi_u.length;i++){
 aLi_u[i].index=i;
 aLi_u[i].onmouseover=function(){
  for(var i=0;i<aLi_u.length;i++){
  if(i<=this.index){
   startMove(aLi_u[i],{left:i*30});
  }else{
   startMove(aLi_u[i],{left:(470-3*40)+(i-1)*30});
  }
  }
 };
 aLi_u[i].onmouseout=function(){
  for(var i=0;i<aLi_u.length;i++){
  startMove(aLi_u[i],{left:num*i});
  }
 };
 }
};

效果图:

完美实现八种js焦点轮播图(下篇)

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery UI DatePicker中z-index默认为1的解决办法
Sep 28 Javascript
javascript实现表格增删改操作实例详解
May 15 Javascript
通过jquery实现页面的动画效果(实例代码)
Sep 18 Javascript
Javascript获取图片原始宽度和高度的方法详解
Sep 20 Javascript
JavaScript字符集编码与解码详谈
Feb 02 Javascript
详解Vue路由开启keep-alive时的注意点
Jun 20 Javascript
js获取地址栏参数的两种方法
Jun 27 Javascript
javascript 取小数点后几位几种方法总结
Aug 02 Javascript
浅谈Angular4实现热加载开发旅程
Sep 08 Javascript
小程序如何构建骨架屏
May 29 Javascript
JS利用prototype给类添加方法操作详解
Jun 21 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 Javascript
完美实现八种js焦点轮播图(上篇)
Jul 18 #Javascript
jQuery实现根据滚动条位置加载相应内容功能
Jul 18 #Javascript
JS HTML5拖拽上传图片预览
Jul 18 #Javascript
jQuery 操作input中radio的技巧
Jul 18 #Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 #Javascript
浅谈$('div a') 与$('div&gt;a')的区别
Jul 18 #Javascript
浅析JavaScript中的array数组类型系统
Jul 18 #Javascript
You might like
在线增减.htpasswd内的用户
2006/10/09 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
Gird事件机制初级读本
2007/03/10 Javascript
js函数排序的实例代码
2013/07/01 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
名片管理系统python版
2018/01/11 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
python开发前景如何
2020/06/11 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
导游的职业规划书范文
2013/12/27 职场文书
培训自我鉴定
2014/01/31 职场文书
秋游活动策划方案
2014/02/16 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL