,,iSlider手机端图片滑动切换插件使用详解

,,iSlider手机端图片滑动切换插件使用详解

这篇文章主要为大家详细介绍了伊斯里德手机端图片滑动切换插件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

自适应轮播图,支持手机触屏滑动,三种切换效果。

效果图:

js:

var iSlider=function(opts) {

如果(!opts.dom) {

抛出新错误(“dom元素不能为空!");

}

如果(!opts.data ||!opts.data.length) {

抛出新错误("数据必须是数组,并且必须有多个元素!");

}

这个. opts=opts

这个. setting();

这个. render html();

这个. bind handler();

};

是lider。原型。_ setting=function(){

var opts=this ._ opts

这个。wrap=opts。DOM

这个。数据=opts。数据;

这个。type=opts。type | | ' pic

这个。是垂直的=opts。是竖| |假;

这个。幻灯片上=opts。在幻灯片上;

这个。onslidestart=opts。onslidestart

这个。onslideend=opts。onslideend

这个。onslidechange=opts。onslidechange

这个。持续时间=opts。时长| | 4000;

this.log=opts.isDebug?

函数(字符串){

console.log(字符串)

}:函数(){ };

this.axis=this.isVertical?y ':' X ';

这个。宽度=这个。包装。客户端宽度;

这个。身高=这个。包装。客户身高;

这个。比率=这个。身高/这个。宽度;

this.scale=opts.isVertical?这个高度:这个宽度

这个。滑块索引=this。滑块索引| | 0;

if (this.data.length 2) {

this.isLooping=false

this.isAutoPlay=false

}否则{

这个。正在循环=opts。正在循环| | false

这个。isautoplay=opts。isautoplay | | false

}

if (this.isAutoplay) {

这个。play();

}

这个. setup阻尼();

这个. animate func=(opts。在此制作文字动画._animateFuncs)?这个. animate funcs[opts。动画类型]:这个. animate funcs[' default '];

这个. setPlayWhenFocus();

};

是lider。原型。_ setPlayWhenFocus=function(){

var self=this

window.addEventListener('focus ',

函数(){

自我。我是自娱自乐。play();

},

假);

window.addEventListener('blur ',

函数(){

自我。pause();

},

假);

}

是lider。原型。_ animate funcs={

' default': function(dom,axis,scale,I,offset) {

多姆。风格。webkittransform=' translate z(0)translate ' axis '('(offset scale *(I-1))' px)';

},

旋转':函数(dom,轴,刻度,I,偏移量){

var旋转直接=(axis==' X ')?y ':' X ';

var绝对失调=数学。ABS(偏移);

var BD color=window。getcomputedstyle(这个。包装。父节点,空).背景颜色

if (this.isVertical) {

偏移量=-偏移量;

}

这个。包装。风格。WebKit perspective=scale * 4;

if (i==1) {

多姆。风格。zindex=scale-绝对偏移量;

}否则{

dom.style.zIndex=(offset 0)?(1-I)*绝对偏移量:(I-1)*绝对偏移量;

}

多姆。风格。背景色=BD color | | ' # 333

多姆。风格。position=' absolute

多姆。风格。WebKit back face visibility=“hidden”;

多姆。风格。webkittransformstyle=' preserve-3d ';

多姆。风格。webkittransform=' rotate ' rotate direct '(' 90 *(offset/scale I-1)' deg)translate z('(0.888 * scale/2)' px)scale(0.888)';

},

翻转':函数(dom,轴,刻度,I,偏移量){

var旋转直接=(axis==' X ')?y ':' X ';

var BD color=window。getcomputedstyle(这个。包装。父节点,空).背景颜色

if (this.isVertical) {

偏移量=-偏移量;

}

这个。包装。风格。WebKit perspective=scale * 4;

如果(偏移量0) {

dom.style.visibility=(i 1)?"隐藏":"可见";

}否则{

dom.style.visibility=(i 1)?"隐藏":"可见";

}

多姆。风格。背景色=BD color | | ' # 333

多姆。风格。position=' absolute

多姆。风格。WebKit back face visibility=“hidden”;

多姆。风格。webkittransform=' translate z('(scale/2)' px)rotate ' rotate direct '(' 180 *(offset/scale I-1)' deg)scale(0.875)';

},

