js实现轮播图(点击小图片切换大图片+自动切换)

js实现轮播图(点击小图片切换大图片+自动切换)

实现效果如下:
点击小图可切换大图

点击小图切换大图和轮播标题,点击左右按钮大小图和轮播标题切换,鼠标进入清除定时器,鼠标移出恢复轮播

html代码如下:

<div class="switch fl" id="jsSwitch">
        <div class="switch-bottom">
            <div class="switch-l" >
                <img class="switch-img" id="jsSwitchL" src="images/lunbo-left.png" alt="">
            </div>
            <ul class="switch-list" id="jsSwitchList">
                <li class="switch-item active"><img class="switch-min" src="images/lunbo-1-min.png "></li>
                <li class="switch-item"><img class="switch-min" src="images/lunbo-2.png"></li>
                <li class="switch-item"><img class="switch-min" src="images/lunbo-3.png"></li>
                <li class="switch-item"><img class="switch-min" src="images/lunbo-4.png"></li>
                <li class="switch-item"><img class="switch-min" src="images/lunbo-5.png"></li>
            </ul>
            <div class="switch-r fr" >
                <img class="switch-img" id="jsSwitchR" src="images/lunbo-right.png"></img>
            </div>
        </div>
        <div class="switch-title">
            <p class="switch-info" id="jsSwitchInfo">北京市人民检察院第十五次代表大会召开</p>
        </div>
    </div>

关键部分,js代码:

var num = 0;
var arrUrl = ['images/lunbo-1.png', 'images/lunbo-2-max.png', 'images/lunbo-3-max.png', 'images/lunbo-4-max.png', 'images/lunbo-5-max.png'];
var img = document.getElementById('jsSwitch');
var li = document.getElementById('jsSwitchList').children;
var left = document.getElementById('jsSwitchL');
var right = document.getElementById('jsSwitchR');
var info = document.getElementById('jsSwitchInfo');
var timer = null;

//左右按钮
left.onclick = function(){
    num--;
    if (num == -1) {
        num = arrUrl.length - 1;
    }
    changeImg();
}
right.onclick = function(){
    num++;
    if (num == arrUrl.length) {
        num =  0;
    }
    changeImg();
}

setTimeout(autoplay(),1000);

//鼠标进入清除定时器,鼠标离开恢复
img.onmouseover = function(ev){
    clearInterval(timer);
};
img.onmouseout = autoplay;

//点击小图片 换大图片
for (var i = 0; i < li.length; i++){
    li[i].index = i;
    li[i].onclick = function (ev) {
        num = this.index;
        changeImg();
    }
}

//图片切换
function changeImg() {
    for (var i = 0; i < li.length; i++) {
    	//判断当前li是否包含active类
        if(li[i].classList.contains('active')){
            li[i].classList.remove('active');
        }
    }
    //修改小图背景
    li[num].classList.add('active');
    //修改大图
    var currentImg = arrUrl[num];
    img.style.background = "url("+currentImg+") no-repeat center";
    //修改轮播标题
    info.innerText = arrInfo[num];
}
//定时器
function autoplay() {
    timer = setInterval(function () {
        num++;
        num %= arrUrl.length;
        changeImg();
    },2000);
}

以下是轮播全部代码,加上css代码,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body,html {
            width: 100%;
            height: 100%;
        }
        *{
            margin: 0;
            padding: 0;
            font-family: "microsoft yahei";
            font-weight: normal;
        }
        ol, ul, li {
            list-style: none;
        }
        a {
            text-decoration: none;
            color: #fff;
        }
        img {
            display: block;
            border: none;
        }
        .fl {
            float: left;
        }
        .fr {
            float: right;
        }
        .switch {
            position: absolute;
            width: 566px;
            height: 302px;
            left: -283px;
            margin-top: 100px;
            margin-left: 50%;
            background: url(images/lunbo-1.png) no-repeat;
            background-size: 566px 302px;
        }
        .switch-bottom {
            position: absolute;
            bottom: 0;
            width: 100%;
            height: 66px;
            background: rgba(0,0,0,0.65);
        }
        .switch-l,
        .switch-r {
            width: 45px;
            height: 66px;
            display: table-cell;
            vertical-align: middle;
        }
        .switch-r {
            margin-top: -46px;
        }
        .switch-img {
            margin-left: 16px;
            cursor: pointer;
        }
        .switch-img {
            margin-left: 10px;
            cursor: pointer;
        }
        .switch-list {
            float: left;
            width: 475px;
            height: 66px;
            margin-top: -66px;
            margin-left: 45px;
        }
        .switch-item {
            float: left;
            width: 95px;
            height: 66px;
        }
        .active {
            background-color: #fff;
        }
        .switch-min {
            margin: 5px;
            cursor: pointer;
        }
        .switch-title {
            position: absolute;
            bottom: 66px;
            width: 100%;
            height: 36px;
            background: rgba(0,0,0,0.4);
        }
        .switch-info {
            margin-top: 10px;
            margin-left: 8px;
            font-size: 16px;
            color: #fff;
        }
    </style>
