首页 > 其他分享 >网页布局------轮播图效果实现

网页布局------轮播图效果实现

时间:2024-05-05 14:34:45浏览次数:17  
标签:box index 网页 轮播 color background ------ css left

纯css实现轮播图可以看这里:纯css实现轮播图(自动轮播和手动轮播)效果_☆*往事随風*☆的博客_css轮播图-CSDN博客

代码来源:

html+css+jquery实现轮播图自动切换、左右切换、点击切换_jquery图片轮播幻灯片效果实现左右滚动图片切换代码-CSDN博客

JS实现轮播图的三种简单方法。_js轮播图-CSDN博客

 

1、html+css+jquery

(1)页面结构

<div class="box">
    <!-- 轮播图 -->
    <div class="box-img"><img src="/images/1.png"></div>
    <div class="box-img"><img src="/images/2.png"></div>
    <div class="box-img"><img src="/images/3.jpg"></div>
    <div class="box-img"><img src="/images/4.jpg"></div>
    <div class="box-img"><img src="/images/5.jpg"></div>
    <div class="box-img"><img src="/images/test.png"></div>
    <!-- 左右切换 -->
    <div class="box-left">&lt;</div>
    <div class="box-right">&gt;</div>
    <!-- 圆点 -->
    <div class="box-dot">
        <ul>
            <li class="btn"></li>
            <li class="btn"></li>
            <li class="btn"></li>
            <li class="btn"></li>
            <li class="btn"></li>
            <li class="btn"></li>
        </ul>
    </div>
</div>

(2)CSS样式

    <style>
    /*设置绝对定位*/