' depth': function(dom,axis,scale,I,offset) {

var旋转直接=(axis==' X ')?y ':' X ';

var缩放比例=(4-数学。ABS(I-1))* 0.15;

这个。包装。风格。WebKit perspective=scale * 4;

if (i==1) {

多姆。风格。zindex=100

}否则{

dom.style.zIndex=(offset 0)?(1-I):(I-1);

}

多姆。风格。webkittransform=' scale(' zoom scale ',' zoom scale ')translate z(0)translate ' axis '('(offset 1.3 * scale *(I-1))' px)';

},

“撕裂”:函数(dom,轴,刻度,I,偏移量){

var旋转直接=(axis==' X ')?y ':' X ';

var缩放比例=1-(数学。ABS(I-1)* 0.2);

这个。包装。风格。WebKit perspective=scale * 4;

if (i==1) {

多姆。风格。zindex=100

}否则{

dom.style.zIndex=(offset 0)?(1-I):(I-1);

}

多姆。风格。webkittransform=' scale(' zoom scale ',' zoom scale ')translate z(0)translate ' axis '('(offset scale *(I-1))' px)';

}

}

是lider。原型。_ setup damping=function(){

变量二分之一=这个。比例尺1;

var one in 4=one in 2 1;

var 1/16=1/42;

这个。_阻尼=功能(距离){

var dis=Math.abs(距离);

定义变量结果;

if (dis oneIn2) {

结果=dis 1;

} else if (dis oneIn2 oneIn4) {

结果=1/4((dis-1/2)2);

}否则{

结果=1/4 1/16((dis-1/2-1/4)3);

}

回程距离0?结果:-结果;

};

};

是lider。原型。_ render item=function(I){

变量项目,html

var len=this。数据。长度;

如果(!this.isLooping) {

item=this.data[i] || {

空:真

};

}否则{

如果(i 0) {

item=this。数据[len I];

} else if (i len - 1) {

item=this。数据[I-len];

}否则{

item=this。数据[I];

}

}

if (item.empty) {

返回"";

}

if (this.type==='pic') {

html=item。高度/项目。加宽这个。比例?img height=' ' this。高度' ' src=' '项目。内容' ':' img width=' ' this。宽度' ' src=' '项目。内容“”;

} else if (this.type==='dom') {

html=' div style=' height:' item。高度';宽度:'项。宽度';' '项。content '/div ';

} else if(这个。type===' over spread '){

html=this.ratio 1?div style=' height:100%;宽度:100%;背景:URL(“item . content”)中心不重复;背景-尺寸:'这个。宽度'像素自动;/div ':' div style=' height:100%;宽度:100%;背景:URL(“item . content”)中心不重复;背景尺寸:自动'这个。高度' px;/div ';

}

返回超文本标记语言

};

是lider。原型。_ render html=function(){

定义变量外部;

如果(this.outer) {

这个。外部。innerhtml=

outer=this.outer

}否则{

外部=文档。createelement(“ul”);

}

外部。风格。宽度=这个。宽度' px ';

外部。风格。身高=这个。高度' px ';

这个。els=[];

for(var I=0;i3;i ) {

var Li=文档。createelement(“Li”);

李。风格。宽度=这个。宽度' px ';

李。风格。身高=这个。高度' px ';

这个. animateFunc(李,this.axis,this.scale,I,0);

(李);

outer.appendChild(李);

如果这是垂直的._ opts。animate type==' rotate ' | | this ._ opts。animate type==' flip '){

li.innerHTML=this ._渲染项目(1-I this。滑块索引);

}否则{

li.innerHTML=this ._渲染项目(I-1 this。滑块索引);

}

}

如果(!this.outer) {

外部=外部

这个。包装。appendchild(外部);

}

};

是lider。原型。_ slide=function(n){

var data=this.data

var els=this.els

var idx=this。滑块索引n;

if (data[idx]) {

this.sliderIndex=idx

}否则{

if (this.isLooping) {

this.sliderIndex=n 0?0:数据。长度-1;

}否则{

n=0;

}

}

这个。log(' pic idx:'这个。滑块索引’);

var sEle

如果这是垂直的._ opts。animate type==' rotate ' | | this ._ opts。animate type==' flip '){

if (n 0) {

sEle=els。pop();

埃尔斯。un shift(sEle);

} else if (n 0) {

sEle=els。shift();

埃尔斯。推(sEle);

}

}否则{

if (n 0) {

sEle=els。shift();

埃尔斯。推(sEle);

} else if (n 0) {

sEle=els。pop();

埃尔斯。un shift(sEle);

}

}

