基於jQuery的控制左右滾動效果_自動滾動

[html] 
<!DOCTYPE HTML> 
<html> 
<head> 
<title>基於jQuery的控制左右滾動效果_自動滾動版本</title> 
<script src="http://jt.875.cn/js/jquery.js"></script> 
<style> 
 
body{font-size:0.8em;letter-spacing:1px;font-family:"微軟雅黑"; line-height:1.8em} 
p,ul,li,ol,img{margin:0;padding:0} 
h1{font-size:1em; font-weight:normal;} 
h1 a{background:#CFF; padding:2px 3px; text-decoration:none;} 
h1 a:hover{background:#eee; text-decoration:underline} 
h2,h3{font-size:1em; font-weight:normal; color:#a40000; margin:1em auto; position:relative} 
h3{color:#888; font-weight:bold} 
ul,li,ol{list-style:none} 
 
.ibox{width:850px; height:210px; background:#ddd; margin:1em auto; border:1em solid #ddd; position:relative; overflow:hidden} 
.showbox{position:absolute;left:0;width:2550px; height:170px; background:#fff} 
.showbox ul li{float:left;margin:7px} 
.showbox ul li img{width:150px; height:150px; border:3px solid #a40000} 
.ibox span{position:absolute;padding:2px 5px; background:#fff; cursor:pointer;} 
.ibox span.pre{left:10px; bottom:0} 
.ibox span.next{right:10px; bottom:0} 
.ibox span.num{right:45%; bottom:0; background:#ddd;line-height:18px;} 
.ibox span.num li{display:inline;margin:0 5px; padding:1px 5px; line-height:18px} 
.ibox span.num .numcur{background:#a40000; color:#fff} 
</style> 
<script> 
$(function(){ 
    //變量 
    var $cur = 1;//初始化顯示的版面 
    var $i = 5;//每版顯示數 
    var $len = $('.showbox>ul>li').length;//計算列表總長度(個數) 
    var $pages = Math.ceil($len / $i);//計算展示版面數量 
    var $w = $('.ibox').width();//取得展示區外圍寬度 
    var $showbox = $('.showbox'); 
    var $num = $('span.num li') 
    var $pre = $('span.pre') 
    var $next = $('span.next'); 
    var $autoFun; 
    //調用自動滾動 
    autoSlide(); 
    //向前滾動 
    $pre.click(function(){ 
        if (!$showbox.is(':animated')) {  //判斷展示區是否動畫 
            if ($cur == 1) {   //在第一個版面時,再向前滾動到最後一個版面 
                $showbox.animate({ 
                    left: '-=' + $w * ($pages – 1) 
                }, 500); //改變left值,切換顯示版面,500(ms)為滾動時間,下同 
                $cur = $pages; //初始化版面為最後一個版面 
            } 
            else { 
                $showbox.animate({ 
                    left: '+=' + $w 
                }, 500); //改變left值,切換顯示版面 
                $cur–; //版面累減 
            } 
            $num.eq($cur – 1).addClass('numcur').siblings().removeClass('numcur'); //為對應的版面數字加上高亮樣式,並移除同級元素的高亮樣式 
        } 
    }); 
    //向後滾動 
    $next.click(function(){ 
        if (!$showbox.is(':animated')) { //判斷展示區是否動畫 
            if ($cur == $pages) {  //在最後一個版面時,再向後滾動到第一個版面 
                $showbox.animate({ 
                    left: 0 
                }, 1000); //改變left值,切換顯示版面,500(ms)為滾動時間,下同 
                $cur = 1; //初始化版面為第一個版面 
            } 
            else { 
                $showbox.animate({ 
                    left: '-=' + $w 
                }, 1000);//改變left值,切換顯示版面 
                $cur++; //版面數累加 
            } 
            $num.eq($cur – 1).addClass('numcur').siblings().removeClass('numcur'); //為對應的版面數字加上高亮樣式,並移除同級元素的高亮樣式 
        } 
    }); 
    //數字點擊事件 
    $num.click(function(){ 
        if (!$showbox.is(':animated')) { //判斷展示區是否動畫 
            var $index = $num.index(this); //索引出當前點擊在列表中的位置值 
            $showbox.animate({ 
                left: '-' + ($w * $index) 
            }, 1000); //改變left值,切換顯示版面,500(ms)為滾動時間 
            $cur = $index + 1; //初始化版面值,這一句可避免當滾動到第三版時,點擊向後按鈕,出面空白版.index()取值是從0開始的,故加1 
            $(this).addClass('numcur').siblings().removeClass('numcur'); //為當前點擊加上高亮樣式,並移除同級元素的高亮樣式 
        } 
    }); 
    //停止滾動 
    clearFun($showbox); 
    clearFun($pre); 
    clearFun($next); 
    clearFun($num); 
    //事件劃入時停止自動滾動 
    function clearFun(elem){ 
        elem.hover(function(){ 
            clearAuto(); 
        }, function(){ 
            autoSlide(); 
        }); 
    } 
    //自動滾動 
    function autoSlide(){ 
        $next.trigger('click'); 
        $autoFun = setTimeout(autoSlide, 3000);//此處不可使用setInterval,setInterval是重復執行傳入函數,這會引起第二次劃入時停止失效 
    } 
     
    //清除自動滾動 
    function clearAuto(){ 
        clearTimeout($autoFun); 
    } 
}); 
</script> 
</head> 
 
 
<body> 
<p class="ibox"> 
    <p class="showbox"> 
        <ul> 
            <li><img src=/wp-content/images1/20181101/2013053009250936273.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250995174.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250937575.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li> 
             
             
            <li><img src=/wp-content/images1/20181101/2013053009250936273.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250995174.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250937575.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li> 
             
            <li><img src=/wp-content/images1/20181101/2013053009250936273.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250995174.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250937575.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li> 
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li> 
             
             
        </ul> 
    </p> 
        <span class="pre">«向左滾動</span> 
    <span class="next">向右滾動»</span> 
    <span class="num"> 
        <ol> 
            <li class="numcur">1</li> 
            <li>2</li> 
            <li>3</li> 
        </ol> 
    </span> 
</p> 
</body> 
</html> 

<!DOCTYPE HTML>
<html>
<head>
<title>基於jQuery的控制左右滾動效果_自動滾動版本</title>
<script src="http://jt.875.cn/js/jquery.js"></script>
<style>

body{font-size:0.8em;letter-spacing:1px;font-family:"微軟雅黑"; line-height:1.8em}
p,ul,li,ol,img{margin:0;padding:0}
h1{font-size:1em; font-weight:normal;}
h1 a{background:#CFF; padding:2px 3px; text-decoration:none;}
h1 a:hover{background:#eee; text-decoration:underline}
h2,h3{font-size:1em; font-weight:normal; color:#a40000; margin:1em auto; position:relative}
h3{color:#888; font-weight:bold}
ul,li,ol{list-style:none}

.ibox{width:850px; height:210px; background:#ddd; margin:1em auto; border:1em solid #ddd; position:relative; overflow:hidden}
.showbox{position:absolute;left:0;width:2550px; height:170px; background:#fff}
.showbox ul li{float:left;margin:7px}
.showbox ul li img{width:150px; height:150px; border:3px solid #a40000}
.ibox span{position:absolute;padding:2px 5px; background:#fff; cursor:pointer;}
.ibox span.pre{left:10px; bottom:0}
.ibox span.next{right:10px; bottom:0}
.ibox span.num{right:45%; bottom:0; background:#ddd;line-height:18px;}
.ibox span.num li{display:inline;margin:0 5px; padding:1px 5px; line-height:18px}
.ibox span.num .numcur{background:#a40000; color:#fff}
</style>
<script>
$(function(){
    //變量
    var $cur = 1;//初始化顯示的版面
    var $i = 5;//每版顯示數
    var $len = $('.showbox>ul>li').length;//計算列表總長度(個數)
    var $pages = Math.ceil($len / $i);//計算展示版面數量
    var $w = $('.ibox').width();//取得展示區外圍寬度
    var $showbox = $('.showbox');
    var $num = $('span.num li')
    var $pre = $('span.pre')
    var $next = $('span.next');
    var $autoFun;
    //調用自動滾動
    autoSlide();
    //向前滾動
    $pre.click(function(){
        if (!$showbox.is(':animated')) {  //判斷展示區是否動畫
            if ($cur == 1) {   //在第一個版面時,再向前滾動到最後一個版面
                $showbox.animate({
                    left: '-=' + $w * ($pages – 1)
                }, 500); //改變left值,切換顯示版面,500(ms)為滾動時間,下同
                $cur = $pages; //初始化版面為最後一個版面
            }
            else {
                $showbox.animate({
                    left: '+=' + $w
                }, 500); //改變left值,切換顯示版面
                $cur–; //版面累減
            }
            $num.eq($cur – 1).addClass('numcur').siblings().removeClass('numcur'); //為對應的版面數字加上高亮樣式,並移除同級元素的高亮樣式
        }
    });
    //向後滾動
    $next.click(function(){
        if (!$showbox.is(':animated')) { //判斷展示區是否動畫
            if ($cur == $pages) {  //在最後一個版面時,再向後滾動到第一個版面
                $showbox.animate({
                    left: 0
                }, 1000); //改變left值,切換顯示版面,500(ms)為滾動時間,下同
                $cur = 1; //初始化版面為第一個版面
            }
            else {
                $showbox.animate({
                    left: '-=' + $w
                }, 1000);//改變left值,切換顯示版面
                $cur++; //版面數累加
            }
            $num.eq($cur – 1).addClass('numcur').siblings().removeClass('numcur'); //為對應的版面數字加上高亮樣式,並移除同級元素的高亮樣式
        }
    });
    //數字點擊事件
    $num.click(function(){
        if (!$showbox.is(':animated')) { //判斷展示區是否動畫
            var $index = $num.index(this); //索引出當前點擊在列表中的位置值
            $showbox.animate({
                left: '-' + ($w * $index)
            }, 1000); //改變left值,切換顯示版面,500(ms)為滾動時間
            $cur = $index + 1; //初始化版面值,這一句可避免當滾動到第三版時,點擊向後按鈕,出面空白版.index()取值是從0開始的,故加1
            $(this).addClass('numcur').siblings().removeClass('numcur'); //為當前點擊加上高亮樣式,並移除同級元素的高亮樣式
        }
    });
    //停止滾動
    clearFun($showbox);
    clearFun($pre);
    clearFun($next);
    clearFun($num);
    //事件劃入時停止自動滾動
    function clearFun(elem){
        elem.hover(function(){
            clearAuto();
        }, function(){
            autoSlide();
        });
    }
    //自動滾動
    function autoSlide(){
        $next.trigger('click');
        $autoFun = setTimeout(autoSlide, 3000);//此處不可使用setInterval,setInterval是重復執行傳入函數,這會引起第二次劃入時停止失效
    }
 
    //清除自動滾動
    function clearAuto(){
        clearTimeout($autoFun);
    }
});
</script>
</head>

<body>
<p class="ibox">
    <p class="showbox">
        <ul>
            <li><img src=/wp-content/images1/20181101/2013053009250936273.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250995174.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250937575.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li>
   <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li>
   
   
            <li><img src=/wp-content/images1/20181101/2013053009250936273.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250995174.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250937575.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li>
   <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li>
   
   <li><img src=/wp-content/images1/20181101/2013053009250936273.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250995174.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250937575.jpg" alt="生意街" title="生意街" /></li>
            <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li>
   <li><img src=/wp-content/images1/20181101/2013053009250920676.jpg" alt="生意街" title="生意街" /></li>
   
   
        </ul>
    </p>
        <span class="pre">«向左滾動</span>
    <span class="next">向右滾動»</span>
    <span class="num">
        <ol>
            <li class="numcur">1</li>
            <li>2</li>
            <li>3</li>
        </ol>
    </span>
</p>
</body>
</html>

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *