Js或jQuery图片层叠轮播------Sestid

目录

原生Js3张图片层叠轮播:

html:

CSS:

JavaScript:

jQuery6张图片层叠轮播:

html:

css:

javaScript:

详细解析:


原生Js3张图片层叠轮播:

 

html:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>wtf</title>
</head>
<body>
 <div class="container">
     <div class="box">
         <img class="front" src="img/A.jpg" alt="PIC">
         <img class="back" src="img/B.jpg" alt="PIC">
         <img class="active" src="img/C.jpg" alt="PIC">
         <div class="btns">
             <span class="btn"><</span>
             <span class="btn">></span>
         </div>
     </div>
 </div>
 
</body>
</html>

CSS:

<style>
    .box {
        width: 1200px; 
        height: 300px; 
        transform-style: 
        perserve-3d;
        margin: 50px auto;                 
        position: relative;
    }
    .box img {
        width:600px; 
        position: absolute; 
        top: 60px; 
        transition:all .3s linear;
    }
    .box:hover .btn {
        opacity: 1;
    }
    .front {
        left: 0px;
    }
    .back {
        left: 600px;
    } 
    .active {
        left: 300px; 
        transform: scale(1.5); 
        z-index: 10;
    }
    .btns .btn {
        width: 60px; 
        height: 60px; 
        display: block; 
        position: absolute; 
        background-color: rgba(0,0,0,.5);    
        font-size: 50px; 
        font-family: "微软雅黑"; 
        color:rgba(255,255,255,.5); 
        line-height: 55px; 
        text-align: center;     
        cursor: pointer; 
        z-index: 100; 
        opacity: 0; 
        transition:opacity .3s linear;
    } 
    .btns .btn:first-child {top: 125px;}
    .btns .btn:last-child {top: 125px; right: 0px;}
</style>

JavaScript:

<script>
onload = function(){
var btns = document.getElementsByClassName('btn'),
 imgs = document.getElementsByClassName('box')[0].getElementsByTagName('img');
 
var index = 2,
 front = 0,
 back = 0,
 offset = false,
 timer = setInterval(timer,5000);
  
 
 
for(var i=0;i<btns.length;i++){
(function(i){
 btns[i].onclick = function(){click(i)};
})(i);
 
btns[i].onmouseover = function(){
 offset = true;
}
btns[i].onmouseout = function(){
 offset = false;
}
}
 
for(var i=0;i<imgs.length;i++){
imgs[i].onmouseover = function(){
 offset = true;
}
imgs[i].onmouseout = function(){
 offset = false;
}
}
 
function timer(){
console.log(offset)
if(offset){
 return;
}
else{
 click(1)
}
}
 
function click(x){
imgs[index].setAttribute('class','');
if(x === 0){
 if(--index < 0){
 index = --imgs.length;
 }
 front = back = index;
 if(++front > --imgs.length){front = 0}
 if(--back < 0){back = --imgs.length}
 imgs[front].style.zIndex = '1';
 imgs[back].style.zIndex = '0';
}
else{ 
 if(++index > --imgs.length){
 index = 0; 
 }
 front = back = index;
 if(++front > --imgs.length){front = 0}
 if(--back < 0){back = --imgs.length}
 imgs[front].style.zIndex = '0';
 imgs[back].style.zIndex = '1';
}
imgs[index].style.zIndex = '10';
imgs[front].setAttribute('class','front')
imgs[back].setAttribute('class','back') 
imgs[index].setAttribute('class','active');
}
}
</script>

这个原生js的就不详细解释了,下边用jQuery的有详细解释,其实不用解释正常有点实力的前端开发人员都能看懂

 

jQuery6张图片层叠轮播:

html:

<div class="img">
    <div class="whole">
        <div class="roll-img">
            <span class="last"><</span>
            <ul id="ul">
                <li class="left"><img src="img/1.jpg" alt=""><div></div></li>
                <li class="center"><img src="img/2.jpg" alt=""><div></div></li>
                <li class="right"><img src="img/3.jpg" alt=""><div></div></li>
                <li class="after1"><img src="img/4.jpg" alt=""><div></div></li>
                <li class="after2"><img src="img/5.jpg" alt=""><div></div></li>
                <li class="after3"><img src="img/6.jpg" alt=""><div></div></li>
            </ul>
            <span class="next">></span>
        </div>
    </div>
    <div class="list">
        <span class="btn"></span>
        <span class="btn" style="background: red;"></span>
        <span class="btn"></span>
        <span class="btn"></span>
        <span class="btn"></span>
        <span class="btn"></span>
    </div>
</div>

css:

