html小圆图轮播,小伙伴们,教你们做轮播焦点图。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

@Siuisune ,@『GDragon〃』 ,@若情未始 , @清水幽幽丶

小伙伴们,快来呀,我又用js写了一下,不过没有感觉很生硬,本来想加入那个运动函数的,但是能力有限,没有思路了。

小伙伴们凑合着看一下吧。

window.onload = function(){

var page = 1; //设置当前为第一页

var i = 4; //每版放四个图片

var container = getId('container'); /*获取外层容器*/

var prev = getId('prev'); /*向前按钮*/

var next = getId('next'); /*向后按钮*/

var imgContainer = getId('img_container'); /*图片展示区域*/

var imgBox = getId('imgbox'); /*放图片的盒子*/

var iWidth = parseInt(getStyle(imgContainer,'width')); /*图片展示区域的宽度,parseInt,字符串变为number*/

var len = imgBox.getElementsByTagName('li').length; /*列表的个数*/

var pageCount = Math.ceil(len/i); /*有几页*/

var circles = getId('circle').getElementsByTagName('span'); /*下面的索引小圆*/

var liPage = imgBox.getElementsByTagName('li'); /*列表*/

//向后按钮

next.onclick = function(){

if(imgBox.style.left == '-1800px'){

imgBox.style.left = 0;

page = 1;

}else{

imgBox.style.left = imgBox.offsetLeft - iWidth + 'px';

page++;

}

for(var i=0;i

circles[i].className = '';//先把小圆的类都去掉

}

circles[page-1].className = 'current'; //再给当前index添加类

}

//向前按钮

prev.onclick = function(){

if(imgBox.style.left == '0px'){

imgBox.style.left = '-1800px';

page = pageCount;

}else{

imgBox.style.left = imgBox.offsetLeft + iWidth + 'px';

page--;

}

for(var i=0;i

circles[i].className = '';

}

circles[page-1].className = 'current';

}

for(var i=0;i

circles[i].index = i;

circles[i].onclick = function(){

for(var j=0;j

circles[j].className = '';

}

circles[this.index].className = 'current';

imgBox.style.left = -iWidth*(this.index) + 'px';

}

}

}

//封装一个getId函数

function getId(id){

return typeof id === 'string'?document.getElementById(id):id;

}

//封装一个获取样式的函数,待会运动函数需要用到

function getStyle(obj,attr){

if(obj.currentStyle){

return obj.currentStyle[attr];

}else{

return getComputedStyle(obj,false)[attr];

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的自动轮播带小圆圈的轮播的代码实现: HTML部分: ```html <div class="slider"> <div class="slider-wrapper"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> </div> <div class="slider-nav"> <span class="slider-dot active"></span> <span class="slider-dot"></span> <span class="slider-dot"></span> </div> </div> ``` CSS部分: ```css .slider { position: relative; width: 100%; height: 300px; overflow: hidden; } .slider-wrapper { position: absolute; width: 300%; height: 100%; transition: left .6s ease-in-out; } .slider-wrapper img { float: left; width: 33.3333%; height: 100%; } .slider-nav { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; justify-content: center; align-items: center; } .slider-dot { width: 10px; height: 10px; margin: 0 5px; border-radius: 50%; background-color: #ccc; cursor: pointer; transition: background-color .3s ease; } .slider-dot.active { background-color: #333; } ``` JavaScript部分: ```javascript const sliderWrapper = document.querySelector('.slider-wrapper'); const sliderImgs = sliderWrapper.querySelectorAll('img'); const sliderNav = document.querySelector('.slider-nav'); const sliderDots = sliderNav.querySelectorAll('.slider-dot'); let curSlide = 0; // 当前显示的片的索引 let autoSlide; // 自动轮播的定时器 // 切换到指定索引的片 function slideTo(index) { curSlide = index; sliderWrapper.style.left = -curSlide * 100 / sliderImgs.length + '%'; sliderDots.forEach((dot, i) => { dot.classList.toggle('active', i === curSlide); }); } // 切换到下一张片 function slideNext() { slideTo((curSlide + 1) % sliderImgs.length); } // 自动轮播 function autoSlideStart() { autoSlide = setInterval(slideNext, 3000); } // 停止自动轮播 function autoSlideStop() { clearInterval(autoSlide); } // 点击小圆圈切换到对应的片 sliderDots.forEach((dot, i) => { dot.addEventListener('click', () => { slideTo(i); autoSlideStop(); }); }); // 鼠标移入停止自动轮播,移出恢复自动轮播 sliderWrapper.addEventListener('mouseenter', autoSlideStop); sliderWrapper.addEventListener('mouseleave', autoSlideStart); // 开始自动轮播 autoSlideStart(); ``` 代码解释: 1. HTML部分包含一个 `.slider` 容器,其中包含一个 `.slider-wrapper` 容器用于包裹所有片,以及一个 `.slider-nav` 容器用于放置小圆圈。 2. CSS部分使用绝对定位将 `.slider-wrapper` 容器定位到 `.slider` 容器的左侧,同时将其宽度设置为三倍,每张片占据一个三分之一的宽度,通过 `left` 属性控制 `.slider-wrapper` 容器的位置来切换片。`.slider-nav` 容器使用 flex 布局将小圆圈水平居中,同时使用 `transform` 属性将其水平居中。 3. JavaScript部分定义了三个函数,分别是 `slideTo`、`slideNext` 和 `autoSlideStart`。`slideTo` 函数用于切换到指定索引的片,通过修改 `.slider-wrapper` 容器的 `left` 属性来实现切换。`slideNext` 函数用于切换到下一张片,通过 `curSlide + 1` 模片数量来实现循环轮播。`autoSlideStart` 函数用于开始自动轮播,使用 `setInterval` 函数定时调用 `slideNext` 函数。 4. 在代码中监听小圆圈的 `click` 事件,当点击小圆圈时,调用 `slideTo` 函数切换到对应的片,并调用 `autoSlideStop` 函数停止自动轮播。 5. 在代码中监听 `.slider` 容器的 `mouseenter` 和 `mouseleave` 事件,当鼠标移入容器时,调用 `autoSlideStop` 函数停止自动轮播,当鼠标移出容器时,调用 `autoSlideStart` 函数恢复自动轮播。 6. 最后调用 `autoSlideStart` 函数开始自动轮播。 以上是一个简单的自动轮播带小圆圈的轮播的代码实现,你可以根据需要进行修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值