美文网首页
自定义的“图片轮播”组件

自定义的“图片轮播”组件

作者: JohnYuCN | 来源:发表于2021-12-05 12:07 被阅读0次

本文使用JQuery的动画,完成了一组轮播特效。


长白岛--后街咖啡 2021-12-5.jpg

使用方法:

补上三张图片,效果可见!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./scripts/jquery.js"></script>
    <style>
        #gallery {
            position: relative;
            margin: 0 auto;
            width: 900px;
            height: 400px;
            overflow: hidden;
        }

        #gallery>img {
            width: 100%;
            height: 100%;
            position: absolute;
            left: 800%;
            z-index: 3;
            border-radius: 20px;
        }
        .pointer{
            bottom: 30px;
            right: 30px;
            position:absolute;
            z-index: 8;
            color: tomato;
        }
        .pointer span{
            padding: 0px 10px;
            background-color:antiquewhite;
            border-radius: 18px;
            opacity: 0.6; 
            margin: 5px;
        }
        .pointer span:hover{
            cursor: pointer;
            opacity: 1;
        }
        .pointer .current-pointer{
            border:2px red solid;
            opacity:1;
            font-weight:800;
        }
    </style>
</head>

<body>
    <div id="wraper" style="text-align: center;">
        <div id="gallery">
            <img src="./images/a.jpg" alt="">
            <img src="./images/b.jpg" alt="">
            <img src="./images/c.jpg" alt="">
            <div class="pointer">
            </div>
        </div>
        <button style="width: 300px;height: 60px;">next</button>
        <button style="width: 300px;height: 60px;">prev</button>
    </div>

    <script>
        $(function(){
            
            let size=$('#gallery>img').length;

            /*这一段特殊处理的代码:
                把指示器处理的事件注册到父元素上,进而减少绑定的次数
            */
            $('.pointer').on('click',function(event){
                //此处需要判断是否点到了数字的span上
                if(!(event.target instanceof HTMLDivElement)){
                    let index=$(event.target).data('index');
                    if(!$('img').is(":animated")){
                        reShow(index)
                    }
                } 
            })
            /*
                此函数的处理逻辑如下:
                将(index-1)张图片放到显示区域,将index指定的图片放到显示区域的下一处,
                然后将图片全部向左平移(应用动画)。
                删除所有的指示器,并重新生成指示器,同进将当前图片对应的指示器,加入特殊css
            */
            function reShow(index){ 
                $('img').css({left:'800%'})//将所有的img扔到一个不能被看到的地方的即可
                //清空指示器,并重新渲染出指示器
                $('.pointer').empty()
                for(let i=0;i<size;i++){
                    $('<span></span>').text(i+'')
                    .data('index',i)//将数字绑定到了span的data上,便于分离出事件注册的代码
                    .appendTo('.pointer')
                }
                $('img').eq((size-1+index)%size).css({left:'0%'})
                $('img').eq(index).css({left:'100%'})
                //更新指示器的颜色
                $('.pointer>span').eq(index%size).addClass('current-pointer')
                $('img').animate({left:"-=100%"},1000)
            }
            
            //初始化:显示第一张图片
            reShow(0)


            //为两个按键注册处理方法
            $('button:contains("next")').on('click',function(){
               if(!$('img').is(":animated")){
                    reShow((++cur)%size)
               }  
            })
            $('button:contains("prev")').on('click',function(){
                if(!$('img').is(":animated")){
                    cur+=(size-1)
                    reShow(cur%size)
                }   
            })
        })
    </script>
</body>

</html>

相关文章

  • 封装组件-面向对象

    tab组件化tab组件化代码 图片曝光组件化图片曝光组件化代码 轮播组件化轮播组件化代码

  • iOS banner轮播

    一、背景 电商App一般都会存在图片轮播的场景,而iOS没有轮播UI组件,因此需要自定义一个UI组件以适应项目需要...

  • MUI组件(4)

    slide(轮播组件) 轮播组件是MUI提供的核心组件之一,基于轮播组件衍生出了图片轮播、可拖动式图文表格、可拖动...

  • 自定义的“图片轮播”组件

    本文使用JQuery的动画,完成了一组轮播特效。长白岛--后街咖啡 2021-12-5.jpg 使用方法: 补上三...

  • Slider - 轮播图

    简介: 用react开发的轮播图组件,支持淡入淡出、水平滚动、垂直滚动的无缝轮播效果。可自定义轮播内容。 API ...

  • 面向对象实战---组件

    Tab组件代码 轮播效果 曝光图片加载效果

  • iOS 自定义相机 拍照+视频录制(二)

    BSFramework 组件包: 2D、3D无限轮播图组件 图片视频选择、图片视频预览、图片视频拍摄组件 GitH...

  • iOS 自定义相机 拍照+视频录制(一)

    BSFramework 组件包: 2D、3D无限轮播图组件 图片视频选择、图片视频预览、图片视频拍摄组件 GitH...

  • 开发常用第三方库

    自定义tabbar; 无限循环图片,文字轮播器; 自定义statusBar 自定义搜索界面 图片裁剪 启动广告 自...

  • 【iOS】自定义控件无限轮播 + 无限图片轮播

    CocoaPods安装 使用 1、无限图片轮播 2、自定义控件无限轮播 使用自定义控件轮播时,需要注意两点1、一定...

网友评论

      本文标题:自定义的“图片轮播”组件

      本文链接:https://www.haomeiwen.com/subject/qxmixrtx.html