*{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .img{
            width: 100%;
            height: 300px;
            margin-top: 100px;
        }
        .whole{
            width: 50%;
            height: 100%;
            margin: 0 auto;
        }
        .roll-img{
            width: 100%;
            height: 100%;
            position: relative;
            transform-style: preserve-3d;
        }
        .roll-img ul li{
            position: absolute;
            width: 100%;
            height: 100%;
            cursor: pointer;
        }
        img{
            width: 100%;
            height: 100%;
        }
        .left{
            left:-300px;
            transform: scale(0.8);
            z-index: 4;
            background: rgb(0,0,0);
            transition: all 0.5s ease;
        }
        .center{
            z-index: 6;
            left: 0;
            top: 0;
            bottom: 10%;
            transition: all 0.5s ease;
        }
        .right{
            left:300px;
            transform: scale(0.8);
            z-index: 4;
            background: rgb(0,0,0);
            transition: all 0.5s ease;
        }
        .left div,.right div{
            z-index: 5;
            width: 100%;
            height: 100%;
            background: rgba(0,0,0,0.5);
            position: absolute;
            left: 0;
            top: 0;
            transition: all 0.3s ease;
        }
        .after1,.after2,.after3{
            z-index: 3;
            left: 0;
            top: 0;
            visibility: hidden;
            transform: scale(0);
        }
        .last,.next{
            position: absolute;
            z-index: 10;
            width: 50px;
            height: 50px;
            border: 5px solid rgba(255,255,255,0.7);
            border-radius: 50px;
            font-size: 50px;
            font-weight: bold;
            text-align: center;
            line-height: 45px;
            cursor: pointer;
            top:40%;
            color: rgba(255,255,255,0.6);
            display: none;
        }
        .list{
            width: 30%;
            height: 5px;
            display: flex;
            margin: 0 auto;
            margin-top: 20px;
        }
        .btn{
            transition: all 0.3s ease;
            flex: 1;
            background: rgb(244,244,244);
        }
        .btn:not(:first-child){
            margin-left: 20px;
        }
        .last{
            left:-230px;
        }
        .next{
            right: -230px;
        }

javaScript:

let classes = ['left','center','right','after1','after2','after3'];
let timer=setInterval(function(){
    before();
},5000);
function before(){
    for(let i=0;i<classes.length;i++){
        $('.btn:eq('+i+')').css("background","rgb(244,244,244)");
    }
    let last = classes.pop();
    classes.unshift(last);
    for(let i=0;i<classes.length;i++){
        $('#ul>li:eq('+i+')').attr("class",classes[i]);
    }
    for(let i=0;i<classes.length;i++){
        if($('#ul>li:eq('+i+')').attr("class")=='center'){
            $('.btn:eq('+i+')').css("background","red");
        }
    }
}
function after(){
    for(let i=0;i<classes.length;i++){
        $('.btn:eq('+i+')').css("background","rgb(244,244,244)");
    }
    let first = classes.shift();
    classes.push(first);
    for(let i=0;i<classes.length;i++){
        $('#ul>li:eq('+i+')').attr("class",classes[i]);
    }
    for(let i=0;i<classes.length;i++){
        if($('#ul>li:eq('+i+')').attr("class")=='center'){
            $('.btn:eq('+i+')').css("background","red");
        }
    }
}
for(let i=0;i<classes.length;i++){
    (function(i){
        $('#ul>li:eq('+i+')').click(function(){
            if($('#ul>li:eq('+i+')').attr("class")=="left"){
                after();
            }else if($('#ul>li:eq('+i+')').attr("class")=="right"){
                before();
            }else{
                return false;
            }
        });
        $('.btn:eq('+i+')').mouseover(function(){
            $('.btn:eq('+i+')').css("background","red");
            clearInterval(timer);
            while(classes[i]!='center'){
                before();
            }
        });
        $('.btn:eq('+i+')').mouseout(function(){
            $('.btn:eq('+i+')').css("background","rgb(244,244,244)");
            clearInterval(timer);
            timer=setInterval(function(){
                before();
            },5000);
        });
    })(i);
}

$('.last').click(function(){
    clearInterval(timer);
    before();
    timer=setInterval(function(){
        before();
    },5000);
});
$('.next').click(function(){
    clearInterval(timer);
    after();
    timer=setInterval(function(){
        before();
    },5000);
});
$('.img').mouseover(function(){
    $('.last,.next').css("display","block");
    clearInterval(timer);
});
$('.img').mouseout(function(){
    $('.last,.next').css("display","none");
    clearInterval(timer);
    timer=setInterval(function(){
        before();
    },5000);
});

详细解析:

置了两个按钮,一个.last,另一个.next,当我们按下它们图片就会左右滚动,实现它们很简单:

let classes = ['left','center','right','after1','after2','after3'];

先将轮播图中所有对象的类名都放在一个数组中,我放了六张图,所以有六个类名,现在试想一下,假如我点击next,那么第二张图就会跑到第一张图的位置上,同样第一张图会跑到最后一张图的位置上去,点击last刚好相反,最后一张图会跑到第一张图的位置上。

function before(){
    for(let i=0;i<classes.length;i++){
        $('.btn:eq('+i+')').css("background","rgb(244,244,244)");
    }
    let last = classes.pop();
    classes.unshift(last);
    for(let i=0;i<classes.length;i++){
        $('#ul>li:eq('+i+')').attr("class",classes[i]);
    }
    for(let i=0;i<classes.length;i++){
        if($('#ul>li:eq('+i+')').attr("class")=='center'){
            $('.btn:eq('+i+')').css("background","red");
        }
    }
}
function after(){
    for(let i=0;i<classes.length;i++){
        $('.btn:eq('+i+')').css("background","rgb(244,244,244)");
    }
    let first = classes.shift();
    classes.push(first);
    for(let i=0;i<classes.length;i++){
        $('#ul>li:eq('+i+')').attr("class",classes[i]);
    }
    for(let i=0;i<classes.length;i++){
        if($('#ul>li:eq('+i+')').attr("class")=='center'){
            $('.btn:eq('+i+')').css("background","red");
        }
    }
}

用pop()取出数组最后一个元素,再用unshift()把它放到数组前面,shift()取出数组开头元素,再用push()把它放到数组后面,就搞定了(其他代码先不做解释)

下面要做的就是定时器了,不用操作也能使图片自行滚动起来:

let timer=setInterval(function(){
    before();
},5000);
$('.last').click(function(){
    clearInterval(timer);
    before();
    timer=setInterval(function(){
        before();
    },5000);
});
$('.next').click(function(){
    clearInterval(timer);
    after();
    timer=setInterval(function(){
        before();
    },5000);
});

首先设置一个定时器timer,每隔五秒执行一次,当鼠标点击按钮时,停止计时器,在开启,使得计时重新开始,这样就消除了定时器冲突

但这样还是远远不够的,不光点按钮可以实现左右滚动,点左右两边的图片都是可以滚动的

for(let i=0;i<classes.length;i++){
    (function(i){
        $('#ul>li:eq('+i+')').click(function(){
            if($('#ul>li:eq('+i+')').attr("class")=="left"){
                after();
            }else if($('#ul>li:eq('+i+')').attr("class")=="right"){
                before();
            }else{
                return false;
            }
        });
        $('.btn:eq('+i+')').mouseover(function(){
            $('.btn:eq('+i+')').css("background","red");
            clearInterval(timer);
            while(classes[i]!='center'){
                before();
            }
        });
        $('.btn:eq('+i+')').mouseout(function(){
            $('.btn:eq('+i+')').css("background","rgb(244,244,244)");
            clearInterval(timer);
            timer=setInterval(function(){
                before();
            },5000);
        });
    })(i);
}

通过判断点击图片的class值来决定向左滚动还是向右滚动,点击正中间的图片无效

接下来当鼠标移入移出的时候,两个按钮.last和.next会再显示和不显示两个属性之间切换,当鼠标移入时,定时器停止,移出时又重新开始

$('.img').mouseover(function(){
    $('.last,.next').css("display","block");
    clearInterval(timer);
});
$('.img').mouseout(function(){
    $('.last,.next').css("display","none");
    clearInterval(timer);
    timer=setInterval(function(){
        before();
    },5000);
});

 

轮播图的下面有六个方块,哪个图片在正中间,哪个方块就是红色的,这个在上面几个js代码中已经写出来了

然后我们要使得鼠标放到哪个方块上,轮播图就跳到对应的图片,停止计时器,同时其他图片在数组中的位置也不会改变,鼠标移出方块之后启动计时器

 $('.btn:eq('+i+')').mouseover(function(){
            $('.btn:eq('+i+')').css("background","red");
            clearInterval(timer);
            while(classes[i]!='center'){
                before();
            }
        });
        $('.btn:eq('+i+')').mouseout(function(){
            $('.btn:eq('+i+')').css("background","rgb(244,244,244)");
            clearInterval(timer);
            timer=setInterval(function(){
                before();
            },5000);
        });

这里我用了while循环,如果我们放到的方块对应的图片不在中心,就开始循环调用before函数,直到图片的类名等于'center',也就是正中心的位置

这样我们就完成了层叠轮播图的所有基本功能,除了样式长得不太像网易云的之外,网易云轮播图该有的我们都有了。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对不起,我无法提供淘宝精品服饰案例的 jQuery 代码。但是,我可以为您提供一些关于如何使用 jQuery 开发淘宝精品服饰案例的一般指导。 首先,您需要引入 jQuery 库。您可以在 HTML 文件中使用以下代码来引入 jQuery: ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> ``` 接下来,您可以使用 jQuery 来处理页面中的元素,例如添加、删除、修改元素的内容和样式等。下面是一个简单的例子,展示了如何使用 jQuery 选择元素,并为其添加点击事件: ```html <!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <h1>淘宝精品服饰案例</h1> <div id="item1">精品T恤</div> <div id="item2">精品裤子</div> <script> $(document).ready(function() { // 选择元素并添加点击事件 $("#item1").click(function() { alert("您点击了精品T恤!"); }); $("#item2").click(function() { alert("您点击了精品裤子!"); }); }); </script> </body> </html> ``` 在上面的例子中,我们使用 `$` 符号来表示 jQuery 对象,然后通过选择器选择元素(使用 `#` 表示选择 ID),并使用 `click` 方法为选定的元素添加点击事件。当用户点击相应的元素时,就会弹出一个提示框。 以上只是一个简单的示例,实际开发中您可以根据需求使用更多的 jQuery 方法和功能来构建淘宝精品服饰案例。希望对您有所帮助!如果您有更多问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值