首页 > 编程语言 >直播带货源码,通过js实现轮播图的效果

直播带货源码,通过js实现轮播图的效果

时间:2022-10-07 14:22:09浏览次数:67  
标签:style 轮播 display js 直播 active circle document id

直播带货源码,通过js实现轮播图的效果

<!DOCTYPE html>
<html>
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
            box-sizing: border-box;
        }
 
        html,
        body {
            width: 100%;
            height: 100%;
        }
 
        img {
            vertical-align: middle;
        }
 
        a {
            text-decoration: none;
        }
 
        ul {
            list-style: none;
        }
 
        .box {
            position: relative;
            width: 800px;
            height: 300px;
            margin: 100px auto;
        }
 
        /* 轮播主体 */
        nav a {
            position: absolute;
            top: 0;
            left: 0;
            width: 800px;
            height: 300px;
        }
 
        nav img {
            width: 100%;
            height: 100%;
        }
 
        nav a:first-child {
            z-index: 1;
        }
 
        /* 左右按钮 */
        .prev,
        .next {
            position: absolute;
            top: 50%;
            transform: translateY(-50%);
            width: 30px;
            height: 30px;
            text-align: center;
            line-height: 30px;
           
            z-index: 1;
            cursor: pointer;
            z-index: 999;
        }
 
        .prev {
            left: 0;
        }
 
        .next {
            right: 0;
        }
 
        /* 小圆点 */
        .circle {
            display: flex;
            position: absolute;
            left: 50%;
            bottom: 2px;
            transform: translateX(-50%);
            z-index: 999;
        }
 
        .circle li {
            width: 10px;
            height: 10px;
            background-color: skyblue;
            border-radius: 50%;
            margin: 10px;
            cursor: pointer;
        }
 
        .active {
            background-color: pink !important;
        }
    </style>
</head>
 
<body>
    <div>
        <!-- 轮播图 -->
        <nav>
            <a href="javascript:;" data-id="0" style="display: block;"><img src="../images/1.webp" alt=""></a>
            <a href="javascript:;" data-id="1"><img src="../images/2.webp" alt=""></a>
            <a href="javascript:;" data-id="2"><img src="../images/3.webp" alt=""></a>
            <!-- 左右按钮 -->
            <div>&lt;</div>
            <div>&gt;</div>
        </nav>
        <!-- 小圆点 -->
        <ul>
            <li data-id="0"></li>
            <li data-id="1"></li>
            <li data-id="2"></li>
        </ul>
    </div>
    <script>
        const box = document.querySelector('.box')
        const nav = document.querySelector('nav')
        const as = document.querySelectorAll('nav a')
        const prev = document.querySelector('.prev')
        const next = document.querySelector('.next')
        const circle = document.querySelector('.circle')
        // 获取显示的轮播图
        function showId() {
            let id = +document.querySelector("nav>a[style='display: block;']").dataset.id
            return id
        }
        // 利用事件委托,实现小圆点功能
        circle.addEventListener('click', function (e) {
            if (e.target.nodeName === 'LI') {
                // 排他,给小圆点添加active样式
                document.querySelector('.active').classList.remove('active')
                e.target.classList.add('active')
                as.forEach(item => item.style.display = 'none')
                nav.children[e.target.dataset.id].style.display = 'block'
            }
        })
        // 左按钮功能
        prev.addEventListener('click', function () {
            const id = showId()
            as.forEach(item => item.style.display = 'none')
            document.querySelector('.active').classList.remove('active')
            if (id <= 0) {
                as[as.length - 1].style.display = 'block'
                circle.children[as.length - 1].classList.add('active')
            } else {
                as[id - 1].style.display = 'block'
                circle.children[id - 1].classList.add('active')
            }
        })
        // 右按钮功能
        next.addEventListener('click', function () {
            const id = showId()
            as.forEach(item => item.style.display = 'none')
            document.querySelector('.active').classList.remove('active')
            if (id >= as.length - 1) {
                as[0].style.display = 'block'
                circle.children[0].classList.add('active')
            } else {
                as[id + 1].style.display = 'block'
                circle.children[id + 1].classList.add('active')
            }
        })
        // 自动轮播功能
        let timer = setInterval(() => {
            next.click()
        }, 1000)
        // 鼠标经过,暂停轮播
        box.addEventListener('mouseenter', function () {
            clearInterval(timer)
        })
        // 鼠标离开,继续轮播
        box.addEventListener('mouseleave', function () {
            timer = setInterval(() => {
                next.click()
            }, 1000)
        })
    </script>
</body>
 
</html>

​以上就是 直播带货源码,通过js实现轮播图的效果,更多内容欢迎关注之后的文章

 

标签:style,轮播,display,js,直播,active,circle,document,id
From: https://www.cnblogs.com/yunbaomengnan/p/16759665.html

相关文章

  • 直播小程序源码,实现瀑布流布局的两种方式
    直播小程序源码,实现瀑布流布局的两种方式实现方式方式一:在页面遍历数组时使用if判断当前下标是基数还是偶数,将一个数组拆分为两个数组左右显示 <viewclass="photos"......
  • autojs 企业微信 一键上传
    app.startActivity({action:"android.intent.action.VIEW",data:"alipays://platformapi/startapp?appId=2018062060350751&page=%2Fpages%2Fweb%2Fweb%3Furl%3Dht......
  • HttpClient发送Post请求传递json、普通参数
    importcom.alibaba.fastjson.JSONObject;importorg.apache.http.HttpEntity;importorg.apache.http.NameValuePair;importorg.apache.http.client.entity.UrlEncod......
  • Springboot 之 Filter 实现 Gzip 压缩超大 json 对象
    简介在项目中,存在传递超大json数据的场景。直接传输超大json数据的话,有以下两个弊端占用网络带宽,而有些云产品就是按照带宽来计费的,间接浪费了钱传输数据大导致......
  • autojs 企业微信 一键上传 健康码 行程码
    auto();//打开autojs权限//https://pro.autojs.org/docs/#/zh-cn/coordinatesBasedAutomation?id=setscreenmetricswidth-height//设置屏幕分辨率的坐标setScreenMe......
  • autojs 小红书scheme
    https://blog.csdn.net/u013508278/article/details/117128016https://blog.csdn.net/weixin_38927522/article/details/125540259?utm_medium=distribute.pc_relevant.no......
  • JSON
    json在线解析:https://www.sojson.com/json基础入门:https://blog.csdn.net/Rao_Limon/article/details/80011601学习网站:http://c.biancheng.net/json/what-is-json.html......
  • js 关键词高亮显示
    <!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>js关键字高亮显示</title></head><body><inputtype......
  • JS基础 -- if分别使用return、break、continue的区别
    /**if分别使用return、break、continue的区别**break:使用break可以退出当前的循环**continue:用于跳过当次循环**return:使用return可以结束整个函数**下面用......
  • .NET 开源项目推荐之 直播控制台解决方案 Macro Deck
    流媒体是一个吸引数亿万玩家的严肃行业。最受欢迎的游戏锦标赛的转播获得了数百万的观看次数,从商业角度来看,这也使游戏行业变得有趣。在直播圈有个很受欢迎的直播控制台程......