zoukankan      html  css  js  c++  java
  • 轮播图

    function Banner(id,url) {
    this.box = document.getElementById(id);//获取最外层盒子
    this.url = url;
    this.oUl = utils.getByClass('ul_box',this.box)[0];// 获取 ul 条
    this.data = null;// 存数据
    this.boxW = utils.css(this.box,'width');//存储盒子的宽度
    this.index = 0;// 要显示的图片的索引
    this.n = 0;// 存储图片的个数
    this.leftBtn = utils.getByClass('leftBtn',this.box)[0];
    this.rightBtn = utils.getByClass('rightBtn',this.box)[0];
    this.tipBox = utils.getByClass('tip_box',this.box)[0];
    this.tips = this.tipBox.getElementsByClassName('tip');
    this.timer = null;// 存放定时器
    }
    Banner.prototype = {
    constructor: Banner,
    getData: function () {
    //获取数据
    var xhr = new XMLHttpRequest();
    xhr.open('get',this.url,false);
    xhr.onreadystatechange = () => {
    if(xhr.readyState == 4 && /^2d{2}$/.test(xhr.status)){
    this.data = utils.toJson(xhr.responseText);
    }
    };
    xhr.send();
    },
    giveHtml: function () {
    //把数据放到页面上
    var str = '';//用来存储拼接的DOM字符串
    var tipStr = '';// 用来存储 tip字符串
    this.data.push(this.data[0]);
    this.data.forEach((item,ind)=>{
    var {pic,title} = item;
    str += `<li>
    <img src="${pic}" alt="">
    <p>${title}</p>
    </li>`;
    if(ind < this.data.length -1){
    tipStr += `<li class="tip ${ind==0 ? 'current' : ''}">${ind+1}</li>`;
    }
    });
    utils.css(this.oUl,{
    this.data.length*this.boxW,
    position:'relative'
    });
    this.n = this.data.length;
    this.oUl.innerHTML = str;
    this.tipBox.innerHTML = tipStr;
    },
    play: function () {
    //让图片滚动 控制 oul的left值
    if(utils.css(this.oUl,'left')%this.boxW != 0)return;
    this.index++;// index == this.n-1 是显示最后一张图;做完++后 index变成了this.n
    if(this.index >= this.n){//右边界
    utils.css(this.oUl,'left',0);
    this.index = 1;
    }
    if(this.index == -1){// 左边界
    utils.css(this.oUl,'left',-this.boxW*(this.n-1));
    this.index = this.n - 2;
    }

    // this.index 0 1 2 3 4
    // this.tips 0 1 2 3
    [...this.tips].forEach((item)=>{
    utils.removeClass(item,'current');
    });
    if(this.index == this.n-1){
    utils.addClass(this.tips[0],'current');
    }else {
    utils.addClass(this.tips[this.index],'current');
    }

    // utils.css(this.oUl,'left',-this.boxW*this.index);
    myAnimate(this.oUl,1000,{left:-this.boxW*this.index},'easeOut');
    },
    autoPlay: function () {
    this.timer = setInterval(function () {
    banner.play();
    },3000);
    },
    eventFn: function () {
    //做事件绑定
    this.box.onmouseenter = () => {
    utils.css(this.leftBtn,'display','block');
    utils.css(this.rightBtn,'display','block');
    clearInterval(this.timer);
    };
    this.box.onmouseleave = ()=>{
    utils.css(this.leftBtn,'display','none');
    utils.css(this.rightBtn,'display','none');
    this.autoPlay();
    };
    this.rightBtn.onclick = () => {
    clearInterval(this.timer);
    this.play();
    };
    this.leftBtn.onclick = ()=>{
    if(utils.css(this.oUl,'left')%this.boxW !=0 )return;
    clearInterval(this.timer);
    this.index-=2;
    this.play();
    }
    },
    tipClick:function () {
    for(let i = 0; i < this.tips.length;i++){
    this.tips[i].onclick = () => {
    if(this.index == this.n-1){
    utils.css(this.oUl,'left',0);
    }
    this.index = i-1;
    this.play();
    }
    }
    },
    init:function () {
    this.getData();
    this.giveHtml();
    this.autoPlay();
    this.eventFn();
    this.tipClick();
    }
    };

    var banner = new Banner('box','data.json');
    banner.init();
    // banner.giveHtml();
    // // var timer = setInterval(function () {
    // // banner.play();
    // // },3000);
    // banner.autoPlay();
    // banner.eventFn();
    // banner.tipClick();
    // console.log(banner.data);
    var banner2 = new Banner('box2','data.json');
    banner2.init();
  • 相关阅读:
    Python(条件判断和循环)
    大端还是小端
    c语言程序设计 字符串拷贝拷贝演变与初衷
    内存 匹配串
    多态 C2
    多态 C1
    判断是否存在不合法字符(C++)
    va_start、vsprintf、va_end
    java中instanceof用法
    c++ vector相关
  • 原文地址:https://www.cnblogs.com/zhangyongxi/p/9613793.html
Copyright © 2011-2022 走看看