.box { height: 460px; width: 1000px; position: relative;      }     /*使用绝对定位设置图片在页面的位置*/
.box-img { position: absolute; left: 0; top: 0; opacity: 0; transition: 1.5s; }      /*使用opacity设置*/ .box-img:nth-child(1) { opacity: 1; } .box-img img { height: 460px; width: 1000px; } /*左右切换*/ .box-left { position: absolute; left: 0; top: 195px; width: 35px; height: 70px; border-radius: 0 5px 5px 0; text-align: center; line-height: 70px; font-size: 27px; color: #b0afad; } .box-left:hover { background-color: #777777; color: #ffffff; } .box-right { position: absolute; right: 0; top: 195px; width: 35px; height: 70px; border-radius: 5px 0 0 5px; text-align: center; line-height: 70px; font-size: 27px; color: #b0afad; } .box-right:hover { background-color: #777777; color: #ffffff; } /*圆点*/ .box-dot { position: absolute; right: 450px; bottom: 20px; } .box-dot ul { list-style: none; padding: 0; margin: 0; } .box-dot ul li { width: 14px; height: 14px; border-radius: 100%; background-color: #4a5460; float: left; margin-right: 10px; } .box-dot ul li:hover, .box-dot ul li:nth-child(1) { background-color: #ffffff; } </style>

(3)功能实现

<script src="/jquery.min.js"></script>
<script>
    $(function () {
        var index = 0;
        var timer;

        // 自动切换
        // function f() {
        //     var timer = setInterval(function () {
        //         $(".box-img").css("opacity", 0);
        //         $(".box-img").eq(index).css("opacity", 1);
        //         $(".btn").css("background-color", "#4a5460");
        //         $(".btn").eq(index).css("background-color", "#ffffff");
        //         if ($(".box-img").length - 1 === index) {
        //             index = 0
        //         } else {
        //             index++;
        //         }
        //     }, 4000);
        // }

        // f();
        // 左右切换
        $(".box-left").click(function () {
            clearInterval(timer);
            // 点击左,index减1,减到最小时让成为最大
            if (index === 0) {
                index = $(".box-img").length - 1;
            } else {
                index--;
            }
            $(".box-img").css("opacity", 0);
            $(".box-img").eq(index).css("opacity", 1);
            $(".btn").css("background-color", "#4a5460");
            $(".btn").eq(index).css("background-color", "#ffffff");
            // f();
        });
        $(".box-right").click(function () {
            clearInterval(timer);
            // 点击右,index加1,加到最大时让成为最小
            if (index === $(".box-img").length - 1) {
                index = 0;
            } else {
                index++;
            }
            $(".box-img").css("opacity", 0);
            $(".box-img").eq(index).css("opacity", 1);
            $(".btn").css("background-color", "#4a5460");
            $(".btn").eq(index).css("background-color", "#ffffff");
            // f();
        });
        // 点击圆点切换轮播图
        $(".btn").click(function () {
            clearInterval(timer);
            // 获取第几个圆点
            index = $(this).index()
            // alert(index)
            $(".box-img").css("opacity", 0);
            $(".box-img").eq(index).css("opacity", 1);
            $(".btn").css("background-color", "#4a5460");
            $(".btn").eq(index).css("background-color", "#ffffff");
            // f();
        });
    })
</script>

1、 实现点击两次按钮进行图片切换

(1)左侧按钮设置:当index==0时也就是展示第一张图的时候,通过if语句设置index的值为图片长度-1,通过点击左侧按钮index会进行自减操作,通过index图片获取的值会不断减少直至为0再一次重复之前的操作。

(2)右侧按钮:点击右侧按钮index会进行自增操作,当index的值等于图片长度-1时(也就是第一张图片位置)将index设置为0、

(3)在点击按钮之前通过css()方法将opacity和background-color设置为0和灰色,当点击按钮时通过eq()方法获取到图片的索引将图片的css()方法设置为opacity1和白色

2、实现圆点切换,首先需要获取点击圆点的索引,通过$(this).index();可以获取。实现点击圆点切换图片和圆点表示与点击两侧按钮切换图片一样都是通过opacity隐藏和显示图片

3、自动循环图片实现:设置周期定时器f通过index自增控制图片的显示,在点击图标和圆点时需要清楚定时器,不要在后面加入f();那样会快速的循环一边

 

 

 

2、html+css+JavaScript

(1)页面结构

 

<div id="container">
    <ul class="parent" style="left: 0;">
        <li><img src="/images/1.png"></li>
        <li><img src="/images/2.png"></li>
        <li><img src="/images/3.jpg"></li>
        <li><img src="/images/4.jpg"></li>
        <li><img src="/images/5.jpg"></li>
    </ul>

    <div class="btnLeft">&lt;</div>
    <div class="btnRight">&gt;</div>
    <div class="modal">
        <!-- <div class="title">
            <h2>轮播图</h2>
        </div> -->
        <div class="dots">
            <ul class="clearfix">
                <li class="on"></li>
                <li class="off"></li>
                <li class="off"></li>
                <li class="off"></li>
                <li class="off"></li>
            </ul>
        </div>
    </div>
</div>

 

(2)css样式

<style type="text/css">
    *{
        margin: 0;
        padding: 0;
    }
    ul{
        list-style: none;
    }
    a{
        text-decoration: none;
    }
    #container{
        position: relative;
        width: 500px;
        height: 260px;
        margin: 20px auto;
        overflow: hidden; /*溢出隐藏:只显示一张图片*/
    }
    #container .parent{
        position: absolute;
        width: 2500px; /*整个图片层长度:500*5=2500*/
        height: 260px;
    }
    
    #container .parent li{
        float: left;
        width: 500px;
        height: 100%;
    }
    #container .parent li img{
        width: 100%;
        height: 100%;
    }
    #container .btnLeft,
    #container .btnRight{
        width: 30px;
        height: 30px;
        background-color: #9E9E9E;
        border-radius: 20%;
        opacity: 80%;
        position: absolute; /*包含块为图片显示层container*/
        top: 0;
        bottom: 0;
        margin: auto;
        font-size: 20px;
            color: #f40;
            text-align: center;
            line-height: 30px;
    }
    #container .btnLeft{
        left: 10px;
    }
    #container .btnRight{
        right: 10px;
    }
    #container .btnLeft:hover,
    #container .btnRight:hover{
        opacity: 90%;
        cursor: pointer;
    }
    /*蒙层*/
    #container .modal{
        width: 100%;
        height: 40px;
        background: rgba(0,0,0,.3);
        position: absolute;
        left: 0;
        bottom: 0;
        line-height: 40px;
        padding: 0 40px;
        box-sizing: border-box;
    }
    #container .modal .title{
        float: left;
        color: #fff;
        font-size: 12px;
    }
    #container .modal .dots{
        float: right;
        position: absolute;
        bottom: 10px;
        left: 340px;
    }
    #container .modal .dots li{
        width: 15px;
        height: 15px;
        border-radius: 50%;
        float: left;
        /*可以使用行块盒*/
        /*display: inline-block;*/
        margin: 0 5px;
        cursor: pointer;
    }
    .clearfix::after{
        content: "";
        display: block;
        clear: both;
    }
    .on{
        background-color: red;
    }
    .off{
        background-color: gray;
    }

 

(3)功能实现

<script type="text/javascript">
    
var imgShow = document.getElementsByClassName('parent')[0],
    dotList = document.querySelectorAll('.dots >.clearfix > li');
var btnLeft = document.getElementsByClassName('btnLeft')[0],
    btnRight = document.getElementsByClassName('btnRight')[0];
var dotLen = dotList.length,
    index = 0; //轮播层的图片索引,0表示第一张

//圆点显示
function showRadius() {
    for(var i = 0; i < dotLen; i++) {
        if(dotList[i].className = "on"){
            dotList[i].className = "off";
        }
    }
    dotList[index].className = "on";
}

//向左移动
btnLeft.onclick = function() {
    index--;
    if(index < 0){  /*第1张向左时,变为第5张*/
        index = 4;       // index= dotLen -1
    
    }
    showRadius();
    var left;
    var imgLeft = imgShow.style.left;
    if(imgLeft === "0px") { /*当是第1张时,每张图片左移,移4张图,位置为-(4*500)*/
        left = -2000;  //left=-(dotLen -1)*500
    }
    else{
        left = parseInt(imgLeft) + 500; /*由于left为负数,每左移一张加500*/
    }
    imgShow.style.left = left + "px";
}

