我想让圆点随着图片增加而增加,然后怎加了代码,完整代码如下,老师给看一下这样子写是否规范?
// 封装一个代替getElementById()的方法
function byId( id ){
return typeof(id) === 'string'? document.getElementById(id): id;
}
// 全局变量
var main = byId('main'),
bannerBox = byId('bannerBox'),
oLi = bannerBox.getElementsByTagName('li'),
liLen = oLi.length,
prev = byId('prev'),
next = byId('next'),
dots = byId('dots'),
dotSpan = null,
index = 0,
timer = null;
function slideImg(){
// 自动添加dots下的span
for( var i=0; i<liLen; i++ ){
dots.innerHTML += '<span></span>';
dotSpan = dots.getElementsByTagName('span');
}
// 利用间歇调用,实现自动切换图片
function autoChange(){
timer = setInterval(function(){
// 判断索引值
index++;
if( index>=liLen ){
index = 0;
}
// 调用切换图片函数
changeImg();
},3000)
}
autoChange();
// 鼠标划过main,清除定时器
main.onmouseover = function(){
// 清除定时器
if( timer ){ clearInterval( timer ); }
}
// 鼠标离开,启动定时器,开始切换图片
main.onmouseout = autoChange;
// 遍历所有圆点,且绑定点击事件,点击圆点切换图片
for( var j=0; j<liLen; j++ ){
dotSpan[0].className = 'active';
// 给所有span添加一个id的属性,值为j,作为当前span的索引
dotSpan[j].id = j;
dotSpan[j].onclick = function(){
index = this.id;
// 调用changeImg函数,切换图片
changeImg();
}
}
// 下一张
next.onclick = function(){
index++;
if( index>=liLen ){
index=0;
}
changeImg();
}
// 上一张
prev.onclick = function(){
index--;
if( index<0){
index= liLen-1;
}
changeImg();
}
}
function changeImg(){
for( var i=0; i<liLen; i++ ){
oLi[i].style.display = 'none';
dotSpan[i].className = '';
}
oLi[index].style.display = 'block';
dotSpan[index].className = 'active';
}
slideImg();16
收起
正在回答
4回答
你好,经测试,实现的效果很好,想法也很棒,继续加油!
祝学习愉快~
桔七
2018-01-28 12:50:17
@charset "utf-8";
/* reset */
*{
margin: 0;
padding: 0;
}
ul{
list-style: none;
}
body{
font-family: "微软雅黑";
color: #14191e;
}
/* main */
.main{
width: 1200px;
height: 460px;
margin: 50px auto;
overflow: hidden;
}
/* banner */
.banner,.banner ul{
width: 1200px;
height: 460px;
position: relative;
}
.banner-imgs li{
position: absolute;
display: none;
}
.banner-imgs li.active{
display: block;
}
.btn{
width: 40px;
height: 80px;
position: absolute;
top: 50%;
left: 244px;
margin-top: -40px;
background: #f00;
background: url(../img/arrow.png) no-repeat center;
}
.btn:hover{
background-color: #333;
opacity: 0.8;
filter: alpha(opacity=80);
}
.prev{
left: 244px;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
.next{
right: 0;
left: auto;
}
.dots{
position: absolute;
right: 20px;
bottom: 24px;
text-align: right;
font-size: 0;
}
.dots span{
display: inline-block;
width: 12px;
height: 12px;
border-radius: 50%;
background: rgba(7,17,27,0.4);
box-sizing: border-box;
border: 1px solid #fff;
cursor: pointer;
margin: 4px;
}
.dots span:hover,
.dots span.active{
background-color: #fff;
border-color: rgba(7,17,27,0.4);
}和HTML
<div class="main" id="main"> <!-- 图片轮播 --> <div class="banner"> <!-- 图片盒子 --> <ul class="banner-imgs" id="bannerBox"> <li class="active"> <a href="" class="active"> <img src="img/bg1.jpg" alt=""/> </a> </li> <li> <a href=""> <img src="img/bg2.jpg" alt=""/> </a> </li> <li> <a href=""> <img src="img/bg3.jpg" alt=""/> </a> </li> <li> <a href=""> <img src="img/bg2.jpg" alt=""/> </a> </li> <li> <a href=""> <img src="img/bg3.jpg" alt=""/> </a> </li> </ul> <!-- 左右箭头 --> <a href="javascript:void(0);" class="btn prev" id="prev"></a> <a href="javascript:void(0);" class="btn next" id="next"></a> <!-- 圆点按钮 --> <div class="dots" id="dots"> <!--<span class="active"></span> <span></span> <span></span>--> </div> </div> </div>
HTML5与CSS3实现动态网页 2018
- 参与学习 1887 人
- 提交作业 4643 份
- 解答问题 5760 个
有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星