学完了JQuery,还不会写banner图?(含完整源码)

学完了JQuery,还不会写banner图?恐怕不太好鸭~~

JQuery实现banner图

先来看看最终效果

我们先来看一下整体的布局

<body>
    <div id="play">
        <ol>
            <li class="active">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ol>
        <ul>
            <li><a href="*"><img src="./img/1.jpg"/></a></li>
            <li><a href="*"><img src="./img/2.jpg"/></a></li>
            <li><a href="*"><img src="./img/3.jpg"/></a></li>
            <li><a href="*"><img src="./img/4.jpg"/></a></li>
            <li><a href="*"><img src="./img/5.jpg"/></a></li>
            <li><a href="*"><img src="./img/1.jpg"/></a></li>
        </ul>
    </div>
</body>

首先,我们的body部分有一个div,div里面有一个有序列表ol和一个无序列表ulol中的li是用来显示我们当前运动到第几张图片的,如图所示:

在这里插入图片描述
ul中的li用来放我们要呈现的这些图片,如图:

在这里插入图片描述
本例banner图的基础原理如图:其中,div的宽、高为一个图片的宽度和高度,给div设置overflow:hidden,然后让ul每次向上移动一个图片的高度,从而实现轮播的效果。
在这里插入图片描述
css样式代码如下:

*{margin:0;padding:0}
img{border:none}
li{list-style: none;}

