jq + css 实现简单的图片轮播效果

jq + css 实现简单的图片轮播效果

开发过程中需要用到图片轮播的插件,在网上找了几个插件之后还是决定自己码一个,比较简洁的功能,以后说不定还会有用。

ps:
功能比较简单,整个框并不能根据图片的大小自动调节,这里所用的图片是1170*500的,如果需要改成其他大小的图片,自行修改.pic-list下img的宽度。

.pic-list中的宽度为整个横幅的宽度,如果需要轮播的图片数量很多,.pic-list的宽度应大于数量*单张宽度,

html

<div class="banner">
        <!--第一张图片为最后一张,用来做轮播连接使用,所以一开始显示的第一章,应是第二张图片,这里图片的宽度为1170px,所以一开始left为-1170px,同理最后一张图也为第一张图。-->
    <div class="pic-list" style="left: -1170px">
        <img src="/static/img/4.jpg" alt="">
        <img src="/static/img/1.jpg" alt="">
        <img src="/static/img/2.jpg" alt="">
        <img src="/static/img/3.jpg" alt="">
        <img src="/static/img/4.jpg" alt="">
        <img src="/static/img/1.jpg" alt="">
    </div>
    <div id="buttons">
        <!-- 确保span的数量跟img数量一样多,不包括第一张img和最后一张img-->
        <span class='on'></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
    <a href="javascript:;" class="arrow" id="prev">&lt;</a>
    <a href="javascript:;" class="arrow" id="next">&gt;</a>
</div>

css

.banner{
    width: 100%;
    height: 500px;
    overflow: hidden;
    position: relative;

}
.banner a{
    text-decoration: none;
}
.banner .pic-list{
    width: 10000px;
    height: 500px;
    position: absolute;
    z-index: 1;
}
.banner .pic-list img{
    width: 1170px;
    float: left;
}
#buttons{
    position: absolute;
    z-index: 2;
    height: 10px;
    bottom: 20px;
    left: 550px;

}
#buttons span{
    cursor: pointer;
    float: left;
    border: 1px solid #fff;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #333;
    margin-right: 5px;
}
#buttons .on{
    background: orange;
}
.arrow{
    cursor: pointer;
    line-height: 36px;
    text-align: center;
    font-size: 20px;
    font-weight: bold;
    width: 40px;
    height: 40px;
    position: absolute;
    z-index: 2;
    top: 200px;
    background: rgba(0,0,0,0.5);
    color: #fff;
    display: none;
}
.banner:hover .arrow{display: block;}

#prev{
    left: 20px;
}
#next{
    right:20px;
}

js

$(document).ready(function(){
    var picNum = 4;//图片数量,根据实际修改
    var picWidth = 1170;//图片的宽度,根据实际修改
    var picMaxWidth = -1 * picNum * picWidth;
    var currentPic = 1;
    var next = $('#next');
    var prev = $('#prev');
    var flag = false;

    prev.on('click',function(){
        if(!flag){
            calPx(1170);
            currentPic--;
            if (currentPic < 1) {
                currentPic = picNum;
            }
            $('#buttons span').eq(currentPic-1).addClass('on').siblings().removeClass('on');
        }
    });

    next.on('click',function(){
        if(!flag){
            calPx(-1170);
            currentPic++;
            if (currentPic > picNum) {
                currentPic = 1;
            }
            $('#buttons span').eq(currentPic-1).addClass('on').siblings().removeClass('on');
        }


    });
    $('.banner').on('mouseover',function(){
        stop();
    }).on('mouseout',function(){
        play();
    })
    function nextClick(){
        next.click();
    }
    function play(){
        setInt = setInterval(nextClick,2000);
    }
    function stop(){
        clearInterval(setInt);
    }

    function calPx(leftPx){
        flag = true;
        var left = parseInt($('.pic-list').css('left'));
        var newLeft = left+leftPx;
        var time = 300;
        var interval = 10;
        var speed = leftPx/(time/interval);

        function go(){
            var left = parseInt($('.pic-list').css('left'));
            if((speed < 0 && left > newLeft) || (speed > 0 && left < newLeft)){
                $('.pic-list').css('left', (left + speed) + 'px');
                setTimeout(go,interval);
            }else{
                flag = false;
                if( newLeft > -1170){
                    newLeft = picMaxWidth;
                }else if (newLeft < picMaxWidth ) {
                    newLeft = -1170;
                }
                $('.pic-list').css('left',newLeft + 'px');
            }
        }
        go();

    }
    play();

});
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
首先,为了实现视频与图片的轮播,我们需要使用jQuery库来进行操作。我们可以将这些视频和图片以列表的形式呈现,并使用jQuery的方法来实现自动轮播和用户交互的功能。 在HTML中,我们可以将视频和图片都放在一个div容器中,并为它们设置一个统一的类名,比如"slide"。然后使用jQuery选择器来选中这些元素,并初始化轮播功能。我们可以使用下面的代码: ```html <div class="slider"> <div class="slide"> <img src="image1.jpg" alt="Image 1"> </div> <div class="slide"> <video src="video1.mp4" controls></video> </div> <!-- 更多的图片和视频 --> </div> ``` ```javascript $(document).ready(function(){ // 设置轮播间隔时间 var interval = 3000; // 毫秒 // 找到所有的slide元素 var slides = $('.slide'); var currentSlide = 0; // 自动轮播 function nextSlide() { slides.eq(currentSlide).fadeOut(); currentSlide = (currentSlide + 1) % slides.length; slides.eq(currentSlide).fadeIn(); } // 设置定时器 setInterval(nextSlide, interval); }); ``` 在上面的代码中,我们首先找到了所有的slide元素,并设置了一个变量currentSlide来追踪当前的轮播项。然后通过interval和setInterval方法来自动播放下一个轮播项,并根据currentSlide的值来切换图片或视频的显示。 另外,我们还可以添加一些用户交互的功能,比如鼠标悬停在轮播元素上时停止轮播,点击左右箭头来切换轮播项等等。总之,通过使用jQuery来操作元素和实现轮播功能,我们可以轻松地实现视频与图片的轮播效果

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值