JS原生项目——五、实现轮播图样式

五、实现轮播图样式

1.轮播图样式

同行显示的inline-block元素之间经常会出现一定的空隙,这就是“换行符/空格间隙问题”。
解决方法:

方法一:解决元素之间的空白符将设置有display:inline-block的写到一行
方法二:为父元素中设置font-size: 0,在子元素上重置正确的font-size (本项目中使用的方法)
方法三:为inline-block元素添加样式float:left (课程老师使用方法)

/* 轮播图开始 */
.banner{
    width: 100%;
    height: 470px;
    padding-top: 10px;
    margin-bottom: 30px;
    background-color: antiquewhite;
}
.banner-box{
    height: 470px;
    background-color: pink;
}
.banner-slide{
    width: 790px;
    height: 470px;
    /*  设置居中*/
    margin: 0 auto;
    background-color: aqua;
}
.slide{
    position: relative;
    width: 590px;
    height: 470px;
    /* background-color: violet; */
}
.prev,.next{
    position: absolute;
    top: 50%;
    margin-top: -20px;
    width: 25px;
    height: 35px;
    line-height: 35px;/*行高=高度,是为了居中显示*/
    background-color: rgba(0,0,0,.15);
    font-size: 20px;
    cursor: pointer;
}
.prev{
    left: 0;
    border-radius: 0 18px 18px 0;
}
.next{
    right: 0;
    border-radius: 18px 0 0 18px;
}
.banner-btn{
    position: absolute;
    left: 30px;
    bottom: 20px;
    font-size: 0;
    /* width: 108px;
    height: 15px; */
}
.banner-btn li{
    display: inline-block;
    width: 8px;
    height: 8px;
    border: 1px solid rgba(0,0,0,.05);
    margin-right: 4px;
    border-radius: 50%;
    font-style: normal;
    background: rgba(255,255,255,.4);
    cursor: pointer;
    /* transition: background .2s ease; */
    
}
.banner-btn .active{
    position: relative;/*相对定位适合调整小距离的位移*/
    top: 2px;
    width: 9px;
    height: 9px;
    left: 0;
    border: 3px solid rgba(0,0,0,.1);
    background: rgba(255,255,255,1);
}
/* 轮播图结束du */

2.轮播图js

// 实现轮播图的切换==========================================
// 获取轮播图相关的元素
let img=document.querySelector('.img');
let next=document.querySelector('.next');
let prev=document.querySelector('.prev');
let slide=document.querySelector('.slide');
let lis=document.querySelectorAll('.banner-btn li');

// 定义图片名字的数组
let imgArr=['1.jpg','2.jpg','3.jpg','4.jpg','5.jpg','6.jpg','7.jpg','8.jpg',];

// 定义图片的索引
let count=0;

// 封装一个函数,用来切换图片的路径
function cutImg(){
    img.src='./images/' + imgArr[count];
    
    // 去掉所有i的class
    for(let i=0;i<lis.length;i++){
        lis[i].className="";
    }
    // 给第count个li加上active类名
    lis[count].className='active';
}


// 设置定时器,每隔3秒切换图片
timer= setInterval(function(){
    count++;

    if(count>imgArr.length -1){
        count=0;
    }

    cutImg();
},2000);

// 点击下一张按钮
next.onclick=function(){
    count++;
    if(count>imgArr.length -1){
        count=0;
    }
    cutImg();
}
// // 点击上一张按钮
prev.onclick=function(){
    count--;
    if(count<0){
        count=imgArr.length -1;
    }
    cutImg();
}

// 鼠标移入div,将定时切换图片关闭  (给slide绑定光标移入事件)
slide.onmouseover=function(){
    clearInterval(timer);
}
// 鼠标移出div,将定时切换图片开启  (给slide绑定光标移出事件)
slide.onmouseout=function(){
    // 再次开启定时器,注意:定时器标识要与上方保持一致
    timer= setInterval(function(){
        count++;
        if(count>imgArr.length -1){
            count=0;
        }
        cutImg();
    },2000);
}

// 给li绑定点击事件
for(let i=0;i<lis.length;i++){
   lis[i].onclick =() => { 
    // 点击哪个li,就把count设为几
    count=i;
    cutImg();
    };
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值