zoukankan      html  css  js  c++  java
  • jQuery实现轮播图效果

    我现在要实现的是点击左右按钮 实现左右切换

    这是HTML的结构

    <div class="carousel">
    <div class="btn">
    <a href="javascript:;" class="btn1"></a>
    <a href="javascript:;" class="btn2"></a>
    </div>
    <ul class="imglist">
    <li class="no0"><a href="#"><img src="images/0.png" /></a></li>
    <li class="no1"><a href="#"><img src="images/1.png" /></a></li>
    <li class="no2"><a href="#"><img src="images/2.png" /></a></li>
    <li class="no3"><a href="#"><img src="images/3.png" /></a></li>
    <li class="no4"><a href="#"><img src="images/4.png" /></a></li>
    <li class="no5"><a href="#"><img src="images/5.png" /></a></li>
    <li class="no6"><a href="#"><img src="images/6.png" /></a></li>
    </ul>
    </div>

    这是CSS结构样式

    因为我每一个li(图片)的样式都不一样所以我要分别给个li设置样式

    <style>
    *{
    margin: 0;
    padding: 0;
    }
    ul{
    list-style: none;
    }
    .carousel{
    position: relative;
    670px;
    height: 221px;
    margin: 50px auto;
    background: url(images/pic_bg.gif) no-repeat;
    overflow: hidden;

    }
    .carousel .btn a{
    position: absolute;
    42px;
    height: 42px;
    top: 150px;
    /*background-color: #f00;*/
    }
    .carousel .btn .btn1{
    left: 25px;
    }
    .carousel .btn .btn2{
    right: 25px;
    }
    .carousel .imglist li{
    position: absolute;
    }
    .carousel .imglist .no0{
    78px;
    height: 53px;
    left: -100px;
    top: 70px;
    }
    .carousel .imglist .no1{
    90px;
    height: 60px;
    left: 16px;
    top: 63px;
    }
    .carousel .imglist .no2{
    109px;
    height: 82px;
    left: 120px;
    top: 40px;
    }
    .carousel .imglist .no3{
    153px;
    height: 100px;
    left: 252px;
    top: 21px;
    }
    .carousel .imglist .no4{
    109px;
    height: 82px;
    left: 433px;
    top: 40px;
    }
    .carousel .imglist .no5{
    90px;
    height: 60px;
    left: 564px;
    top: 63px;
    }
    .carousel .imglist .no6{
    78px;
    height: 53px;
    left: 689px;
    top: 70px;
    }
    .carousel .imglist li img{
    100%;
    height: 100%;
    }
    </style>

    我现在要实现的是点击左右按钮 实现左右切换

    jquery 代码

    因为是用jQuery的库,所有要引入jQuery代码哦

    $btn1 = $(".btn1");
    $btn2 = $(".btn2");
    // 定义新数组,接受每个位置的css样式对象
    var styleArr = [];
    // 遍历数组添加样式对象
    for(var i = 0 ; i <= 6 ; i++){
    styleArr.push({
    "width" : $("li").eq(i).css("width"),
    "height" : $("li").eq(i).css("height"),
    "left" : $("li").eq(i).css("left"),
    "top" : $("li").eq(i).css("top")
    });
    }
    // console.log(styleArr);
    // 建立类名数组
    var nameArr = [];
    // for(var i = 0 ; i <= 6 ;i++){
    // nameArr.push($("li").eq(i).attr("class"));
    // }
    // 使用each简化
    $("li").each(function(i){
    nameArr.push($(this).attr("class"));
    });
    // console.log(nameArr);
    // 右按钮事件
    $btn2.click(function(){
    // 防骚扰
    if($("li").is(":animated")){
    return;
    }
    // 后面的元素走到上一个位置
    // $(".no3").animate({"width":109,"height":82,"left":120,"top":40},300);
    // $(".no4").animate({"width":153,"height":100,"left":252,"top":21},300);
    // 1-6位置的li走到前一个li的位置
    for(var i = 1 ; i <= 6; i++){
    $(".no"+i).animate(styleArr[i-1],300);
    }
    // 0位置的li直接更改css样式,切换到6的位置
    $(".no0").css(styleArr[6]);
    // 运动结束后,要让li的类名和位置统一,切换类名数组的位置
    nameArr.unshift(nameArr.pop());
    // console.log(nameArr);
    // 循环给li添加新的类名
    // for(var i = 0 ; i <= 6 ; i++){
    // $("li").eq(i).attr("class",nameArr[i]);
    // }
    // 使用each简化
    $("li").each(function(i){
    $(this).attr("class",nameArr[i]);
    });
    });
    // 左按钮事件
    $btn1.click(function(){
    // 防骚扰
    if($("li").is(":animated")){
    return;
    }
    // 前面的元素走到下一个位置
    // 0-5位置的li走到下一个li的位置
    for(var i = 0 ; i <= 5; i++){
    $(".no"+i).animate(styleArr[i+1],300);
    }
    // 6位置的li直接更改css样式,切换到0的位置
    $(".no6").css(styleArr[0]);
    // 运动结束后,要让li的类名和位置统一,切换类名数组的位置、

    //将第一项删除,添加到最后一项
    nameArr.push(nameArr.shift());
    // console.log(nameArr);
    // 循环给li添加新的类名
    // for(var i = 0 ; i <= 6 ; i++){
    // $("li").eq(i).attr("class",nameArr[i]);
    // }
    // 使用each简化
    $("li").each(function(i){
    $(this).attr("class",nameArr[i]);
    });
    });

  • 相关阅读:
    final关键字
    多态
    java特性-封装
    super的使用
    ==和equals的区别
    面向对象的三大特征
    this和static的用法
    如何一步步使用国内yum源一键安装openstack-ocata版本基于centos7
    Zabbix 4.2 安装
    自动化运维神器-ansible
  • 原文地址:https://www.cnblogs.com/suriz/p/9535665.html
Copyright © 2011-2022 走看看