如果(n!==0) {

sEle.innerHTML=this ._ render item(idx n);

塞勒。风格。webkittransition=' none

塞勒。风格。可见性='隐藏';

setTimeout(function() {

塞勒。风格。visibility=' visible

},

200);

这个。改变这个。onslidechange(这个。滑块索引);

}

for(var I=0;i3;i ) {

if (els[i]!==sEle) {

els[I]。风格。webkittransition=' all。3s ease’;

}

这个. animateFunc(els[i],this.axis,this.scale,I,0);

}

if (this.isAutoplay) {

如果(这个。滑块索引===数据。长度-1!this.isLooping) {

这个。pause();

}

}

};

是lider。原型。_ bind handler=function(){

var self=this

var scaleW=self.scaleW

var outer=self.outer

var len=self。数据。长度;

var startHandler=function(evt) {

自我。pause();

自我。开始自我滑行。onslidestart();

自我。日志(“事件:幻灯片之前”);

self.startTime=新日期()。getTime();

自我。startx=evt。目标触摸[0].pageX

自我。starty=evt。目标触摸[0].佩吉;

var目标=evt.target

while (target.nodeName!='LI' target.nodeName!='BODY') {

target=target.parentNode节点

}

自我目标=目标

};

var moveHandler=function(evt) {

evt。防止默认();

自我。在幻灯片上。在幻灯片()上;

自我。日志(“幻灯片上的事件”);

定义变量轴=自轴

var失调=evt。目标触摸[0][' page]轴] - self['start '轴];

如果(!self.isLooping) {

if(偏移量0自。滑块索引===0 | |偏移量0 self。滑块索引===self。数据。长度-1){

偏移=自身。_阻尼(偏移);

}

}

for(var I=0;i3;i ) {

var item=self。els[I];

item.style.webkitTransition='全0 ';

自我. animateFunc(项目,轴,自缩放,我,偏移);

}

self.offset=偏移量

};

var endHandler=function(evt) {

evt。防止默认();

var边界=自我。标度/2;

定义变量度量=自我补偿;

var结束时间=新日期()。getTime();

边界=结束时间-自身。开始时间300?边界:14;

如果(度量=边界){

自我. slide(-1);

} else if(公制边界){

自我. slide(1);

}否则{

自我. slide(0);

}

自我。我是自娱自乐。play();

自我。偏移=0;

自我。滑向自我。onslideend();

自我。日志('事件:幻灯片后');

};

var orientationchangeHandler=function(evt){

setTimeout(function() {

自我。reset();

自我。日志(“事件:方向改变”);

},

100);

};

外部。addevent侦听器(' touch start ',start handler);

外部。addevent侦听器(' touch move ',move handler);

外部。addevent侦听器(' touch end ',end handler);

窗户。addevent listener(' orientation change ',方向更改处理程序);

};

是lider。原型。重置=函数(){

这个。pause();

这个. setting();

这个. render html();

这个。我自动播放这个。play();

};

是lider。原型。play=function(){

var self=this

var duration=this.duration

clearInterval(这个。autoplaytimer);

这个。autoplaytimer=setInterval(function(){

自我. slide(1);

},

持续时间);

};

是lider。原型。暂停=函数(){

clearInterval(这个。autoplaytimer);

};

是lider。原型。扩展=函数(插件){

var fn=iSlider.prototype

对象.键(插件)。forEach(函数(属性){

Object.defineProperty(fn,Property,Object。getownpropertydescriptor(plugin,property));

})

}

iSlider.prototype.extend({

bindMouse: function() {

var self=this

var scaleW=self.scaleW

var outer=self.outer

var len=self。数据。长度;

var bDrag=false

var mouseStart=function(evt) {

bDrag=true

自我。pause();

自我。开始自我滑行。onslidestart();

self.startTime=新日期()。getTime();

自我。startx=evt。clientx

自我。starty=evt。客户关系;

var目标=evt.target

while (target.nodeName!='LI' target.nodeName!='BODY') {

target=target.parentNode节点

}

自我目标=目标

};

var mouseMove=function(evt) {

if (bDrag) {

evt。防止默认();

自我。在幻灯片上。在幻灯片()上;

定义变量轴=自轴

var offset=evt['客户端'轴] - self['开始'轴];

如果(!self.isLooping) {

if(偏移量0自。滑块索引===0 | |偏移量0 self。滑块索引===self。数据。长度-1){

偏移=自身。_阻尼(偏移);

}

}

for(var I=0;i3;i ) {

var item=self。els[I];

item.style.webkitTransition='全0 ';

自我. animateFunc(项目,轴,自缩放,我,偏移);

}

self.offset=偏移量

}

};

var mouseEnd=function(evt) {

evt。防止默认();

bDrag=false

var边界=自我。标度/2;

定义变量度量=自我补偿;

var结束时间=新日期()。getTime();

边界=结束时间-自身。开始时间300?边界:14;

如果(度量=边界){

自我. slide(-1);

} else if(公制边界){

自我. slide(1);

}否则{

自我. slide(0);

}

自我。我是自娱自乐。play();

自我。偏移=0;

自我。滑向自我。onslideend();

自我。日志('事件:幻灯片后');

};

外部。addevent侦听器(' mousedown ',mouseStart);

外部。addevent侦听器(' mouseMove ',mouseMove);

外部。addevent侦听器(' mouseup ',mouseEnd);

}

})

html:

!文档类型超文本标记语言

html lang='en '

meta charset='UTF-8 '

标题文档/标题

style type='text/css '

*{

填充:0;

列表样式:无;

边距:0;

}

/*容器高度*/

#是ider-effect-wrapper {

高度:400像素

宽度:500像素

边距:0自动;

边距-顶部:4.6雷姆;

溢出:隐藏;

位置:相对;

}。是否有更好的效果

