JS案例:轮播图第一代

初级版轮播图,实现左右按钮切换图片,下方小点切换图片,简单的自动轮播

代码:(缺点,固定图片张数和宽度高度,每次用时都需要复制,代码累赘,多处功能不完善)

Html:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Page Title</title>
        <link rel="stylesheet" href="./css/main.css">
    </head>

    <body>
        <div id="box">
            <div id="pic_box"></div>
            <img id="left" src="img/left.png" alt="">
            <img id="right" src="img/right.png" alt="">
            <ul id="dot_box"></ul>
        </div>
        <script src="./js/main.js"></script>
    </body>

</html>

Css:

* {
    margin: 0;
    padding: 0;
}

#box {
    margin: 50px auto;
    width: 960px;
    height: 320px;
    background: lightcoral;
    position: relative;
    overflow: hidden;
}

#pic_box {
    height: 320px;
    width: 4800px;
    background: lightblue;
    position: absolute;
    transition: all 1s;
}

#left {
    position: absolute;
    top: 130px;
    left: 10px;
}

#right {
    position: absolute;
    top: 130px;
    right: 10px;
}

ul {
    list-style: none;
    position: absolute;
    bottom: 20px;
    left: 400px;
}

li {
    width: 20px;
    height: 20px;
    list-style: none;
    border-radius: 50%;
    border: 3px solid lightcoral;
    float: left;
    margin-left: 5px;
}

JS:

var pic_box,box,left,right,dot_box,dot,count = 0; //定义装图片的盒子,最外面的大盒子,左右按键,盒子下面的小点容器,及当前小点容器,计数值,记录当前显示的图片张数
var arr_img = ["a.jpeg","b.jpeg","c.jpeg","d.jpeg","e.jpeg"];
//图片路径
init();

function init() { //入口函数,获取所有元素并赋值给变量
    dot_box = document.getElementById("dot_box");
    pic_box = document.getElementById("pic_box");
    box = document.getElementById("box");
    left = document.getElementById("left");
    right = document.getElementById("right");
    pic_box.style.left = 0; //放图片的盒子左边相对父元素(最大的盒子)定位初始化
    for (var i = 0; i < arr_img.length; i++) { //新建图片及宽高
        var img = new Image();
        img.src = "img/" + arr_img[i];
        img.style.width = "960px";
        img.style.height = "320px";
        pic_box.appendChild(img);
        var li = document.createElement("li"); //新建盒子下面的小点(点击切换)
        dot_box.appendChild(li);
    }
    dot = dot_box.firstElementChild; //默认第一个小点的样式
    dot.style.backgroundColor = "lightcoral";
    //给盒子下面的小点和左右按钮增加监听事件
    left.addEventListener("click",change_pic);
    right.addEventListener("click",change_pic);
    dot_box.addEventListener("click",changedot);
}

function change_pic(e) {
    //左按钮
    if (this === left) {
        count--; //计数器减减,直到小于零时跳到最后一张
        if (count < 0) {
            count = arr_img.length - 1;
        }
        //右按钮
    } else if (this === right) {
        count++; //计数器加加,直到大于总图片数减一时跳到第一张
        if (count > arr_img.length - 1) {
            count = 0;
        }
    }
    pic_box.style.left = -count * 960 + "px"; //单击后切换定位位置,达到水平移动
    count_pic(); //每次移动后改变小点位置
}

function changedot(e) { //点击小点让计数器的值等于点击的那个小点的索引,移动图片,切换小点
    for (var j = 0; j < arr_img.length; j++) {
        if (dot_box.children[j] === e.target) {
            count = j;
        }
    }
    pic_box.style.left = -count * 960 + "px";
    count_pic();
}

function count_pic() {
    dot.style.backgroundColor = "transparent"; //前一个小点背景透明
    dot = dot_box.children[count]; //将被切换的小点赋值给当前小点,使其根据计数器切换
    dot.style.backgroundColor = "lightcoral";
}

function autochange() { //自动轮播,3秒切换一次
    count++;
    if (count > arr_img.length - 1) {
        count = 0;
    }
    pic_box.style.left = -count * 960 + "px";
    count_pic();
}
setInterval(autochange,3000);

 

原文地址:https://blog.csdn.net/time_____

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)