能实现添加display属性,但是无法实现轮播
<!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>
//全局变量
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();*{
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回答
你好,根据代码,进行调整和建议,与自己代码对比,同时看新添加的注释内容:
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积分~
来为老师/同学的回答评分吧
0 星