//向右移动
btnRight.onclick = function() {
    index++;
    if(index > 4){  /*第5张向右时,变为第1张*/
        index = 0;
    }
    showRadius();
    var right;
    var imgLeft = imgShow.style.left;
    if(imgLeft === "-2000px") { /*当是第5张时,第1张的位置为0*/
        right = 0;
    }
    else{
        right = parseInt(imgLeft) - 500; /*由于left为负数,每右移一张减500*/
    }
    imgShow.style.left = right + "px";
}

// 自动轮播
/*var timer;
function autoPlay() {
    timer = setInterval(function() {
        var right;
        var imgLeft = imgShow.style.left;
        if(imgLeft === "-2000px") {
            right = 0;
        }
        else{
            right = parseInt(imgLeft) - 500;
        }
        imgShow.style.left = right + "px";
    } ,1000)
}
autoPlay();*/

for(var i = 0; i < dotLen; i++) {
    /*利用闭包传递索引*/
    (function(i) {
        dotList[i].onclick = function() {
            var dis = index - i; //当前位置和点击的距离
            imgShow.style.left = (parseInt(imgShow.style.left) + dis * 500) + "px";
            index = i; //显示当前位置的圆点
            showRadius();
        }
    })(i);
}

</script>

 

标签:box,index,网页,轮播,color,background,------,css,left
From: https://www.cnblogs.com/lixianhui/p/18157573

相关文章

  • 微机结构
    在微机系统中,不同的子系统必须具有连接彼此的接口,比如,内存和CPU需要通信,CPU和I/O设备也需要通信。这些工作都是由总线来完成的内存的主要构成是被称为动态随机读写存储器的电子芯片,它在微机无电时,不会存放任何信息,只是通过开机加点启动,才可以磁盘引导初始化,在它上面初始化系统的信......
  • 如何选择一个机器人仿真器
    参考1:选一个靠谱机器人仿真器,从0开始学机器人传统仿真器如gazebo,webot,coppeliasim的表现都大差不差;webot和coppeliasim入门难度比gazebo低;webot和coppeliasim对于ROS的适配没有gazebo好,环境的丰富性也比不上gazebo;gazebo承接了DARPA地下探索挑战赛的仿真比赛,里面所有......
  • C#配置程序引用的dll的位置
    在C#程序的App.config配置第三方dll的位置,使得C#程序可以自动加载子目录下的dll。参考博客:https://blog.csdn.net/qq_43307934/article/details/117805106<runtime><assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1"><probingprivatePath="bin;bin......
  • DNS域名服务器
    DNS域名服务器什么是DNSDomainNameSystem域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp,53/tcp实际上,每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域......
  • Cleanmgr,也称为磁盘清理器(Disk Cleanup),是Windows操作系统中的实用工具,用于删除计算机
    cleanmgr|MicrosoftLearnCleanmgr,也称为磁盘清理器(DiskCleanup),是Windows操作系统中的实用工具,用于删除计算机上不需要的临时文件、回收站文件、下载文件以及其他可以安全删除的文件,以释放磁盘空间。功能特点:释放磁盘空间:Cleanmgr可以帮助用户识别并删除不再需要的......
  • sublime设置默认打开侧边栏(失败)
    描述每次使用sublime打开某个目录,总是不显示侧边栏,还得手动打开。过程在设置里找了半天似乎没有这个选项,有点离谱,网上搜到的全是手动打开侧边栏。看来只能Ctrl+KB按得勤快些了。 //Displaythetogglesidebarbuttoninthestatusbar "show_sidebar_button":true,切换......
  • 编译qemu-9.0.0
    系统信息Linuxyd6.5.0-27-generic#28~22.04.1-UbuntuSMPPREEMPT_DYNAMICFriMar1510:51:06UTC2x86_64x86_64x86_64GNU/Linuxqemu-9.0.0.tar.xz编译命令sudoaptinstallninja-buildflexpython3-venvpython3-sphinxlibsdl2-devcmakemeson-y注意,尽量安装......
  • E. Iva & Pav
    链接:https://codeforces.com/problemset/problem/1878/E洛谷链接:https://www.luogu.com.cn/problem/CF1878E知识点:st表+二分(我不知道为什么有的题解说不用二分...反正我的在第11个测试点会TLE)思路就是一样的,存储区间的位与,然后按照区间查询:st_query来看每个区间符不符合,注意,这里......
  • 洛谷题单指南-动态规划2-P1435 [IOI2000] 回文字串
    原题链接:https://www.luogu.com.cn/problem/P1435解题思路:方法1:回文字串的特点是,正着读、反着读是一样的换一个思路,对于一个字符串s,正序、逆序公共的部分就是已经是回文的部分,剩余的部分就是要插入的字符所以,问题转换为,计算一个字符串正序、逆序的最长公共子串,然后剩下的长度......
  • Django-rest-framework框架
    【一】drf入门规范【二】序列化组件【三】请求与响应【四】视图组件【五】路由组件【六】认证组件【七】权限组件【八】频率组件【九】过滤与排序【十】异常捕获【十一】分页组件【十二】生成接口文档【十三】序列化类源码分析【十四】JWT介绍【十五】simple-jwt简......