简易轮播图

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .banner{width:1000px;height:300px;margin: 20px auto;position: relative;overflow: hidden;}
        /* .imgbox{} */
        .imgbox img{width: 1000px;height:300px;position: absolute;left:0;top:0;overflow: hidden}
        .imgbox img:nth-child(1){z-index: 1}
        /* .imgbox a img{width: 1000px;height: 300px} */

        .btns input{position: absolute;top:130px;width:40px;height:40px;border: none;background: rgba(200,200,200,0.5);z-index: 9999999;}
        #left{left:0}
        #right{right:0}
    </style>
</head>
<body>
    <div class="banner">
        <div class="imgbox">
            <img src="img/1.jpg" >
            <img src="img/2.jpg" >
            <img src="img/3.jpg" >
            <img src="img/4.jpg" >
            <img src="img/5.jpg" >
        </div>
        <div class="btns">
            <input type="button" id="left" value="<<<">
            <input type="button" id="right" value=">>>">
        </div>
    </div>
</body>
<script src="../move.js"></script>
<script>
    function Banner(){
        // 1.选择元素
        this.imgs = document.querySelector(".imgbox").children;
        this.left = document.querySelector("#left");
        this.right = document.querySelector("#right");

        // 自定义的默认显示的图片:索引
        this.index = 0;

        // 为了显示图片设置的层级
        this.i = 2;

        // 2.绑定点击事件
        this.init()
    }
    Banner.prototype.init = function(){
        var that = this;
        // 绑定事件...
        this.right.onclick = function(){
            // 3.计算索引
            that.changeIndex();
        }
        this.left.onclick=function () {
            that.changeIndex2();//为什么不用this?因为这里的this绑定的是点击的元素,如果用this指的是实例

        }
    }

    Banner.prototype.changeIndex = function(){
        // 计算索引
        if(this.index === this.imgs.length-1){
            this.index = 0;
        }else{
            this.index++;
        }
        // 4.根据索引,显示图片
        this.display()
    }
    Banner.prototype.display = function(){

        // 显示图片
        this.imgs[this.index].style.zIndex = this.i++;

        this.imgs[this.index].style.width = "0";
        this.imgs[this.index].style.height = "0";
        move(this.imgs[this.index],{
            width:1000,
            height:150
        },function(){
            move(this.imgs[this.index],{height:300})
        }.bind(this))
    }
    Banner.prototype.changeIndex2=function () {
        if(this.index==0){
            this.index=this.imgs.length-1
        }
        else{
            this.index--;//点击的时候索引就加1

        }
        this.display2()

    };
    Banner.prototype.display2=function () {
        this.imgs[this.index].style.zIndex=this.i++;
        this.imgs[this.index].style.left = "2000px";
        move(this.imgs[this.index],{
            left:0
        });
    }
    new Banner();
    function move(ele,json,callback){
        clearInterval(ele.t);
        ele.t = setInterval(() => {
            var onoff = true;
        for(var i in json){
            var iNow = parseInt(getStyle(ele,i));
            var speed = (json[i] - iNow)/6;
            speed = speed<0 ? Math.floor(speed) : Math.ceil(speed);
            if(iNow != json[i]){
                onoff = false;
            }
            ele.style[i] = iNow + speed + "px";
        }
        if(onoff){
            clearInterval(ele.t);
            callback && callback();
        }
    }, 30);
    }
    function getStyle(ele,attr){
        if(ele.currentStyle){
            return ele.currentStyle[attr];
        }else{
            return getComputedStyle(ele,false)[attr];
        }
    }
</script>
</html>

原文地址:https://www.cnblogs.com/hy96/p/11461271.html

时间: 2024-12-17 21:55:50

简易轮播图的相关文章

原生JS实现简易轮播图

原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = function() { var tab = 0; var loop_imgs = new Array("img/l1.jpg", "img/l2.jpg", "img/l3.jpg", "img/l4.jpg", "img/l5

jQuery实现简易轮播图的效果

(图片素材取自于小米官网) 刚开始接触jQuery的学习,个人觉得如果为了实现多数的动态效果,jQuery的确很简易方便. 下面简易的轮播图效果,还请前辈多多指教~ (努力学习react vue angular中,加油~~~) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> &

jq 方法 简易轮播图

css + body部分 注意img父级的设置 <style> * { margin: 0; padding: 0; } ul li { list-style: none; } #box { height: 260px; width: 500px; margin: 50px auto; position: relative; overflow: hidden; } /* 这里img的父级xian不设置宽度 */ /* 下面根据图片的数量 */ #box div { position: abso

用CSS代码编写简易轮播图

废话不多说,直接上代码 <!doctype html> <html> <head> <title></title> <meta charset="utf-8" /> <style type="text/css"> .container{ width: 1000px; height: 500px; margin: 50px auto; overflow: hidden; backgro

Jquery 轮播图简易框架

=====================基本结构===================== <div class="carousel" style="width: 800px;height: 378px;"> <ul class="carousel-imgs"> <li> <a href="#"><img src="picture.jpg" alt=&

层叠轮播图的简易制作

之前做过很多不同样式的轮播图,不是通过改变left值使图片左右移动的,就是改变透明度实现轮播图的,偶然在网易云上看到了层叠轮播图,它转换图片的方式和其他轮播图有些不同,我从来没做过这种轮播图,思考了很久该用什么方法做,终于做出来了一个简陋的成品.由于轮播图的图片是网上找来的,所以我做了模糊处理,用清晰的图片效果更好,这里是我的一个演示(没有录制鼠标):  思路和方法 我所能想出的最简单的方法就是先给轮播图中的几张图片特定的class值,再通过改变图片class的值来改变他们的位置 话不多说,上代

横冲直撞vue(第四篇):v-model、指令系统总结、指令系统示例轮播图实现、指令系统示例跑马灯效果实现、在vue中使用样式的方式

一. v-model v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素. 尽管有些神奇,但v-model本质上不过是语法糖.它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理. v-model在内部为不同的输入元素使用不同的属性并抛出不同的事件: text 和 textarea 元素使用 value 属性和 input 事件: checkbox

jQuery----无缝轮播图

1.效果 2.html代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/iconfont.css"> <link rel="stylesh

Android自己定义控件之轮播图控件

背景 近期要做一个轮播图的效果.网上看了几篇文章.基本上都能找到实现,效果还挺不错,可是在写的时候感觉每次都要单独去又一次在Activity里写一堆代码.于是自己封装了一下.这里仅仅是做了下封装成一个控件,不必每次反复写代码了. 效果图 实现分析 轮播图的功能就是实现左右滑动的广告.图片信息展示,那我们就用ViewPager来实现,由于考虑到用户体验,我们还须要在以下加一个指示器来标示滑动到了第几张轮播图.指示器我们能够用一个线性布局来依据要展示的轮播图设置显示的View,我们要做这种一个控件没