JS实现轮播图


自动换图片||点击换图片

js实现轮播图


**
html 里面的 路径要改为自己的

html 代码

**

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../css/lub.css">
    <script src="../js/lub.js" defer></script>
    <style>
        .imgdiv ul li img{
            /* 图片大小 */
            width: 2024px;
            height:820px;
        }
    </style>
</head>
<body>
    <div class="imgdiv" style="width: 2024px; height:820px;">
        <ul style="left: 0;">
            <li><img src="../img/首页.jpg" alt=""></li>
            <li><img src="../img/y.png"" alt=""></li>
            <li><img src="../img/zang.jpg" alt=""></li>
            <li><img src="../img/s.jpg" alt=""></li>
        </ul>
        <span class="lf"><img src="../img/left.png" alt=""></span>
        <span class="rf"><img src="../img/right.png" alt=""></span>
    </div>
</body>
</html>

**

在js文件夹下建lub.js

**

var indexUl = document.querySelector(".imgdiv>ul");
// li标签
var indexLi=indexUl.querySelectorAll("li");   
var lengthLi =indexLi.length;
// 最大的div
var pop = document.querySelector(".imgdiv");
var lfspan=pop.querySelector('.lf');
var rfspan=pop.querySelector('.rf');
// 设置左右按钮居中
lfspan.style.top=(parseInt(pop.offsetHeight)-60)/2+'px';
rfspan.style.top=(parseInt(pop.offsetHeight)-60)/2+'px';
// 初始化,获得显示框的宽度
var content_width=parseInt(pop.offsetWidth);

const TIME=2000;
var timer;

// 设置全局累加器,判断动到哪一张图片**************
var num=0;
// 跟随图片的个数,动态设置圆点的个数
newsbigdiv=document.createElement('div');
newsbigdiv.className='newsbigdiv';
pop.appendChild(newsbigdiv);
// 循环创建子div,给每个子div一个class样式,加一个索引
for(var i=0;i<lengthLi;i++){
    newsdiv=document.createElement('div');
    newsbigdiv.appendChild(newsdiv);
    newsdiv.className="newsdiv";
    newsdiv.setAttribute('index',i);//给每个子div设置一个索引值
}
// 获取圆点div个数,让其左偏移,居中显示
var divsv = newsbigdiv.querySelectorAll('div');
newsbigdiv.style.left=(content_width-divsv.length*60)/2+'px';
// 默认第一个为高亮
divsv[0].style.opacity=1;


function change(){
    // 把所有圆点样式透明设置为0.3
    for(var j=0;j<lengthLi;j++){
        divsv[j].style.opacity=0.3;
    }
    // 给当前索引为num的图片改变圆点高亮显示
    divsv[num].style.opacity=1;
    indexUl.style.left=-num*content_width+'px';
}

for(var i=0;i<lengthLi;i++){
    divsv[i].onclick=function(){
        num=this.getAttribute('index');
        change();
    }
}
lfspan.onclick=function(){
    num--;
    if(num==-1){
        num=lengthLi-1;
    }
    change();
}
rfspan.onclick=function(){
    num++;
    if(num==lengthLi){
        num=0;
    }
    change();
}

timer=setInterval(rfspan.onclick,TIME);

// 当鼠标放在图片上时,清除定时器
pop.onmouseover=function(){
    clearInterval(timer);
}
// 鼠标离开定时器时,开启定时器
pop.onmouseout=function(){
    timer=setInterval(rfspan.onclick,TIME);
}

**

在css下建 lub.css

**

*{
    margin: 0;
    padding: 0;
}
ul li{
    list-style: none;
}
.imgdiv{
    margin: 200px auto 0;
    overflow: hidden;
    position:relative;
}
.imgdiv ul{
    display:flex;
    transition: left 1s linear;/*动画效果*/
    position:absolute;
}
.imgdiv span{
    cursor:pointer;
}
.imgdiv span.lf{
    position: absolute;
    left: 10px;
}
.imgdiv span.rf{
    position: absolute;
    right: 10px;
}
.imgdiv>div{
    margin: 0 auto;
    position: absolute;
    left:0;
    bottom:20px;
    display: flex;
}
.newsdiv{
    width: 0;
    height: 0;
    border: 10px solid rgb(139, 138, 138);
    border-radius: 50%;
    margin:0 20px;
    cursor:pointer;
    opacity: 0.3;
}
上述代码中的下面这两段代码:是给下面放小圆点盒子与小圆点样式的。在js中根据图片个数动态创建小圆点

.imgdiv>div{
    margin: 0 auto;
    position: absolute;
    left:0;
    bottom:20px;
    display: flex;
}
.newsdiv{
    width: 0;
    height: 0;
    border: 10px solid rgb(139, 138, 138);
    border-radius: 50%;/*正方形变成圆形*/
    margin:0 20px;
    cursor:pointer;/*鼠标放上去变成小手*/
    opacity: 0.3;/*初始透明度,通过js修改透明度,来修改其高亮*/
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的基于JavaScript实现轮播图示例: HTML结构: ```html <div class="slider"> <ul class="slides"> <li><img src="image1.jpg"></li> <li><img src="image2.jpg"></li> <li><img src="image3.jpg"></li> </ul> </div> ``` CSS样式: ```css .slider { position: relative; width: 100%; height: 500px; overflow: hidden; } .slides { position: absolute; top: 0; left: 0; width: 300%; height: 100%; display: flex; transition: all 0.5s ease-in-out; } .slides li { width: 33.333%; list-style: none; } .slides img { width: 100%; height: 100%; object-fit: cover; } ``` JavaScript代码: ```javascript const slider = document.querySelector('.slider'); const slides = document.querySelectorAll('.slides li'); let currentSlide = 0; function nextSlide() { slides[currentSlide].classList.remove('active'); currentSlide = (currentSlide + 1) % slides.length; slides[currentSlide].classList.add('active'); slider.style.transform = `translateX(-${currentSlide * 100}%)`; } setInterval(nextSlide, 3000); ``` 这个示例中,我们通过JavaScript代码来实现轮播图的自动播放效果。我们首先获取到了轮播图的容器(`.slider`)以及轮播图中的每一张图片(`.slides li`)。 我们定义了一个 `currentSlide` 变量来表示当前显示的图片序号,然后编写了一个 `nextSlide` 函数,在每次自动播放时都会被调用。这个函数首先移除当前显示的图片的 `active` 类,然后计算出下一张图片的序号,并为其添加 `active` 类。最后,我们通过设置容器的 `transform` 属性来移动图片,实现轮播效果。 最后,我们使用 `setInterval` 方法来每隔3秒钟调用一次 `nextSlide` 函数,从而实现轮播图的自动播放。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值