轮播图之根据小圆点滑动图片

<style>
    * {
        margin: 0;
        padding: 0
    }

    ul {
        list-style: none
    }

    img {
        vertical-align: top
    }

    .box {
        width: 730px;
        height: 454px;
        margin: 100px auto;
        padding: 5px;
        border: 1px solid #ccc;
    }

    .inner {
        width: 730px;
        height: 454px;
        background-color: pink;
        overflow: hidden;
        position: relative;
    }

    .inner ul {
        width: 1000%;
        position: absolute;
        top: 0;
        left: 0;
    }

    .inner li {
        float: left;
    }
    .square {
        position: absolute;
        right: 10px;
        bottom: 10px;
    }
    .square span {
        display: inline-block;
        width: 16px;
        height: 16px;
        background-color: #fff;
        text-align: center;
        line-height: 16px;
        cursor: pointer;
    }

    .square span.current {
        background-color: orangered;
        color: #fff;
    }

</style>
1 2 3 4 5 6
//获取最外面的div
var box=myTab("box");
//获取相框
var inner=box.children[0];
//获取相框的宽度
var imgWith=inner.offsetWidth;
//获取ul
var ul=inner.children[0];
//获取小方块

var span=inner.children[1].children;//所有的span
//循环所有的span标签,注册鼠标移入事件
for(var i=0;i<span.length;i++){
    //把索引值保存到每一个span里
        span[i].setAttribute("index",i);
    span[i].onmouseover=function () {
        //去掉所有的span背景颜色
        for(var j=0;j<span.length;j++){
            span[j].removeAttribute("class");

        }
        //给当前的span的背景颜色
        this.className="current";
        //获取当前span的索引值
        var index=this.getAttribute("index");
        //调用动画函数
        animate(ul,-index*imgWith);

    }

}
function animate(ele,target) {
    //先清理定时器
    clearInterval(ele.timeId);
    //ele.timeId 定时器的Id
    ele.timeId = setInterval(function () {
        //获取当前的位置
        var current = ele.offsetLeft;
        //设置div每次移动多少px
        var st = 9;
        //判断向左移还是右移动
        st = current < target ? 9 : -9;
        //每次移动后的距离
        current += st;
        //判断移动后的位置是否到达目标位置
        if (Math.abs(target - current) > Math.abs(st)) {
            //设置div的left值
            ele.style.left = current + "px";

        } else {
            //清除定时器
            clearInterval(ele.timeId);
            //将目标位置设置为div的值
            ele.style.left = target + "px";
        }

    }, 10);

}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下步骤实现轮播图滚动小圆点: 1. 在 HTML 文件中添加一个 `<ul>` 元素,用于存放小圆点。 ```html <ul class="dots"></ul> ``` 2. 在 CSS 文件中设置小圆点的样式。 ```css .dots { display: flex; justify-content: center; } .dot { width: 10px; height: 10px; border-radius: 50%; background-color: #ccc; margin: 0 5px; cursor: pointer; } .dot.active { background-color: #333; } ``` 3. 在 JavaScript 文件中动态生成小圆点,并为其添加击事件。 ```javascript const slides = document.querySelectorAll('.slide'); const dots = document.querySelector('.dots'); slides.forEach((slide, index) => { const dot = document.createElement('li'); dot.classList.add('dot'); dots.appendChild(dot); dot.addEventListener('click', () => { goToSlide(index); setActiveDot(index); }); }); function setActiveDot(index) { const activeDot = document.querySelector('.dot.active'); if (activeDot) activeDot.classList.remove('active'); const dot = dots.children[index]; dot.classList.add('active'); } ``` 4. 当切换图片时,同时切换小圆点的状态。 ```javascript let currentSlide = 0; const slideInterval = setInterval(nextSlide, 5000); function nextSlide() { goToSlide(currentSlide + 1); } function goToSlide(slideIndex) { const slides = document.querySelectorAll('.slide'); const nextSlide = slides[slideIndex]; if (slideIndex === slides.length) { slideIndex = 0; } else if (slideIndex < 0) { slideIndex = slides.length - 1; } slides.forEach(slide => { slide.style.transform = `translateX(-${slideIndex * 100}%)`; }); currentSlide = slideIndex; setActiveDot(slideIndex); } goToSlide(0); ``` 以上是一个基本的实现,你可以根据需要进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值