6-2作业题疑问
来源:6-2 作业题
安伯伯
2019-03-31 20:42:58
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="css/style.css"> <script type="text/javascript" src="js/script.js"></script> </head> <body> <div class="main" id="main"> <!-- 选项卡 --> <div class="nav" id="nav"> <ul> <li class="active">首页</li> <li>点我看看</li> <li>会自动的</li> <li>我的网站</li> </ul> </div> <!-- 轮播图 --> <div class="banner" id="pic"> <a href="#"> <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> <a href="#"> <div class="banner-slide slide4"></div> </a> </div> </div> </body> </html>
*{
margin: 0;
padding: 0;
font-family: "Microsoft YaHei";
}
ul{
list-style: none;
}
.main{
width: 1002px;
margin: 20px auto;
}
.nav{
width: 1000px;
height: 50px;
border: 1px dashed #f2f2f2; /*老师的建议是把border删掉*/
border-radius: 5px;
}
.nav ul li{
width: 250px;
height: 52px;
float: left;
line-height: 52px;
text-align: center;
font-size: 22px;
color: #666;
cursor: pointer;
}
.active{
background: #FFCC00;
font-weight: bolder;
border-radius: 5px;
}
.banner{
width: 1002px;
height: 500px;
position: relative;
}
.banner-slide{
width: 1002px; /*要插入背景图片,一定要给div设置高度,否则不显示*/
height: 500px;
position: absolute; /*相对banner进行定位,使图片层叠在一起*/
display: none;
}
.slide-active{
display: block;
}
.slide1{
background: url("../img/1.jpg") no-repeat;
}
.slide2{
background: url("../img/3.jpg") no-repeat;
}
.slide3{
background: url("../img/4.jpg") no-repeat;
}
.slide4{
background: url("../img/5.jpg") no-repeat;
}var index = 0,
timer = null;
function byId(n){
return typeof(n) === "string"?document.getElementById(n):n;
}
function slideImg(pics, main, lis){
//鼠标滑过时清除定时器
main.onmouseover = function(){
if(timer) clearInterval(timer);
}
//鼠标移出时,图片自动轮播
main.onmouseout = function(){
timer = setInterval(function(){
index++;
if(index >= pics.length){
index = 0;
}
changeImg(pics,lis);
},1000)
}
//调用onmouseout方法使其进入页面时自动轮播
main.onmouseout();
//点击导航栏,切换图片且导航栏高亮
for(var j = 0; j < lis.length; j++){
lis[j].id = j;
lis[j].onclick = function(){
index = this.id;
changeImg(pics,lis);
}
}
}
//封装一个切换图片及导航高亮的函数,方便调用
function changeImg(pics,lis){
for(var i = 0; i < pics.length; i++){
pics[i].style.display = "none";
lis[i].className = "";
}
pics[index].style.display = "block";
lis[index].className = "active";
}
window.onload = function(){
var pics = byId('pic').getElementsByTagName('div'),
main = byId('main'),
lis = byId('nav').getElementsByTagName('li');
slideImg(pics, main, lis);
}一点疑问:
我的实际运行效果中,每个li元素无法和大边框重叠,点评老师的建议是将nav类里面的border去掉,但题目的效果图中导航栏有一个虚线框,li元素也刚好重叠,这样的效果应该怎么设置css呢?
我的js代码这样写有问题吗?window.onload的写法中,是不是要尽量避免声明全局变量? 实际开发中,js文件是在head中引入比较好还是在body中引入比较好?因为用window.onload,变量的声明经常要写错。。
问题有点多,辛苦老师解答一下!谢谢。
1回答
同学你好!
1.因为li的高度是52px,所以应设置导航栏nav的高为52px,而每个li的宽度为250px,四个应为1000px,所以main和图片的宽度也应为1000 px,如下:

另外,作业效果图中是给main设置的border,如下图:


2.你的js代码这样写没有问题哦,在window.onload的写法中,如果在大部分的函数都要用到同一个变量,可以声明全局变量,JS文件建议在body的尾部引入,这样有利于加载速度。
希望能解决你的疑惑,祝学习愉快~
相似问题