</head>
<body>
    <div class="switch fl" id="jsSwitch">
        <div class="switch-bottom">
            <div class="switch-l" >
                <img class="switch-img" id="jsSwitchL" src="images/lunbo-left.png" alt="">
            </div>
            <ul class="switch-list" id="jsSwitchList">
                <li class="switch-item active"><img class="switch-min" src="images/lunbo-1-min.png "></li>
                <li class="switch-item"><img class="switch-min" src="images/lunbo-2.png"></li>
                <li class="switch-item"><img class="switch-min" src="images/lunbo-3.png"></li>
                <li class="switch-item"><img class="switch-min" src="images/lunbo-4.png"></li>
                <li class="switch-item"><img class="switch-min" src="images/lunbo-5.png"></li>
            </ul>
            <div class="switch-r fr" >
                <img class="switch-img" id="jsSwitchR" src="images/lunbo-right.png"></img>
            </div>
        </div>
        <div class="switch-title">
            <p class="switch-info" id="jsSwitchInfo">北京市人民检察院第十五次代表大会召开</p>
        </div>
    </div>

    <script src="jQuery.v1.11.1.min.js"></script>
    <script>
        var num = 0;
        var arrUrl = ['images/lunbo-1.png', 'images/lunbo-2-max.png', 'images/lunbo-3-max.png', 'images/lunbo-4-max.png', 'images/lunbo-5-max.png'];
        var arrInfo = ['北京市人民检察院第十五次代表大会召开','北京市人民检察院','北京市人民会召开','十五次代表大会召开','北京市人民大会召开']
        var img = document.getElementById('jsSwitch');
        var li = document.getElementById('jsSwitchList').children;
        var left = document.getElementById('jsSwitchL');
        var right = document.getElementById('jsSwitchR');
        var info = document.getElementById('jsSwitchInfo');
        var timer = null;

        //左右按钮
        left.onclick = function(){
            num--;
            if (num == -1) {
                num = arrUrl.length - 1;
            }
            changeImg();
        }
        right.onclick = function(){
            num++;
            if (num == arrUrl.length) {
                num =  0;
            }
            changeImg();
        }

        setTimeout(autoplay(),1000);

        //鼠标进入清除定时器,鼠标离开恢复
        img.onmouseover = function(ev){
            clearInterval(timer);
        };
        img.onmouseout = autoplay;

        //点击小图片 换大图片
        for (var i = 0; i < li.length; i++){
            li[i].index = i;
            li[i].onclick = function (ev) {
                num = this.index;
                changeImg();
            }
        }

        //图片切换
        function changeImg() {
            for (var i = 0; i < li.length; i++) {
                //判断当前li是否包含active类
                if(li[i].classList.contains('active')){
                    li[i].classList.remove('active');
                }
            }
            //修改小图背景
            li[num].classList.add('active');
            //修改大图
            var currentImg = arrUrl[num];
            img.style.background = "url("+currentImg+") no-repeat center";
            //修改轮播标题
            info.innerText = arrInfo[num];
        }
        //定时器
        function autoplay() {
            timer = setInterval(function () {
                num++;
                num %= arrUrl.length;
                changeImg();
            },2000);
        }
    </script>
</body>
</html>
  • 6
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用JavaScript来实现这个轮播图的条件。首先,你需要一个包含要轮播图片的数组,然后使用定时器来自动切换图片。你还需要为右侧的图片添加鼠标移入和移出事件,以便在鼠标移入时切换到对应的图片,并在鼠标移出时恢复自动切换。最后,你需要设置当前显示的小图片的透明度为1,其他没有显示的小图片的透明度为0.5。 以下是一个示例的JavaScript代码实现: ```javascript // 获取图片元素和小图片元素 var images = document.querySelectorAll('.slideshow img'); var thumbs = document.querySelectorAll('.thumbnail img'); // 初始化索引和定时器 var currentIndex = 0; var timer; // 自动切换图片 function autoSlide() { // 切换到下一张图片 currentIndex = (currentIndex + 1) % images.length; showImage(currentIndex); } // 显示指定索引的图片 function showImage(index) { // 隐藏所有图片和小图片 for (var i = 0; i < images.length; i++) { images[i].style.display = 'none'; thumbs[i].style.opacity = '0.5'; } // 显示当前图片和小图片 images[index].style.display = 'block'; thumbs[index].style.opacity = '1'; } // 鼠标移入右侧的图片切换到对应的图片 for (var i = 0; i < thumbs.length; i++) { thumbs[i].addEventListener('mouseover', function(e) { // 获取当前图片的索引 var targetIndex = Array.from(thumbs).indexOf(e.target); showImage(targetIndex); }); } // 鼠标移出时恢复自动切换 for (var i = 0; i < thumbs.length; i++) { thumbs[i].addEventListener('mouseout', function() { startAutoSlide(); }); } // 开始自动切换 function startAutoSlide() { timer = setInterval(autoSlide, 2000); } // 初始化轮播图 startAutoSlide(); ``` 在上述代码中,你需要将 `.slideshow` 替换为包含轮播图片的容器的选择器,将 `.thumbnail` 替换为包含小图片的容器的选择器。此外,你还需要确保HTML中正确引入了JavaScript文件,并在页面加载时执行初始化轮播图的代码。 希望这能帮到你!如果你有任何其他问题,请随时问我。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值