利用JavaScript的控制图片的CSS位置实现轮播图功能

简介: 利用JavaScript的控制图片的CSS位置实现轮播图功能上篇博客我们说到了如何给轮播图添加定时器效果,当然前面的两个轮播图功能实现都是通过改变图片的路径(图片名称取巧)实现的,有一定的局限性。今天说一说怎样通过改变位置实现轮播功能。效果如图:在这里插入图片描述HTML代码: <div class="box" id="box"> <ul class="min_box" id="banner"> <li class="banner"></li> <li class="banner"></li>

利用JavaScript的控制图片的CSS位置实现轮播图功能




上篇博客我们说到了如何给轮播图添加定时器效果,当然前面的两个轮播图功能实现都是通过改变图片的路径(图片名称取巧)实现的,有一定的局限性。今天说一说怎样通过改变位置实现轮播功能。效果如图:

2020060500411786.gif

在这里插入图片描述


HTML代码:

<divclass="box"id="box"><ulclass="min_box"id="banner"><liclass="banner"></li><liclass="banner"></li><liclass="banner"></li><liclass="banner"></li></ul><divclass="btn btn_l">&lt;</div><divclass="btn btn_r">&gt;</div><ulclass="points"><liclass="red blue"></li><liclass="red"></li><liclass="red"></li><liclass="red"></li></ul></div>


CSS代码:


* {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .box {
            width: 500px;
            height: 300px;
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
            border: 20px yellow solid;
            overflow: hidden;
        }
        img {
            width: 500px;
            height: 300px;
        }
        .btn,
        .points {
            position: absolute;
            cursor: pointer;
        }
        .btn {
            width: 20px;
            height: 40px;
            background: green;
            color: white;
            font-size: 20px;
            text-align: center;
            line-height: 40px;
            top: 50%;
            margin-top: -20px;
            z-index: 999;
        }
        .btn_l {
            left: 0;
        }
        .btn_r {
            right: 0;
        }
        .points {
            width: 100px;
            height: 20px;
            border-radius: 20px;
            background: skyblue;
            left: 50%;
            margin-left: -50px;
            bottom: 30px;
        }
        .points .red {
            width: 15px;
            height: 15px;
            border-radius: 50%;
            background-color: red;
            float: left;
            margin: 2.5px 5px;
        }
        .points li.blue {
            background: blue;
        }
        .min_box {
            width: 2000px;
            height: 300px;
            background: skyblue;
            position: absolute;
            top: 0px;
            left: 0px;
        }
        .min_box .banner {
            width: 500px;
            height: 300px;
            float: left;
        }
        .min_box .banner:nth-of-type(1){
            background: url('img/1.jpg') no-repeat center/100% 100%;
        }
        .min_box .banner:nth-of-type(2){
            background: url('img/2.jpg') no-repeat center/100% 100%;
        }
        .min_box .banner:nth-of-type(3){
            background: url('img/3.jpg') no-repeat center/100% 100%;
        }
        .min_box .banner:nth-of-type(4){
            background: url('img/4.jpg') no-repeat center/100% 100%;
        }


JS代码:


 

// 1.获取元素
    var oBtn_l = document.getElementsByClassName("btn_l")[0];
    var oBtn_r = document.getElementsByClassName("btn_r")[0];
    var aLi = document.getElementsByClassName("red");
    var oBox = document.getElementById("box");
    var oBanner = document.getElementById("banner");
    var index = 0;
    var timer;
    function clear() {
        for (var i = 0; i <aLi.length;i++){aLi[i].className = "red"}aLi[index].className = "red blue";}//右键点击事件oBtn_r.onclick = function(){next();}functionnext(){index ==3?index = 0:index++;oBanner.style.left = -(index*500)+"px";clear();}//左键点击事件oBtn_l.onclick = function(){index ==0?index = 3:index--;oBanner.style.left = -(index*500)+"px";clear();}//四个点for(vari = 0;i< aLi.length; i++) {        aLi[i].a = i;
        aLi[i].onclick = function () {
            index = this.a;
            oBanner.style.left = -(index * 500) + "px";
            clear();
        }
    }
    // 添加定时器
    timer = setInterval(next, 1000);
    // 鼠标移入时,清除定时器    
    oBox.onmouseover = function () {
        clearInterval(timer);
    }
    // 鼠标移出时
    oBox.onmouseout = function () {
        timer = setInterval(next, 1000);
    }


总结: 这里实现轮播图的效果和前面两种的主要区别在于对图片的命名没有要求。然后通过改变小盒子相对于大盒子的左偏移量来改变显示的图片。


视频讲解链接:
https://www.bilibili.com/video/BV1Kg4y1q7Lr/

相关文章
|
1天前
|
JavaScript 前端开发 流计算
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理
|
2天前
|
前端开发
css实现动态旋转图片,
css实现动态旋转图片,
4 0
|
2天前
|
前端开发 JavaScript UED
CSS顶部与JS后写:网页渲染的奥秘
CSS顶部与JS后写:网页渲染的奥秘
|
3天前
|
JavaScript 前端开发 测试技术
编写JavaScript模块化代码主要涉及将代码分割成不同的文件或模块,每个模块负责处理特定的功能或任务
【5月更文挑战第10天】编写JavaScript模块化代码最佳实践:使用ES6模块或CommonJS(Node.js),组织逻辑相关模块,避免全局变量,封装细节。利用命名空间和目录结构,借助Webpack处理浏览器环境的模块。编写文档和注释,编写单元测试以确保代码质量。通过这些方法提升代码的可读性和可维护性。
13 3
|
3天前
|
JavaScript 前端开发
JavaScript实现识别二维码信息功能
JavaScript实现识别二维码信息功能
10 1
|
3天前
|
JavaScript
js实现全屏功能——易懂版
js实现全屏功能——易懂版
9 0
|
3天前
|
前端开发 JavaScript 索引
CSS常见用法 以及JS基础语法
CSS常见用法 以及JS基础语法
13 0
|
3天前
|
JavaScript 前端开发
js和css以及js制作弹窗
js和css以及js制作弹窗
12 1
|
3天前
|
前端开发 UED 开发者
【专栏:HTML与CSS实战项目篇】制作一个响应式图片画廊
【4月更文挑战第30天】本文介绍了如何使用HTML和CSS创建响应式图片画廊。响应式画廊能根据用户设备屏幕大小自动调整布局。首先规划结构,包含一个图片容器和每张图片元素,并为图片提供替代文本。接着设计样式,设置图片大小、间距和视觉效果。然后通过媒体查询实现响应式设计,根据不同屏幕尺寸调整图片排列。同时考虑性能优化,如压缩图片和使用懒加载技术。最后,测试和调试确保画廊在各种设备上正常工作。这个过程强调了响应式设计和用户体验的重要性。
|
3天前
|
JavaScript 前端开发 API
如何利用JavaScript和Electron构建具有丰富功能的桌面应用
【4月更文挑战第30天】如何利用JavaScript和Electron构建具有丰富功能的桌面应用
5 0