列表样式:无;

填充:0;

边距:0;

身高:100%;

溢出:隐藏

}。更好的效果

位置:绝对;

边距:0;

填充:0;

身高:100%;

溢出:隐藏;

显示:-WebKit-box;

-WebKit-包装盒-包装:中心;

-WebKit-box-align:center;

列表样式:无

}。李的思想影响大吗图像

最大宽度:100%;

最大高度:100%;

边距:0;

填充:0

}。iSlider-effect div {

背景色:# fff

填充物:3px

}

/风格

/头

身体

脚本类型=' text/JavaScript ' src=' mobile _ slider。js '/脚本

!-组件容器-

div id='是ider-effect-wrapper '/div

脚本

//组件注册

var islider1=新iSlider({

//节点获取

DOM:文档。getelementbyid(' is lider-effect-wrapper '),

//图片配置

数据:[

{

内容:" images/01.jpeg ",

},

{

内容:' images/04.jpg ',

},

{

内容:' images/05.jpg ',

}

],

//播放间隔

时长:3000,

//animateType切换方式

//默认值:默认

//旋转:旋转

//翻转:弹出

动画类型:"旋转",

//是否自动播放

isAutoplay:没错,

//是否循环播放

isLooping:没错,

//isVertical: true,是否垂直滚动

});

是lider 1。bind mouse();

/脚本

/body

/html

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • word文档无法编辑是怎么回事-
  • 华为手机怎么设置返回键(华为手机下面的三个按键设置方法)
  • lumia950怎么样(Lumia950体验分享)
  • otg连接是什么意思(OTG连接手机方法)
  • 笔记本触摸板怎么右键(笔记本电脑触控板手势操作设置)
  • 真我x7怎么样(realme X7 系列体验)
  • 苹果的A16处理器有多强(苹果的A16处理器的介绍)
  • 小米互传怎么用(小米手机的连接与共享教程)
  • 怎么设置电脑桌面图标自动对齐 设置电脑桌面自动整理图标的方法
  • 宽带错误651最简单解决方法(处理宽带错误651的措施)
  • 大学生手机有什么推荐(大学生换手机攻略)
  • 天玑1100和骁龙778g哪个好(骁龙778G、天玑900、天玑1100购选建议)
  • yum update 升级报错的解决办法
  • Windows10禁用屏保教程
  • 连接wifi显示无互联网连接怎么办(无线连上了却不能上网处理绝招)
  • 留言与评论(共有 条评论)
       
    验证码: