用JS做轮播跑马灯原理是什么,具体如何操作

Admin 2022-08-09 群英技术资讯 298 次浏览

这篇文章主要讲解了“用JS做轮播跑马灯原理是什么,具体如何操作”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。

实现原理:

1、准备一个展示区域的盒子,设置宽高;
2、准备一个存放所有图片的盒子,将所有图片依次放入,设置溢出隐藏

一、HTML布局

<div class="wrapper">
<div id="container"><!--图片展示区域盒子-->
  <ul id="imglist"><!--将所有图片并列展示盒子-->
     <li>
        <img src="./img/banner.jpg" alt="暂无图片">
     </li>
     <li>
       <img src="./img/banner0.jpg" alt="暂无图片">
     </li>
     <li>
        <img src="./img/banner.jpg" alt="暂无图片">
     </li>
     <li>
        <img src="./img/banner0.jpg" alt="暂无图片">
     </li>
  </ul>
  <ul id="point">
    <li class="selected"></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>
</div>

二、CSS样式

.wrapper{
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 870px;
}
#container{
    width: 1920px;
    height: 870px;
    position: absolute;
    top: 50%;
    left: 50%;
    overflow: hidden;
    transform: translate(-50%,-50%);
    -webkit-transform: translate(-50%,-50%);
    -moz-transform: translate(-50%,-50%);
    -ms-transform: translate(-50%,-50%);
    -o-transform: translate(-50%,-50%);
    background-color: #aa201c;
}
#imglist{
    width: 7680px;
    height: 870px;
    list-style-type: none;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
}
#imglist>li{
    width: 1920px;
    height: 870px;
    float: left;
    overflow: hidden;
}
#point{
    list-style-type: none;
    position: absolute;
    bottom: 5px;
    left: 50%;
    /* right: 0; */
    /* margin: auto; */
    width: 100%;
    height: 29px;
    line-height: 29px;
    z-index: 10;
}
#point>.selected{
    background-color: #aa201c;
}
#point>li{
    width: 16px;
    height: 16px;
    float: left;
    background-color: #c5c8ce;
    border-radius: 100%;
    margin-right: 10px;
    -webkit-border-radius: 100%;
}

三、JS代码

var wrap = document.getElementById("container");
var inner = document.getElementById("imglist");
var spanList = document.getElementById("point").getElementsByTagName("li");
var left = document.getElementById("left");
var right = document.getElementById("right");

var clickFlag = true;//设置左右切换标记位防止连续按
var time//主要用来设置自动滑动的计时器
var index = 0;//记录每次滑动图片的下标
var Distance = wrap.offsetWidth;//获取展示区的宽度,即每张图片的宽度
//定义图片滑动的函数
function AutoGo() {
    var start = inner.offsetLeft;//获取移动块当前的left的开始坐标
    var end = index * Distance * (-1);//获取移动块移动结束的坐标。
    //计算公式即当移动到第三张图片时,图片下标为2乘以图片的宽度就是块的left值。
    var change = end - start;//偏移量

    var timer;//用计时器为图片添加动画效果
    var t = 0;
    var maxT = 30;
    clear();//先把按钮状态清除,再让对应按钮改变状态
    if (index == spanList.length) {
        spanList[0].className = "selected";
    } else {
        spanList[index].className = "selected";
    }
    clearInterval(timer);//开启计时器前先把之前的清
    timer = setInterval(function () {
        t++;
        if (t >= maxT) {//当图片到达终点停止计时器
            clearInterval(timer);
            clickFlag = true;//当图片到达终点才能切换
        }
        inner.style.left = change / maxT * t + start + "px";//每个17毫秒让块移动
        if (index == spanList.length && t >= maxT) {
            inner.style.left = 0;
            index = 0;
            //当图片到最后一张时把它瞬间切换回第一张,由于都同一张图片不会影响效果
        }
    }, 17);
}
//编写图片向右滑动的函数
function forward() {
    index++;
    //当图片下标到最后一张把小标换0
    if (index > spanList.length) {
        index = 0;
    }
    AutoGo();
}
//编写图片向左滑动函数
function backward() {
    index--;
    //当图片下标到第一张让它返回到倒数第二张,
    //left值要变到最后一张才不影响过渡效果
    if (index < 0) {
        index = spanList.length - 1;
        inner.style.left = (index + 1) * Distance * (-1) + "px";
    }
    AutoGo();
}

//开启图片自动向右滑动的计时器
time = setInterval(forward, 3000);

//设置鼠标悬停动画停止
wrap.onmouseover = function () {
    clearInterval(time);
}
wrap.onmouseout = function () {
    time = setInterval(forward, 3000);
}
//遍历每个按钮让其切换到对应图片
for (var i = 0; i < spanList.length; i++) {
    spanList[i].onclick = function () {
        index = this.innerText - 1;
        AutoGo();
    }
}
//清除页面所有按钮状态颜色
function clear() {
    for (var i = 0; i < spanList.length; i++) {
        spanList[i].className = "";
    }
}

以上就是关于“用JS做轮播跑马灯原理是什么,具体如何操作”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注群英网络,小编每天都会为大家更新不同的知识。
群英智防CDN,智能加速解决方案
标签: JS轮播跑马灯

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服