代码地址如下:
http://www.demodashi.com/demo/12302.html

插件介绍

这是一个根据阴阳师官网的轮播效果所扒下来的轮播插件,主要应用于定制个性化场景,目前源码完全公开,如有需要,可根据自己的需求修改源码样式下面是一个演示页面截图(建议使用新版谷歌、火狐浏览器观看,对于ie9以下不支持CSS3属性的浏览器不兼容)。

在插件包中,包含新旧两个版本的插件js源码,区别主要在于控制移动样式上面,可根据自身需求修改对应css样式及插件部分代码,实现个性化定制。

其中index.html对应新版demo页面,demo_old.html对应旧版demo页面。

js文件夹目录下包括jquery-yys-slider.js新版 js 源码,jquery-yys-slider-old.js旧版 js 源码。

实现逻辑

一般的轮播图插件实现的原理,其实就是中间有一个刚好显示一张轮播图的视窗,然后控制轮播图的横向或是纵向的一个移动,来达到轮播图切换的效果。

下面主要讲一讲我当时做这个轮播图的一些思路和逻辑吧,这个轮播图插件主要实现原理与这个方式稍有差别,主要体现在这里不用控制轮播图的位移,只需要控制轮播图的class的切换,即可达到类似位移的效果。

这里我就以四图轮播的方式讲解一下。

首先,从这个轮播图的初始位置上观察,暂且用所有图片容器对应的下标作为标识,即类名为”.gallery_wrap”的 4 个子元素,分别对应 0, 1, 2, 3。在这种图中前三个图片容器都分别展示出来了,最后一个下标为 3 的元素被前面的元素遮挡住了。

下面这两张图片,是从初始位置,连续点击两次左侧按钮发生的类名变化以及位移。

从这三张图片中,不难发现,这里面的规律的:当我们观察 i == 0 的图片时,可以发现这个图片容器的类名依次变化顺序(”.gallery_left_middle” ==> “.front_side” ==> “.gallery_right_middle” ==> “.gallery_out” ==> “.gallery_left_middle”…)。实际上轮播的原理,就是让每个图片容器的类名变化,从而改变其css定位,来实现的位移效果。

核心代码

轮播图的位移,实际是靠控制轮播图的类名变化实现的

//左侧按钮绑定点击事件
_this.find(_gallery_item_left).on('click',function(){
var idx = parseInt(_this.find(_gallery_left_middle).index());
//当前展示图片逻辑
_this.find(_threeD_gallery_item).eq(idx).removeClass('gallery_left_middle').addClass('front_side');
//当idx值为0时,执行逻辑
_this.find(_threeD_gallery_item).eq(idx == 0 ? idx + _imgNum - 1 : idx - 1).removeClass('gallery_out').addClass('gallery_left_middle');
//当idx值为_imgNum - 3时,执行逻辑
_this.find(_threeD_gallery_item).eq(idx == _imgNum - 3 ? idx + 2 : idx - _imgNum + 2).removeClass('gallery_right_middle').addClass('gallery_out');
//当idx值为_imgNum - 2时,执行逻辑
_this.find(_threeD_gallery_item).eq(idx == _imgNum - 2 ? idx + 1 : idx - _imgNum + 1).removeClass('front_side').addClass('gallery_right_middle');
})
//右侧按钮绑定点击事件
_this.find(_gallery_item_right).on('click',function(){
var idx = parseInt(_this.find(_gallery_right_middle).index());
//当前展示图片逻辑
_this.find(_threeD_gallery_item).eq(idx).removeClass('gallery_right_middle').addClass('front_side');
//当idx值为0时,执行逻辑
_this.find(_threeD_gallery_item).eq(idx == 0 ? idx + _imgNum - 1 : idx - 1).removeClass('front_side').addClass('gallery_left_middle');
//当idx值为1时,执行逻辑
_this.find(_threeD_gallery_item).eq(idx == 1 ? idx + _imgNum - 2 : idx - 2).removeClass('gallery_left_middle').addClass('gallery_out');
//当idx值为_imgNum - 2时,执行逻辑
_this.find(_threeD_gallery_item).eq(idx == _imgNum - 2 ? idx + 1 : idx - _imgNum + 1).removeClass('gallery_out').addClass('gallery_right_middle');
})

在这里可以看到,控制轮播图移动的实际为两个不可见的按钮,分别置于正面显示轮播图的左右两侧,如下图所示:



运行效果

下载附件后,直接打开index.htmldemo_old.html即可在浏览器中看到运行效果。

使用方法

