2019独角兽企业重金招聘Python工程师标准>>>

1 静止时

2 旋转时

3 原理简介:

其实就是一个节点往另一个节点状态转换的过程。注意一点:向左时。最右边的z-index必须比最左变的z-index大。

向左移动时,最左边的z-index必须比最右变的z-index的大。任意时刻,只能看到3张图片。

在移动时,先改变z-index属性,再调用jquery的动画函数。

4 源码实现:

这里依赖一个jquery2.0.js的animate函数。可以导入一个支持该函数版本的jquery库。

<!DOCTYPE HTML>
<html><head><script src="jquery2.0.js"></script><style type="text/css">.bgimg{position:absolute;border:1px solid black;}    .bgimg:nth-child(1){background:red;}.bgimg:nth-child(2){background:green;}.bgimg:nth-child(3){background:blue;}.bgimg:nth-child(4){background:yellow;}#container{position:relative;left:0px;top:0px;width:1200px;height:400px;overflow:hidden;border:1px solid black;margin:50px auto;}</style></head><body><div id="container"></div><div align="center"><button onclick="moveLeft()">向左</button><button  onclick="moveRight()">向右</button></div><script>var cNode = null;//当前节点。$(document).ready(function(){init();});// cNode --> nextfunction moveLeft(){//在切换之前。务必判断。cNode.next.zIndex > cNode.pre.zIndex 。如果不大于。要交换。if( cNode.next.zIndex < cNode.pre.zIndex){var ind = cNode.next.zIndex;cNode.next.zIndex = cNode.pre.zIndex;cNode.pre.zIndex = ind;}//先改层次。var index = cNode.zIndex;var next = cNode;for(var i=0;i<3;i++){next.zIndex = next.next.zIndex;next.div.css("z-index", next.zIndex);next = next.next;}next.zIndex = index;next.div.css("z-index", next.zIndex);//再改动画。var css = $.extend(cNode.style,{});next = cNode;for(var i=0;i<3;i++){   next.style = $.extend(next.next.style,{});next.div.animate(next.style,1000);next = next.next;}next.style = css;next.div.animate(next.style,1000);cNode = cNode.pre;}// cNode --> prefunction moveRight(){//在切换之前。务必判断。cNode.next.zIndex < cNode.pre.zIndex 。如果不大于。要交换。if( cNode.next.zIndex > cNode.pre.zIndex){var ind = cNode.next.zIndex;cNode.next.zIndex = cNode.pre.zIndex;cNode.pre.zIndex = ind;}//先改层次。var index = cNode.zIndex;var pre = cNode;for(var i=0;i<3;i++){pre.zIndex = pre.pre.zIndex;pre.div.css("z-index", pre.zIndex);pre = pre.pre;}pre.zIndex = index;pre.div.css("z-index", pre.zIndex);//再改动画。var css = $.extend(cNode.style,{});pre = cNode;for(var i=0;i<3;i++){   pre.style = $.extend(pre.pre.style,{});pre.div.animate(pre.style,1000);pre = pre.pre;}pre.style = css;pre.div.animate(pre.style,1000);cNode = cNode.next;}function init(){cNode = new ImageNode("00");for(var i=1;i<=3;i++){cNode.add( new ImageNode(i+""+i));}var divs=[];for(var i=0;i<4;i++){divs[i]=$("<div class='bgimg'></div>");$("#container").append(divs[i]);}var next = cNode;//1 next.div = divs[0];next.style={width:"800px",height:"400px",top:"0px",left:"200px",zIndex:4};next.zIndex = 4;//2next = next.next;next.div = divs[1];next.style={width:"800px",height:"300px",top:"50px",left:"-400px",zIndex:3};next.zIndex = 3;//3next = next.next;next.div = divs[2];next.style={width:"800px",height:"300px",top:"50px",left:"200px",zIndex:1};next.zIndex = 1;//4next = next.next;next.div = divs[3];next.style={width:"800px",height:"300px",top:"50px",left:"800px",zIndex:2};next.zIndex = 2;var next = cNode;for(var i=0;i<4;i++){next.div.css(next.style);next = next.next;}}ImageNode.prototype.data={nodeNum:1};/**节点类。 new ImageNode();*/function ImageNode(name){this.isfirst = false;this.islast = false;this.pre = null;this.next = null;this.name = name;this.style={};//存储height,left,top,this.zIndex =0;this.div = null;//存储每个节点对应的divjquery对象。//尾部添加。this.add=function(N){this.data.nodeNum ++;if(this.data.nodeNum == 2 ){this.isfirst = true;}//找尾。var last_node = null;var current_node = this;while(true){last_node = current_node.next;if(last_node ==null){last_node = current_node;break;}else{if(last_node.islast)break;current_node = last_node;}}N.pre=last_node;//尾的上一个是旧尾。last_node.next = N;//旧尾的下一个是新尾。//更换标志位。N.islast = true;last_node.islast = false;//找头。var first_node = null;var current_node = this;while(true){first_node = current_node.pre;if(first_node == null){first_node = current_node;break;}else{if( first_node.isfirst)break;current_node = first_node;}}//新尾的下一个是首。N.next = first_node;//首的上一个是新尾。first_node.pre = N;}}</script></body>
</html>

转载于:https://my.oschina.net/lightled/blog/1925311

