原生javascript实现图片按钮切换

先给大家看下效果展示图

以下为详细代码:

复制代码 代码如下:

function LGY_picSwitch(option){
    this.oWrap = this.getId(option.wrapID); //最外层元素
    this.olistWrap = this.getNodeByClassname(this.oWrap,'gy_picSwitch_listWrap')[0];
    this.oUl = this.olistWrap.getElementsByTagName('ul')[0];
    this.oBtnPrev = this.getNodeByClassname(this.oWrap,'gy_picSwitch_prev')[0];
    this.oBtnNext = this.getNodeByClassname(this.oWrap,'gy_picSwitch_next')[0];
    this.nLen = this.oUl.getElementsByTagName('li').length; //图片总数
    this.nScollCount = option.scrollCount; //每次滚动的数量
    this.nScollLen = Math.ceil(this.nLen/option.scrollCount); // 切换判断的最大值
    this.nSwitchWidth = 0; //每次切换移动的距离,在代码里面动态获取值
    this.nIndex = 0; //切换图片的当前索引
    this.timer = null; //切换图片的引值
    this.int();
}
LGY_picSwitch.prototype = {
    getId:function(id){
        return document.getElementById(id);
    },
    getNodeByClassname:function(parent,classname){
        var classElements = new Array();
        var els = parent.getElementsByTagName('*');
        var elsLen = els.length;
        var pattern = new RegExp("(^|\\s)"+classname+"(\\s|$)");
        for (i = 0, j = 0; i < elsLen; i++) {
                if ( pattern.test(els[i].className) ) {
                        classElements[j] = els[i];
                        j++;
                }
        }
        return classElements;
    },
    getCss:function(node,value)
    {
        return node.currentStyle?node.currentStyle[value]:getComputedStyle(node,null)[value];
    },
    setCss:function(node,val){
        for(var v in val){
            node.style.cssText += ';'+ v +':'+val[v];
        }
    },
    moveFn:function(node,value,targetValue,callback){
        var _that = this;
        clearInterval(this.timer);
        this.timer = setInterval(function()
        {
            var val = parseFloat(_that.getCss(node,value));
            var speed = ( targetValue- val )/8;
            speed = speed>0?Math.ceil(speed):Math.floor(speed);
            if(speed ==0)
            {
                clearInterval(_that.timer);
                callback&&callback();
            }
            else
            {                   
                node.style[value] = ( val + speed ) +'px';                   
            }
           
        },20);
    },
    picChange:function(){
        this.moveFn(this.oUl,'marginLeft',-this.nIndex*this.nSwitchWidth);
    },
    cancelBubble:function(e){
        e.stopPropagation?e.stopPropagation():e.cancelBubble = true;
    },
    btnIsShow:function(){
        this.setCss(this.oBtnNext,{'display':'block'});
        this.setCss(this.oBtnPrev,{'display':'block'});
        if( this.nIndex == 0 ) this.setCss(this.oBtnPrev,{'display':'none'});
        if( this.nIndex ==(this.nScollLen-1) ) this.setCss(this.oBtnNext,{'display':'none'});
    },
    btnPrev:function(){
        var _that = this;
        this.oBtnPrev.onclick = function(e){
            var e = e || window.event;
            _that.cancelBubble(e);
            if(_that.nIndex != 0 ) {
                _that.nIndex--;
                _that.picChange();
                _that.btnIsShow();
            }
        }
    },
    btnNext:function(){
        var _that = this;
        this.oBtnNext.onclick = function(e){
            var e = e || window.event;
            _that.cancelBubble(e);
            if(_that.nIndex != (_that.nScollLen-1) ) {
                _that.nIndex++;
                _that.picChange();
                _that.btnIsShow();
            }
        }
    },
    int:function(){
        //动态获取移动的宽度
        var oLi = this.oUl.getElementsByTagName('li')[0],
            oLi_w = oLi.offsetWidth + parseInt(this.getCss(oLi,'marginLeft')) + parseInt(this.getCss(oLi,'marginRight'));
        this.nSwitchWidth = oLi_w*this.nScollCount;
        //按钮显示初始化
        this.btnIsShow();
        //左右切换
        this.btnPrev();
        this.btnNext();
    }
}

HTML代码:

复制代码 代码如下:

/*
* HTML结构必需是以下:外层ID名,自己传入 如下面的:id="gy_picSwitch02" ,ID名,自己随便给
但,里面的结构必需一样,包括类名classname
<div id="gy_picSwitch02">
    <span class="gy_picSwitch_prev"></span>
    <span class="gy_picSwitch_next"></span>
    <div class="gy_picSwitch_listWrap">
        <ul>
            <li><img src="images/pic01.jpg" alt=""></li>
            <li><img src="images/pic02.jpg" alt=""></li>
            <li><img src="images/pic03.jpg" alt=""></li>
            <li><img src="images/pic04.jpg" alt=""></li>
            <li><img src="images/pic05.jpg" alt=""></li>
            <li><img src="images/pic06.jpg" alt=""></li>
            <li><img src="images/pic07.jpg" alt=""></li>
            <li><img src="images/pic08.jpg" alt=""></li>
        </ul>
    </div>
</div>

参数:'wrapID':'xxxx',最外层的ID名
      'scrollCount':5,滚动的数量

复制代码 代码如下:

*
*/
//实例化
 new LGY_picSwitch({'wrapID':'gy_picSwitch','scrollCount':5});

是不是很方便的功能呢,使用也很简单,这里推荐给小伙伴,希望对大家能有所帮助

时间: 2015-01-11