body{background-color:#ecf9ff}

#play{width:470px;height:150px;border:1px;margin:150px auto;position:relative;}
ul{position:absolute}  /* 注意要设置ul的position为absolute,否则ul不会上移动 */
ul li a{display:block;width:470px;height:150px;}
ul li img{width:100%;height:100%}
ol{position:absolute;bottom: 7px;right:8px;z-index:2;cursor:pointer}
ol li{float:left;width:19px;height:19px;border:1px solid #f47500;background-color:#fcf2cf;color:#f47500;text-align:center;z-index: 1;margin-left:3px;font-size:9px;}
.active{background-color:#ffb442;color:white;font-weight:bold}

js部分:

<script type="text/javascript">
        $(function(){
            var oBtns = $("#play ol li");
            var oUl = $("#play ul");
            var oLis = oUl.find("li");
            
            var isNow = 0; //记录当前显示图片的下标
            var timer = null;
            oBtns.click(function(){
                isNow = $(this).index();  //获取当前节点在兄弟节点中的下标
                tab();
            })

            $("#play").mouseenter(function(){  //鼠标移入时,轮播暂停
                clearInterval(timer);
            }).mouseleave(function(){   //鼠标移出时继续
                timer = setInterval(function(){
                    isNow++;
                    tab();
                }, 2000);
            })

            //设置定时器
            timer = setInterval(function(){
                isNow++;
                tab();
            }, 2000)

            function tab(){
                oBtns.attr("class", "").eq(isNow).attr("class", "active");
                if(isNow == oBtns.size()){
                    oBtns.eq(0).attr("class", "active"); 
                    //判断,若当前显示图片下标为当前按钮个数时,将oBtns中的第一个按钮(即ol中的第一个li)的class置为active
                }
                oUl.animate({
                    top:isNow * -150  //使ul整体向上移动,
                }, 500, function(){
                    if(isNow == oBtns.size()){  //判断,若当前显示图片下标为当前按钮个数时,将isNow置为0,将ul的top值置为0
                        isNow = 0;
                        oUl.css("top", "0");
                    }
                })
            }  
        })
    </script>

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jquery实战--banner图</title>
    <style type="text/css">
        *{margin:0;padding:0}
        img{border:none}
        li{list-style: none;}

        body{background-color:#ecf9ff}

        #play{width:470px;height:150px;border:1px;margin:150px auto;position:relative;overflow:hidden}
        ul{position:absolute}  /* 注意要设置ul的position为absolute,否则ul不会上移动 */
        ul li a{display:block;width:470px;height:150px;}
        ul li img{width:100%;height:100%}
        ol{position:absolute;bottom: 7px;right:8px;z-index:2;cursor:pointer}
        ol li{float:left;width:19px;height:19px;border:1px solid #f47500;background-color:#fcf2cf;color:#f47500;text-align:center;z-index: 1;margin-left:3px;font-size:9px;}
        .active{background-color:#ffb442;color:white;font-weight:bold}
    </style>
    <script src="./jquery.min.js"></script>
    <script type="text/javascript">
        $(function(){
            var oBtns = $("#play ol li");
            var oUl = $("#play ul");
            var oLis = oUl.find("li");

            var isNow = 0; //记录当前显示图片的下标
            var timer = null;
            oBtns.click(function(){
                isNow = $(this).index();  //获取当前节点在兄弟节点中的下标
                tab();
            })

            $("#play").mouseenter(function(){  //鼠标移入时,轮播暂停
                clearInterval(timer);
            }).mouseleave(function(){   //鼠标移出时继续
                timer = setInterval(function(){
                    isNow++;
                    tab();
                }, 2000);
            })

            //设置定时器
            timer = setInterval(function(){
                isNow++;
                tab();
            }, 2000)

            function tab(){
                oBtns.attr("class", "").eq(isNow).attr("class", "active");
                if(isNow == oBtns.size()){
                    oBtns.eq(0).attr("class", "active"); 
                    //判断,若当前显示图片下标为当前按钮个数时,将oBtns中的第一个按钮(即ol中的第一个li)的class置为active
                }
                oUl.animate({
                    top:isNow * -150  //使ul整体向上移动,
                }, 500, function(){
                    if(isNow == oBtns.size()){  //判断,若当前显示图片下标为当前按钮个数时,将isNow置为0,将ul的top值置为0
                        isNow = 0;
                        oUl.css("top", "0");
                    }
                })
            }  
        })
    </script>
</head>
<body>
    <div id="play">
        <ol>
            <li class="active">1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ol>
        <ul>
            <li><a href="*"><img src="./img/1.jpg"/></a></li>
            <li><a href="*"><img src="./img/2.jpg"/></a></li>
            <li><a href="*"><img src="./img/3.jpg"/></a></li>
            <li><a href="*"><img src="./img/4.jpg"/></a></li>
            <li><a href="*"><img src="./img/5.jpg"/></a></li>
            <li><a href="*"><img src="./img/1.jpg"/></a></li>
            <!--将第一张图片,添加到最后一张图片的后面,当最后一张图片动画结束的时候,直接切换回第一张 -->
        </ul>
    </div>
</body>
</html>

🐖:文章是供自己平时学习时用,相当于学习笔记,如有错误,欢迎指正~~

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现全屏轮播的banner,可以采用以下步骤: 1. 设置轮播容器的宽高为100%,即占据整个屏幕的宽高。 2. 将轮播容器内的片都设置为宽高100%。 3. 使用JavaScript或jQuery轮播功能代码,实现片自动切换和手动切换的效果。 4. 可以使用CSS3的transition属性和transform属性,实现片切换时的动画效果。 以下是一个简单的实现全屏轮播的banner的示例代码: HTML代码: ```html <div class="banner"> <img src="img/banner1.jpg" alt=""> <img src="img/banner2.jpg" alt=""> <img src="img/banner3.jpg" alt=""> </div> ``` CSS代码: ```css .banner { width: 100%; height: 100vh; overflow: hidden; position: relative; } .banner img { width: 100%; height: 100%; position: absolute; top: 0; left: 0; opacity: 0; transition: opacity .5s ease-in-out; } .banner img.active { opacity: 1; } ``` JavaScript代码: ```javascript $(function() { var $banner = $('.banner'); var $imgs = $banner.find('img'); var index = 0; var len = $imgs.length; // 初始化第一张片 $imgs.eq(0).addClass('active'); // 自动切换片 setInterval(function() { index++; if (index >= len) { index = 0; } $imgs.removeClass('active'); $imgs.eq(index).addClass('active'); }, 3000); // 手动切换片 $banner.on('click', function() { index++; if (index >= len) { index = 0; } $imgs.removeClass('active'); $imgs.eq(index).addClass('active'); }); }); ``` 以上代码中,使用jQuery实现了轮播功能,每隔3秒自动切换片,同时也可以点击片手动切换。CSS3的transition和transform属性实现了片切换时的渐变动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值