第八周第四天笔记之轮播图实例完整版

轮播图完整版实例

  • 代码:
    • 执行代码:
     <!DOCTYPE html>
     <html lang="en">
     <head>
         <meta charset="UTF-8">
         <title>轮播图完整版实例</title>
         <style type="text/css">
             *{
                 margin: 0;
                 padding: 0;
                 list-style: none;
             }
             .wrap{
                 width: 750px;
                 height: 292px;
                 margin: 30px auto;
                 position: relative;
                 background: url("image1/7.png") center no-repeat lightslategray;
                 background-size: contain;
                 overflow: hidden;
             }
             .wrap .boxbanner{
                 position: absolute;
                 left: 0;
                 top: 0;
                 width: 3000px;
                 height: 292px;
             }
             .wrap .boxbanner img{
                 float: left;
                 width: 750px;
                 height: 292px;
                 vertical-align: middle;
             }
             .wrap ul{
                 position: absolute;
                 width: 140px;
                 left: 50%;
                 margin-left: -70px;
                 bottom: 10px;
             }
             .wrap ul li{
                 width: 20px;
                 height: 20px;
                 border-radius: 50%;
                 background-color: lightslategray;
                 float: left;
                 cursor: pointer;
             }
             .wrap ul li+li{
                 margin-left: 20px;
             }
             .wrap ul li.active{
                 background-color: orangered;
             }
             .wrap a{
                 position: absolute;
                 width: 43px;
                 height: 67px;
                 top:50%;
                 margin-top: -30px;
                 background-image: url("image1/6.png");
                 background-repeat: no-repeat;
                 opacity: 0.5;
                 filter: alpha(opacity=50);
                 display: none;
             }
             .wrap a.Left{
                 left: 10px;
                 background-position: 0 0;
             }
             .wrap a.Right{
                 right: 10px;
                 background-position: -63px 0;
             }
             .wrap a:hover{
                 opacity: 1;
                 filter: alpha(opacity=100);
             }
         </style>
     </head>
     <body>
     <div class="wrap">
         <div class="boxbanner">
             <!--<img src="image1/1.jpg" alt="">
             <img src="image1/2.jpg" alt="">
             <img src="image1/3.jpg" alt="">
             <img src="image1/4.jpg" alt="">-->
         </div>
         <ul>
             <!--<li class="active"></li>
             <li></li>
             <li></li>
             <li></li>-->
         </ul>
         <a href="javascript:void(0);" class="Left"></a>
         <a href="javascript:void(0);" class="Right"></a>
     </div>
     <script src="js/utils.js"></script>
     <script src="js/moveEffect.js"></script>
     <script src="js/animatSuper.js"></script>
     <script src="js/banner1.js"></script>
     </body>
     </html>
    
    • JS代码:
     //获取元素
     var oWrap=utils.getByClass("wrap")[0];
     var boxBanner=utils.getByClass("boxbanner",oWrap)[0];
     var oUl=oWrap.getElementsByTagName("ul")[0];
     var bLeft=utils.getByClass("Left",oWrap)[0];
     var bRight=utils.getByClass("Right",oWrap)[0];
     var aImg=boxBanner.getElementsByTagName("img");
     var aLi=oUl.getElementsByTagName("li");
     var data=null;
     //获取后台数据
     getData();
     function getData() {
         var xml=new XMLHttpRequest();
         xml.open("GET","ajax/data.txt",false);//获取数据时以html文件位置为主;
         xml.onreadystatechange=function () {
             if(xml.readyState==4 && /^2\d{2}$/.test(xml.status)){
                 data=utils.jsonParse(xml.responseText);
             }
         };
         xml.send(null);
     }
     //绑定数据
     domSert();
     function domSert() {
         var str="";
         var sli="";
         for(var i=0; i<data.length; i++){
             str+=`<img src="" realImg="${data[i].imgSrc}" alt="">`;
             sli+=i==0? '<li class="active"></li>': "<li></li>";
         }
         str+=`<img src="" realImg="${data[0].imgSrc}" alt="">`;
         boxBanner.innerHTML=str;
         //重新设置boxBanner的宽度
         boxBanner.style.width=aImg[0].offsetWidth*aImg.length+"px";
         oUl.innerHTML=sli;
         //重新设置ul的宽及margin-left值
         oUl.style.width=aLi[0].offsetWidth*aLi.length+utils.getCss(aLi[1],"marginLeft")*(aLi.length-1)+"px";
         oUl.style.marginLeft=-oUl.offsetWidth/2+"px";
     }
     //图片懒加载
     showImg();
     function showImg() {
         for(var i=0; i<aImg.length; i++){
             lazyImg(aImg[i]);
         }
     }
     function lazyImg(img) {
         if(img.loaded) return;
         var imgFrg=new Image();
         imgFrg.src=img.getAttribute("realImg");
         imgFrg.onload=function () {
             img.src=this.src;
             imgFrg=null;
             img.loaded=true;
         };
         imgFrg.onerror=function () {
             alert("图片懒加载失败");
             imgFrg=null;
             img.loaded=true;
         }
     }
     //进行轮播图设置
     //创建全局变量n
     var n=0;
     //自动轮播图设置
     var timer=setInterval(autoMove,3000);
     //运动过程
     function autoMove() {
         //边界点判断
         if(n>=aImg.length-1){
             n=0;
             boxBanner.style.left=-n*750+"px";
         }
         n++;
         //boxBanner.style.left=-n*750+"px";
         //n的值为1,2,3,4,1,2,3,4依次循环
         animate({
             ele:boxBanner,
             duration: 700,
             effect: 0,
             target:{
                 left: -n*750
             }
         });
         bannerTip();
     }
     //焦点跟随
     function bannerTip() {
         for(var i=0; i<aLi.length; i++){
             aLi[i].className=i==n%aLi.length?"active":null;
             /*if(i==n%aLi.length){
                 aLi[i].className="active";
             }else{
                 aLi[i].className=null;
             }*/
         }
     }
     //鼠标移入停止,鼠标移出继续
     oWrap.onmouseover=function () {
         clearInterval(timer);
         bLeft.style.display=bRight.style.display="block";
     };
     oWrap.onmouseout=function () {
         timer=setInterval(autoMove,2000);
         bLeft.style.display=bRight.style.display="none";
     };
     //焦点点击图片切换
     handleChange();
     function handleChange() {
         for(var i=0; i<aLi.length; i++){
             (function (index) {
                 aLi[index].onclick=function () {
                     n=index-1;
                     autoMove();
                 }
             })(i);
         }
     }
     //点击左右按钮切换
     bLeft.onclick=function () {
         if(n<=0){
             n=aImg.length-1;
             boxBanner.style.left=-n*750+"px";
         }
         n--;
         animate({
             ele:boxBanner,
             duration: 700,
             effect: 0,
             target:{
                 left: -n*750
             }
         });
         bannerTip();
     };
     bRight.onclick=autoMove;
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343