能实现添加display属性,但是无法实现轮播
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >lunbo</ title > < link rel = "stylesheet" type = "text/css" href = "css/style.css" > </ head > < body > <!--外容器--> < div class = "main" id = "main" > <!--导航菜单--> <!-- <div class="menu-box"></div> --> <!--轮播图--> < div class = "banner" id = "banner" > <!--因为每个图片都是可以点的连接,所以要有a标签,如果不是死图可以a下加img,如果 是死图就加div,然后再在div的css里面引用图片 --> < a href = "" > <!-- 因为植入图片不一样,所以分别设置slide --> < div class = "banner-slide slide1 slide-active" ></ div > </ a > < a href = "" > < div class = "banner-slide slide2 " ></ div > </ a > < a href = "" > < div class = "banner-slide slide3 " ></ div > </ a > </ div > <!-- 轮播图上的左右按钮 --> < a href = "javascript:void(0)" class = "button prev" ></ a > < a href = "javascript:void(0)" class = "button next" ></ a > <!-- 圆点导航 --> < div class = "dots" > <!-- 按钮在同一行用span --> < span class = "active" ></ span > < span ></ span > < span ></ span > </ div > </ div > < script type = "text/javascript" src = "js/script.js" ></ script > </ body > </ html > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //全局变量 var index = 0, timer = null pics = document.getElementById("banner").getElementsByTagName("div"); len = pics.length; function slideImg(){ var main =document.getElementById("main"); //滑过清除定时器,离开继续 main.onmouseover=function(){ //滑过清除定时器 } main.onmouseout = function(){ timer = setInterval(function(){ index++; if(index >=len){ index=0; } // 切换图片 changeImg(); },2000); } } //切换图片 function changeImg(){ // 通过索引,选取到要改变的标签的索引,然后添加激活类 pics[index].style.display ="block"; } slideImg(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | *{ margin: 0; padding: 0; } ul{ list-style: none; } body{ font-family: "微软雅黑"; } .main{ width: 1200px; height: 460px; /*居中*/ margin:30px auto; /*超出范围的就隐藏,关键*/ overflow: hidden; position: relative; } .banner{ width: 1200px; height: 460px; /*超出范围的就隐藏,关键*/ /*overflow: hidden;*/ } .banner-slide{ /*都是占满所以大小一样*/ width: 1200px; height: 460px; /*都是平铺*/ background-repeat: no-repeat; display: none; } .slide1{ /*这里的路径是相对.css这个文件*/ background-image: url("../img/bg1.jpg"); } .slide2{ /*这里的路径是相对.css这个文件*/ background-image: url("../img/bg2.jpg"); } .slide3{ /*这里的路径是相对.css这个文件*/ background-image: url("../img/bg3.jpg"); } .slide-active{ display: block; } .button{ /*注意相对父盒子定位,他的父元素是main不是banner, 如果不设置父元素relative就变成相对body定位,这样移动后没那么灵活*/ position: absolute; width: 40px; height: 80px; left: 244px; top: 50%; margin-top: -40px; /*平铺,水平,水平居中*/ background: url(../img/arrow.png) no-repeat center center; } /*有链接按钮的都用a,因为a还可以设置hover*/ .button:hover{ background-color: #333; opacity: 0.8; /*ie的透明度*/ filter: alpha(opacity=80); } .prev{ transform: rotate(180deg); } .next{ /*因为之前设置了left,所以先让left自由*/ left: auto; right: 0; } .dots{ position: absolute; right: 20px; bottom: 24px; /*靠右对齐*/ text-align: right; } .dots span{ /*span把一行划分为几个部分,但是想让他显示宽高,就要让他block*/ display: inline-block; width: 12px; height: 12px; border-radius: 50%; /*rgba可以设置透明度,所以一般用这个设置颜色,这样就能根据背景颜色变化颜色*/ background: rgba(7,17,27,0.4); margin-right: 8px; line-height: 12px; /*添加阴影 :水平 垂直 阴影距离 模糊程度 颜色 内置/外置*/ box-shadow: 0 0 0 2px rgba(255,255,255,0.8) inset; cursor: pointer; } .dots .active{ background: #fff; box-shadow: 0 0 0 2px rgba(7,17,27,0.4) inset; } |
68
收起
正在回答
3回答
你好,根据代码,进行调整和建议,与自己代码对比,同时看新添加的注释内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | var index = 0, timer = null , pics = document.getElementById( "banner" ).getElementsByTagName( "div" ), len = pics.length; function slideImg() { var main = document.getElementById( "main" ); //滑过清除定时器,离开继续 main.onmouseover = function () { //滑过清除定时器 clearInterval(timer); //添加该语句,如没有该语句,每次触发一个定时器,所以会乱。 } main.onmouseout = function () { timer = setInterval( function () { index++; if (index >= len) { index = 0; } // 切换图片 changeImg(); }, 2000); } main.onmouseout(); // 添加该语句,让其进来时执行定时轮播图片。 } //切换图片 function changeImg() { // 通过索引,选取到要改变的标签的索引,然后添加激活类 for ( var i = 0; i < len; i++) { pics[i].style.display = "none" ; // 添加先将所有的都不显示,然后在指定显示的,没有这个,由于html 显示,覆盖相应的内容。 } pics[index].style.display = "block" ; } slideImg(); |
希望对你有帮助,祝学习愉快,欢迎采纳。
前端小白入门系列课程
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36712 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