轮播图(手动版)M端 、PC都支持

码上

支持左右、上下划动

css

.admin{width:500px;height:500px;background:#ee00ee;position:relative}
div.m{width:500px;height:500px;position:absolute;top:0;left:0;text-align:center}
div.m img{width:400px;height:400px;}

html

     <div class="admin"   id=‘wrapper‘ style="background:none">
         <div class="m" data-m=‘0‘><img src="/img/a.jpg" alt="" /></div>
         <div class="m" data-m=‘1‘><img src="/img/0.jpg" alt="" /></div>
         <div class="m" data-m=‘2‘><img src="/img/3.jpg" alt="" /></div>
         <div class="m" data-m=‘3‘><img src="/img/c.jpg" alt="" /></div>
         <div class="m" data-m=‘4‘><img src="/img/d.jpg" alt="" /></div>
     </div>

javascript

先引入这个构造方法

 "use strict";
 var PPT=function(d){
        "use strict";
        this.W=document.getElementById(d.id);
        this.cname=d.cname;
        this.c= ‘getElementsByClassName‘ in document?this.W.getElementsByClassName(this.cname):this.W.querySelectorAll(‘.‘+this.cname);
        this.Le= this.c.length;
        this.w=this.W.offsetWidth;
        this.h=this.W.offsetHeight;
        this.auto=typeof d.auto!=‘undefined‘?d.auto:!1;
        this.loop=typeof d.loop!=‘undefined‘?d.loop:!1;
        this.isV=typeof d.isV!=‘undefined‘?d.isV:!0;
        this.na=window.navigator.userAgent.toLowerCase();
        this.o=this.isV?‘pageY‘:‘pageX‘;
        this.endvalue=this.isV?this.h:this.w;
        this.args={loop:this.loop,auto:this.auto,isV:this.isV,ht:0,hm:0,L:!1,D:!1,dL:!1,dR:!1,previous:null,next:null,_this:null,size:this.Le,dom:this.c,I:0,N:0,P:0,pwidth:this.w,pheight:this.h,index:0,o:this.o,endvalue:this.endvalue}
        this.fn=d.evEnd;
        this.ps(this.fn);
    };
    PPT.prototype.dev=function(){
            "use strict";
            var et,reg=/(android)|(ios)|(ipad)|(iphone)|(xiaomi)/;et=‘ontouchstart‘ in document&&reg.test(this.na)?{d:true,t:‘touchstart‘,m:‘touchmove‘,e:‘touchend‘}:{d:false,t:‘mousedown‘,m:‘mousemove‘,e:‘mouseup‘}
            return et;
    };
    PPT.prototype.layout=function(){
        "use strict";
        var position=this.isV?position=‘metrix(1,0,0,1,0,‘+this.h+‘)‘:‘metrix(1,0,0,1,‘+this.w+‘,0)‘;
        for(var i=1;i<this.Le;i++){
            this.c[i].style.webkitTransform=position;
            this.c[i].style.transform=position;
            this.c[i].style.display=‘none‘;
        }
    };
    PPT.prototype.ps=function(fn){
        "use strict";
        this.layout();
        this.args.extend=this.orient;this.args.find=this.sdom;this.args.setStyle=this.zpp;this.args.end=this.ends;this.args.touchEnd=arguments[0]||‘‘;
        this.args.spa=‘-webkit-transform 0.3s ease-out‘;this.args.spb=‘transform 0.3s ease-out‘;
         this.exe(this.at,this.mt,this.et,this.args);
    };
    PPT.prototype.at=function(e,d,a){
        "use strict";
         a.ht=d.d?e.targetTouches[0][a.o]:e[a.o];
        a._this=a.find(e.target);
        a.I=Number(a._this.dataset.m);
        if(typeof a.old===‘undefined‘){
           a.old=a._this;
        }else if(!a.old.isEqualNode(a._this)){
            a.old.style.display=‘none‘;
        }
        a.N=a.I+1;
        a.P=a.I-1;
        if(a.loop){
            if(a.I<=0){
                a.P=a.size-1;
                a.N=a.I+1;
            }else if(a.I>=a.size-1){
                a.P=a.I-1;
                a.N=0;
            }
        }else{
            a.dR=a.dL=!1;
            if(a.I===0){
                a.dR=!0;
            }else if(a.I===a.size-1){
                a.dL=!0;
            }
        }
        a.previous=a.dom[a.P];a.next=a.dom[a.N];
    };
    PPT.prototype.mt=function(e,d,a){
            "use strict";
             if(!a.ht)return;
             a.hm=d.d?e.targetTouches[0][a.o]:e[a.o];
             a.D=a.ht-a.hm>0?!0:!1;
             if(a.D){if(a.dL)return;}else{if(a.dR)return;};
             a.extend(e,a);
    };
    PPT.prototype.et=function(a){
        "use strict";
        if(a.hm===0)return;
        if(a.D){if(a.dL)return;}else{if(a.dR)return;};
        a.end(a)
        a.touchEnd!==‘‘?a.touchEnd(a.index):null;
        a.old=a._this;
        a.ax=a.bx=a.ay=a.by=a.V=a.L=a.D=0;
    };
    PPT.prototype.orient=function(e,a){
                 var oD=0,nD=0,oL=0,bL=0,k=1;
                    a.D?(a.that=a.next,k=1):(a.that=a.previous,k=-1)
                    a.isV?(oD=a.hm-a.ht,nD=a.endvalue*k+oD):(oL=a.hm-a.ht,bL=a.endvalue*k+oL);
                 a.setStyle(a._this,{webkitTransform:‘matrix(1,0,0,1,‘+oL+‘,‘+oD+‘)‘,transform:‘matrix(1,0,0,1,‘+oL+‘,‘+oD+‘)‘,webkitTransition:‘‘,transition:‘‘});
                 a.setStyle(a.that,{webkitTransform:‘matrix(1,0,0,1,‘+bL+‘,‘+nD+‘)‘,transform:‘matrix(1,0,0,1,‘+bL+‘,‘+nD+‘)‘,webkitTransition:‘‘,transition:‘‘,display:‘block‘});
                 a.index=Number(a.that.dataset.m);
                 a.offset=a.isV?oD:oL;
    };
    PPT.prototype.ends=function(a){
                var n={y:0,x:0,a:-1,b:1};
                   a.isV?(n.y=a.endvalue,n.x=0):(n.x=a.endvalue,n.y=0);
                   a.D?(n.a=1,n.b=-1):(n.a=-1,n.b=1);
                if(Math.abs(a.offset)<=80){
                    n.x*=n.a;n.y*=n.a;
                    n.thisEnd=‘matrix(1,0,0,1,0,0)‘;
                    n.thatEnd=‘matrix(1,0,0,1,‘+n.x+‘,‘+n.y+‘)‘;
                }else{
                    n.x*=n.b;n.y*=n.b;
                    n.thisEnd=‘matrix(1,0,0,1,‘+n.x+‘,‘+n.y+‘)‘;
                    n.thatEnd=‘matrix(1,0,0,1,0,0)‘;
                }
                a.setStyle(a._this,{webkitTransform:n.thisEnd,transform:n.thisEnd,webkitTransition:a.spa,transition:a.spb});
                a.setStyle(a.that,{webkitTransform:n.thatEnd,transform:n.thatEnd,webkitTransition:a.spa,transition:a.spb});
            };
    PPT.prototype.exe=function(an,mn,en,args){
        "use strict";
        var eve=this.dev(),t=false;
        function st(e){
            e.preventDefault();
            t=true;
            an.call(this,e,eve,args);
        }
        function sm(e){
            e.preventDefault();
            if(!t)return;
            mn.call(this,e,eve,args);
        }
        function se(e){
            t=false;
            en.call(this,args);
        }
        this.W.addEventListener(eve.t,st);
        this.W.addEventListener(eve.m,sm);
        this.W.addEventListener(eve.e,se);
    };
    PPT.prototype.sdom=function(target){
        "use strict";
        var b=true,c=target;
        while(b){
            if(c.hasAttribute(‘data-m‘)){
                b=false;
                return c;
            }else{
                c= c.parentNode;
                b=true;
            }
        }
    };
    PPT.prototype.zpp=function(o,k){
        "use strict";
        for(var i in k){
            o.style[i]=k[i];
        }
    };

调用

       new PPT({
                   id:‘wrapper‘, //容器
                name:‘m‘,   //className
                   isV:true,   //是否上下划动
                   loop:false, //是否循环
                   evEnd:function(index){
                                       //索引值
                       console.log(index);
                      }
       });        

         document.ondragstart=function(e){
             var ev = e||window.event;
             ev.preventDefault()
             return false;
         }        

效果--

(循环模式、左右滑动模式)请自已尝试--支持手机哦

时间: 2024-10-07 06:13:50

轮播图(手动版)M端 、PC都支持的相关文章

0199 移动端 之 轮播图

1.2.1 案例: 移动轮播图 移动端轮播图功能和基本PC端一致. 可以自动播放图片 手指可以拖动播放轮播图 1.2.2 案例分析 自动播放功能 开启定时器 移动端移动,可以使用translate 移动 想要图片优雅的移动,请添加过渡效果 自动播放功能-无缝滚动 注意,我们判断条件是要等到图片滚动完毕再去判断,就是过渡完成后判断 此时需要添加检测过渡完成事件? transitionend? 判断条件:如果索引号等于 3 说明走到最后一张图片,此时 索引号要复原为 0 此时图片,去掉过渡效果,然后

原生JS面向对象思想封装轮播图组件

原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能实现都分别分为不同的模块.目前我封装的这个版本还不适配移动端,只适配PC端. 主要的功能有:自动轮播,点击某一张图片对应的小圆点就跳转到指定图片,有前后切换按钮.使用的时候只需要传入图片的路径以及每张图片分别所对应的跳转路径还有目标盒子ID就可以了,还可以自定义每张图轮播的延时,不过延时参数不是必须

简要分析javascript的选项卡和轮播图

选项卡 思路 1.按钮和展示的页面要对应:分别遍历,记住当前按钮的索引,让其成为展示页面的索引 2.只出现所对应的页面:所有的页面隐藏,只展示想要的页面 只展示js代码 for(var i=0;i<input.length;i++){ input[i].index=i //让浏览器解析HTML文档时,保存每一个input的索引 input[i].onclick=function(){ for(var j=0;j<div.length;j++){ //所有的div为隐藏 div[j].style

小程序切换轮播图显示空白的问题

技术栈,taro编译的小程序,场景: 首页几个tab切换,默认第一个tab轮播图有数据,切换的时候后面的轮播图有的时候显示空白,请看: 首先父组件到子组件的值传过来了,自组件img src路径也有值,复制出来地址浏览器,显示没问题,路径问题排除 第一个tab三张轮播图,第二个两张轮播图,其他的tab都是一张,每个tab都从 数组形式传值过来的.有数据这是怎么回事,于是翻翻小郑许官网看到这 https://developers.weixin.qq.com/miniprogram/dev/compo

JS+css3焦点轮播图PC端

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>js原生web轮播图</title> 6 <style> 7 *{ 8 margin:0; 9 padding:0; 10 list-style: none; 11 -moz-user-select: none;/*文字不可选

第124天:移动web端-Bootstrap轮播图插件使用

Bootstrap JS插件使用 > 对于Bootstrap的JS插件,我们只需要将文档实例中的代码粘到我们自己的代码中> 然后作出相应的样式调整 Bootstrap中轮播图插件叫作Carousel 一.基本的轮播图实现 HTML代码 1 <!-- 2 以下容器就是整个轮播图组件的整体, 3 注意该盒子必须加上 class="carousel slide" data-ride="carousel" 表示当前是一个轮播图 4 bootstrap.js

原生js实现移动端Touch轮播图的方法步骤

Touch 轮播图 touch轮播图其实就是通过手指的滑动,来左右切换轮播图,下面我们通过一个案例,来实现下. 1. html 结构 结构上,还是用ul.li来存放轮播图片,ol.li来存放轮播小圆点: 2. 样式初始化 html的一些标签,都会有一些默认样式,比如body标签默认是有一个边距的,为了不影响美观,我们需要清除掉. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* 清除标签默认边距 */ body,ul,li,ol,im

JavaScript实战项目:移动端 Touch 轮播图

Touch 轮播图 touch轮播图其实就是通过手指的滑动,来左右切换轮播图,下面我们通过一个案例,来实现下. 1. html 结构 结构上,还是用ul.li来存放轮播图片,ol.li来存放轮播小圆点: 2. 样式初始化 html的一些标签,都会有一些默认样式,比如body标签默认是有一个边距的,为了不影响美观,我们需要清除掉. /* 清除标签默认边距 */ body,ul,li,ol,img { margin: 0; padding: 0; } /* 清除 ul 等标签前面的"小圆点"

告别组件之教你使用原生js和css写移动端轮播图

在工作中由于项目需要要写一个轮播图,本想使用组件直接调用实现快速开发,但是一想到自己经常使用组件但是让自己手写的话确实一点都不会. 一个不会手写组件的前端程序员不是一个好程序员!于是打算自己手写一个. 老规矩,首先看一下最终效果,这个最终可以实现定时自动播放,触摸滑动,手动修改下面横条效果等功能. 项目中使用到的HTML代码如下 <div class="banner"> <ul class="clearfix"> <li><

学习笔记: js插件 —— SuperSlide 2 (轮播图插件,PC用)

SuperSlide 2  轮播图插件,较老.但还好用. 适用于PC,是绑定到jquery上的方法: $.slide(); 如果在实际中找不到.slide方法,请检查jquery等.js文件的引入次序.(另外切忌不要引入两次jquery.js,会把$的方法洗掉而导致失效的) http://www.superslide2.com/ 官网 http://www.superslide2.com/SuperSlide.2.1.2/jquery.SuperSlide.2.1.2.js jquery.Sup