幻灯片

作者: 秋殇灬 | 来源:发表于2018-07-31 16:22 被阅读0次

使用的时候先用Jquery在引它

mousewheel(function(event,data)) 向下是-1 向上+1

(window).height() 获取可视区

null 空

setTimeout 定时器

clearTimeout() 清理定时器 做到函数节流

轮播图(PPT)

首尾连续滑动(需要用js)

li都是通过绝对定位的

用索引判断大小

除了第一个li都定位到右侧

动态创建小圆点(用代码动态生成)each循环

左右按钮是两个div 一个自增一个自减

幻灯片布局

 <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>

幻灯片

$(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;
}
})

相关文章

网友评论

      本文标题:幻灯片

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