调用轮播插件:
Html:
<div class="gallery_container"></div>
Javascript:
$(".gallery_container").gallery_slider({
imgNum: 4, // 轮播图数量至少为4张
imgArr: [ // 图片数组,图片数组长度应与图片数量保持一致
'images/xxx.jpg',
'images/xxx.jpg',
'images/xxx.jpg',
'images/xxx.jpg'
]
});

预览图:

预览地址:https://yangyunhe369.github.io/jQuery-Yys-Slider

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

代码地址如下:
http://www.demodashi.com/demo/12302.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

高仿阴阳师官网轮播图效果的jQuery插件的更多相关文章

  1. 小米官网轮播图js+css3+html实现

    官网轮播: 我的轮播: 重难点: 1.布局 2.图片和右下角小圆点的同步问题 3.setInterval定时器的使用 4.淡入淡出动画效果 5.左右箭头点击时,图片和小圆点的效果同步 6.另一种轮播思 ...

  2. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)

    利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)   作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...

  3. 用vue写一个仿简书的轮播图

    原文地址:用vue写一个仿简书的轮播图 先展示最终效果: Vue的理念是以数据驱动视图,所以拒绝通过改变元素的margin-top来实现滚动效果.写好css样式,只需改变每张图片的class即可实现轮 ...

  4. 纯CSS实现轮播图效果,你不知道的CSS3黑科技

    前言 轮播图已经是一个很常见的东西,尤其是在各大App的首页顶部栏,经常会轮番显示不同的图片. 一提到轮播图如何实现时,很多人的第一反应就是使用Javascript的定时器,当然这种方法是可以实现的. ...

  5. photoSlider-原生js移动开发轮播图、相册滑动插件

    详细内容请点击 在线预览   立即下载 使用方法: 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css& ...

  6. js实现轮播图效果(附源码)--原生js的应用

    1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  7. 用html +js+css 实现页面轮播图效果

    html 页面 <html lang="en"> <head> <meta charset="UTF-8"> <met ...

  8. JavaScript实现轮播图效果

    我又来了,同志们.老想你们了 捕获小可爱一枚. 下面进入正题:用JavaScript原生代码写轮播图效果. 具体效果就不多说了,网站上面的轮播效果我们都知晓.下面是展示代码 html代码: <d ...

  9. 小程序实践(二):swiper组件实现轮播图效果

    swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷. 效果图: 首先看下swiper支持的属 ...

随机推荐

  1. GDKOI 游记

    Day 0 坐和谐号去广州 非常奇怪的一点是,每次坐车去广州人都很少,但是坐车回来人都贼多...... 到酒店住下,出去吃完晚饭,lmy开始奶:明天考数据结构啊! zkw:为什么不考AC自动机和插头D ...

  2. windows系统部署springboot项目及绑定域名

    http://note.youdao.com/noteshare?id=c3ccea255affd2c5d79231d67fa29103&sub=187AEEEA5CF34531A2C2315 ...

  3. Bzoj2829 信用卡凸包

    Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 333  Solved: 155 Description Input ...

  4. LOJ#2086. 「NOI2016」区间

    $n \leq 500000$个区间,从中挑出一些,使得至少有一个点被$m$个选中区间包含,且选中区间长度的极差最小. 区间题死脑筋晚期:把区间按左端点排序,然后右端点用个优先队列来弹,然后需要维护下 ...

  5. Educational Codeforces Round 37 A B C D E F

    A. water the garden Code #include <bits/stdc++.h> #define maxn 210 using namespace std; typede ...

  6. 【电脑使用经验】怎么查看无线网络中电脑的IP地址?

    1. 2. 3. 4. 5.

  7. linux下轻松修改pdf文件

    前几天使用firefox打印了一个网页,后来查看有很多页面都是评论,对我来说,实在没有什么用处,就想把多余的内容给删除了,后来,终于找到了一个工具:pdf mod非常不错的工具,直接打开文件,选择要删 ...

  8. 在 CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本

    MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定发行版安装包(如 .rpm)以及二进制通用版安装包(.tar.gz).一般情况下,很多项目都倾向于采用二进制通用安装包形式来进行安 ...

  9. 通过Java实现斗地主

    功能:洗牌,发牌,对玩家手中的牌排序,看牌 package demo06; import java.util.ArrayList; import java.util.Collections; impo ...

  10. Eclipse 导入项目乱码问题

    1.编码不对 a.对某文件或某工程更改编码: 鼠标移到工程名或文件名,右键->Properties->Resource->Text file enCoding ->更改编码(G ...