幻灯片

作者: Khada | 来源:发表于2018-07-30 09:11 被阅读0次

幻灯片

$(function(){
var $li = $(".slide_pics li");
var len = $li.length;//一共有几张图片
var $prev = $('.prev');
var $next = $('.next');
var nextli = 0;//将要运动过来的li
var nowli = 0;//当前要离开的li
var timer = null;//定时器

//除第一个li,都定位到右侧
$li.not(':first').css({left:1156});

//动态创建小圆点
$li.each(function(index){
    //创建li
    var $sli = $('<li></li>');
    //第一个li添加选中样式
    if(index == 0){
        $sli.addClass('active');
    }
    //将li添加到ul中
    $sli.appendTo('.points');
})

$points = $('.points li');
// alert($points.length);

$points.click(function() {
    nextli = $(this).index();//点击的小圆点的索引,就是马上要进来那张的索引
    //当点击当前张的小圆点时,不做任何操作
    if(nextli == nowli){
        return;
    }
    move();
    $(this).addClass('active').siblings().removeClass('active');
});

$prev.click(function() {
    nextli--;
    move();
    //改变圆点样式
    $points.eq(nextli).addClass('active').siblings().removeClass('active');
});

$next.click(function() {
    nextli++;
    move();
    //改变圆点样式
    $points.eq(nextli).addClass('active').siblings().removeClass('active');
});

//进入子元素也清除定时器
$('.slide').mouseenter(function() {
    clearInterval(timer);
});
$('.slide').mouseleave(function() {
    timer = setInterval(autoplay, 3000);
});

//定时器循环自动播放
timer = setInterval(autoplay, 3000);

//自动播放的逻辑跟点击下一张是相同的
function autoplay(){
    nextli++;
    move();
    //改变圆点样式
    $points.eq(nextli).addClass('active').siblings().removeClass('active');
}

function move(){
    //走到第一张,再继续走时
    if(nextli < 0){
        nextli = len - 1;//将要来的是最后一张
        nowli = 0;//要离开的是第一张
        $li.eq(nextli).css({left:-1156});//把最后一张定位到左侧,准备进入
        $li.eq(nowli).stop().animate({left:1156});//离开的第一张走到右侧
        $li.eq(nextli).stop().animate({left:0});//进入的最后一张走进来
        nowli = nextli;//要离开的赋值为刚进入的最后一张
        return;//下边代码是正常情况的,极端情况下不执行,直接返回
    }

    //走到最后一张,再继续走时
    if(nextli > len - 1){
        nextli = 0;//将要来的是第一张
        nowli = len - 1;//要离开的是最后一张
        $li.eq(nextli).css({left:1156});//将要进来的第一张定位到右侧,准备进入
        $li.eq(nowli).stop().animate({left:-1156});//离开的最后一张走到左侧
        $li.eq(nextli).stop().animate({left:0});//进入的第一张走进来
        nowli = nextli;//要离开的赋值为刚进入的第一张
        return;
    }

    if(nextli > nowli){//从右向左进入,例如第2张进入,第1张出去
        $li.eq(nextli).css({left:1156});//把马上要进来的那张,瞬间放在右侧
        $li.eq(nowli).stop().animate({left:-1156});//当前这张要离开,运动到左侧
    }else{
        $li.eq(nextli).css({left:-1156});//把马上要进来的那张,瞬间放在左侧
        $li.eq(nowli).stop().animate({left:1156});//当前这张要离开,运动到右侧
    }
    $li.eq(nextli).stop().animate({left:0});//马上进来的这张走到可视区(即0的位置)
    nowli = nextli;
}
})

幻灯片布局

  <div class="bg3">
        <div class="slide fl">
            <ul class="slide_pics">
                <li><a href="#"><img src="image/main1.jpg" alt="幻灯片"/></a></li>
                <li><a href="#"><img src="image/main2.jpg" alt="幻灯片"/></a></li>
                <li><a href="#"><img src="image/main3.jpg" alt="幻灯片"/></a></li>
                <li><a href="#"><img src="image/main4_1.jpg" alt="幻灯片"/></a></li>
                <li><a href="#"><img src="image/main5.jpg" alt="幻灯片"/></a></li>
                <li><a href="#"><img src="image/main6.jpg" alt="幻灯片"/></a></li>
                <li><a href="#"><img src="image/main7.jpg" alt="幻灯片"/></a></li>
                <li><a href="#"><img src="image/main8.jpg" alt="幻灯片"/></a></li>
            </ul>
        <div class="prev"></div>
        <div class="next"></div>

相关文章

网友评论

      本文标题:幻灯片

      本文链接:https://www.haomeiwen.com/subject/ieexvftx.html