JavaScript面向对象编程之双向链表结构实现立体轮播图效果相关推荐

  1. JavaScript使用改变scrollLeft的值做轮播图效果

    前言 今天学了一个使用scrollLeft改变溢出的值的方法做的轮播图,没有做全只做了轮播的效果,自己觉得这个轮播图并不好用(也是我菜),内容不多就不一步步讲解了,不懂得可以看看注释 <!DOC ...

  2. 原生JavaScript轮播图效果实现

    原生JavaScript实现轮播图切换效果的实现过程 本文所用代码仅供个人学习.此部分代码系按原腾讯电脑管家首页的轮播图效果,采用原生JS技术予以实现(原网页采用jQurey等技术). 1. 文件准备 ...

  3. php自动轮播图代码,JavaScript如何实现动态轮播图效果?(代码示例)

    本篇文章给大家带来的内容是JavaScript如何实现动态轮播图效果?(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 功能描述: 1.鼠标经过 左右侧箭头显示,鼠标离开 ...

  4. 用JavaScript实现网页无限轮播图效果,附整套源码

    用JavaScript实现无限轮播图效果(附源码) javascript群内每日课题-今日课题:用JavaScript实现无限轮播图效果 PS:很多企业通用的案例自己再学习过程中肯定是要熟练的,所以今 ...

  5. HTML+CSS+JavaScript实现轮播图效果

    前言 先奉上本文需要的所有资源,免费下载,代码有详细注释,可搭配本文使用: 前端JavaScript实现轮播图效果 百度网盘:百度网盘 请输入提取码 提取码:slbt 没有添加动画效果,添加了自动切换 ...

  6. html动态轮播效果怎么做,详解JavaScript实现动态的轮播图效果

    利用javascript能实现常见的动态的网页轮播图效果,如下图1所示: 图1 实现该轮播图有以下几个要点: (1)在左右两侧各有一个箭头,分别指的是向左和向右切换,即点击相应的位置就会切换到该图片之 ...

  7. 用jQuery实现轮播图效果(自动播放,能手动切换)

    大家好,今天我和大家分享一下轮播图的实现,下面是我做的轮播图效果 首先我们看到,它是由背景图片.方向图标和指示器组成.**我们发现背景图片.方向图标和指示器是层叠在一起的,所以布局时我们要用绝对定位. ...

  8. html中间大两边小轮播代码,vue使用swiper实现中间大两边小的轮播图效果

    项目中使用的vue,刚好有需求要实现轮播图,突出显示当前图片,两边展示其他图片:通过查各种资料,实现了,故在此记录下来 下面我们来看下实现步骤: 第一步:首先在项目index.html中引入swipe ...

  9. 高仿阴阳师官网轮播图效果的jQuery插件

    代码地址如下: http://www.demodashi.com/demo/12302.html 插件介绍 这是一个根据阴阳师官网的轮播效果所扒下来的轮播插件,主要应用于定制个性化场景,目前源码完全公 ...

  10. 【微信小程序】小程序实现轮播图效果--swiper组件(一步步教你如何实现)

    文章目录 前言 1.引入外部链接图片资源 2.让swiper来调整适应图片的宽高 3.实现轮播效果--autoplay 总结 欢迎点赞,收藏,加关注 前言 此例子是用微信小程序组件swiper来实现轮 ...

最新文章

  1. java调用PageOffice生成word
  2. mysql ocp 认证 题库_MySQL 8 OCP(1Z0-908)认证考试题库原题(第10题)
  3. shell脚本练习(12.8)
  4. 腾讯视频vip会员_腾讯视频如何查看版本号
  5. 快速获得Google Chrome最新版本
  6. 作业成本分析法如何计算?作业成本怎么分析计算
  7. ppt大赛优秀作品计算机,ppt大赛获奖作品展示.ppt
  8. 3d建模和计算机专业对口吗,学3d建模有学历门槛吗
  9. 将一个大写英文字母转换为小写输出 (12 分) - PTA
  10. php启用 兼容性视图,新版Edge浏览器兼容性视图设置及添加兼容性站点教程(图示)...
  11. 计算机公式max值怎么设置,Excel 计算最大值:MAX函数详解
  12. 5G网络与5G WiFi有什么区别
  13. 2022 上半年 FDA 小分子药物盘点 - MedChemExpres
  14. H.265/HEVC解码器 C 参考代码
  15. HttpClient详细使用示例
  16. 铷标准的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 20个计算机英语关键词,英语微课堂:20个专业体育英语术语,秒懂赛场关键词!...
  18. 等了15年,这本豆瓣评分高达9.3的编程巨著终于出版了!
  19. 绝好用的迈科威(主控芯片)量产工具
  20. 触觉智能分享-SSD20X Ubuntu 20.04 文件系统的移植

热门文章

  1. 判断一个数字是整数还是小数
  2. 屏幕适配 percent_库的扩展
  3. linux和windows时间同步问题(UTClocaltime)
  4. macvlan 详解
  5. Android 四大组件学习之BroadcastReceiver二
  6. 服务器文件夹只读属性,修改云服务器上文件夹只读属性
  7. 彻底理解Cisco NAT内部的一些事
  8. 网络QoS原理与实现
  9. 高通如何通过9008端口读取EMMC的分区
  10. Linux内核模块静态加载的顺序