JS控制按钮自动切换背景颜色(可暂停)

JS控制按钮自动切换背景颜色,可暂停_我们 .grigg{ position:relative; font-family:Verdana; font-size:16px;color:#ffffff; } y=" "; function colourWrite(){ y=document.bgColor; if (document.layers) {x=document.FM.box.value} if (document.all) {x=document.all.kurt.innerH

js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码

今天来分享一下鼠标点击按钮,图片进行切换+图片自动切换+点击左右按钮图片进行切换的三种效果的组合代码. 最后的效果如下: Html代码部分: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <met

javascript点击按钮实现隐藏显示切换效果

本文实例分享了点击按钮实现隐藏和显示的切换代码,供大家参考,具体内容如下 效果图: 在不少应用中,都有这样的功能,点击同一个按钮可以实现一个元素的显示和隐藏的切换,下面就通过代码实例介绍一下如何实现此效果,代码如下: <html> <head> <meta charset="gb2312"> <title>隐藏和显示</title> <style type="text/css"> #thediv

JavaScript实现点击按钮切换网页背景色的方法

本文实例讲述了JavaScript实现点击按钮切换网页背景色的方法.分享给大家供大家参考,具体如下: 这里演示JavaScript用按钮随意变换背景颜色,每点击一下按钮,就可以随机改变一种网页背景颜色.颜色值事先是保存在JS的数组里,你在代码里会发现他们,若不想要某个颜色,就替换掉即可. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-btn-click-rand-bgcolor-codes/ 具体代码如下: <!DOCTYPE HTML

JS实现按钮颜色切换效果

本文实例为大家分享了使用参数函数实现按钮颜色切换的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button id="btn1" onclick=&qu

使用AngularJS2中的指令实现按钮的切换效果

之前在AngularJS2中一种button切换效果的实现(二)中实现了按钮的切换效果,但是方法比较low,这次我们使用Angular2的指令来实现. 指令实现hover效果 import { Directive, ElementRef, HostListener, Input } from '@angular/core'; @Directive({ selector: '[myHighlight]' }) export class HighlightDirective { constructo

利用JS实现点击按钮后图片自动切换的简单方法

我么常常看到一个网站的主界面的图片可以切换自如,那么又是如何实现的呢? 1.HTML页面布局如图所示: Main(div) top(div)(显示需要显示的图片) bottom UL (li)<选择>left center right 2.实现上述布局 swap.html <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Strict//EN' 'http://www.w3.org/TR/html4/strict.dtd'> <html

JS实现点击按钮后框架内载入不同网页的方法

本文实例讲述了JS实现点击按钮后框架内载入不同网页的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"&g

js实现点击按钮后给Div图层设置随机背景颜色的方法

本文实例讲述了js实现点击按钮后给Div图层设置随机背景颜色的方法.分享给大家供大家参考.具体如下: 给myDiv设置随机背景颜色,用随机颜色代码赋值给DIV的背景颜色 <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"/> <title>js设置随机颜色 <

js实现点击链接后窗口缩小并居中的方法

本文实例讲述了js实现点击链接后窗口缩小并居中的方法.分享给大家供大家参考.具体分析如下: 这是一个简单的JS特效,以前没有见到过,就是当点击页面上指定文字链接的时候,页面窗口缩小,并居中显示,然后在居中的窗口中显示链接内容,但愿这些网页特效能在日后派上用场 复制代码 代码如下: <HTML><HEAD> <TITLE>窗口的缩小居中</TITLE> <META http-equiv=Content-Type content="text/ht

JS+CSS实现淡入式焦点图片幻灯切换效果的方法

本文实例讲述了JS+CSS实现淡入式焦点图片幻灯切换效果的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999

JS实现点击按钮控制Div变宽、增高及调整背景色的方法

本文实例讲述了JS实现点击按钮控制Div变宽.增高及调整背景色的方法.分享给大家供大家参考.具体如下: 这里使用JavaScript实现点击按钮后改变DiV的高度.宽度和背景色等,点击对应按钮,Div调整高度.调整宽度.调整背景色等.实现方面主要是使用JS来控制点击按钮后改变CSS样式文件,这一切都是在JS的动态控制下,比如无刷新切换网页风格的实现,可以以此为基础来扩展. 运行效果如下图所示: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

Android中AlertDialog 点击按钮后不关闭对话框的功能

这里的问题:当我点击确定按钮,也就是 AlertDialog 里的 PositiveButton 的时候,我们需要判断用户是输入是否符合我们的预期,如果不符合通常提示用户重写输入,且不关闭当前的对话框,但上图中点击按钮后会自动的关闭窗口. 先看原来的这个是怎么写的: private void openDialog() { LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.l

点击按钮后 文本框变为Select下拉列表框

点击按钮后,文本框变为Select下拉列表框 function showSelect(){ var _t = document.getElementById('t'); var _s = document.getElementById('sel'); if( _t.style.display == ''){ _t.style.display = 'none'; } else{ _t.style.display = ''; } if ( _s.style.display == 'none' ){

JavaScript点击按钮后弹出透明浮动层的方法

本文实例讲述了JavaScript点击按钮后弹出透明浮动层的方法.分享给大家供大家参考.具体分析如下: 这里实现点击后页面变灰色,并用JS弹出一个居中的浮动层提示窗口,这个窗口是透明的,可以设置透明度,网上已经有很多类似的JavaScript代码,你可以借鉴一下. <HTML> <HEAD> <TITLE>浮动层居中的对话框效果演示</TITLE> <META http-equiv=Content-Type content="text/htm