淡入淡出轮播插件(Js)

  1. 该插件由轮播图片、向前向后按钮及底部分页器3部分组成
  2. 首先,搭建页面dom结构,href="javascript:void(0)表示a标签不跳转,保留样式,不做任何操作
<div class="carousel">
    <!-- 轮播图片 -->
    <ul class="items">
        <li>
            <a href="javascript:void(0)">
                <img src="imgs/26.jpg" alt="">
            </a>
        </li>
        <li>
            <a href="javascript:void(0)">
                <img src="imgs/25.jpg" alt="">
            </a>
        </li>
        <li>
            <a href="javascript:void(0)">
                <img src="imgs/24.jpg" alt="">
            </a>
        </li>
        <li>
            <a href="javascript:void(0)">
                <img src="imgs/23.jpg" alt="">
            </a>
        </li>

    </ul>
    <!-- 向前向后按钮 -->
    <a href="javascript:void(0)" class="pre"><</a>
    <a href="javascript:void(0)" class="next">></a>
    <!-- 分页器 -->
    <ul class="bullet">
        <li class="active"></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>
  1. 再看下样式的写法,值得注意的是2个居中写法
<style>
    /* reset */
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    li {
        list-style: none;
    }
    a {
        text-decoration: none;
    }

    .carousel {
        position: relative;
        width: 480px;
        height: 360px;
        margin: 20px auto;
        overflow: hidden;
    }
    .pre,
    .next {
        /* 相对.carousel垂直方向的50%,再减去自身高度一半,实现上下居中 */
        position: absolute;
        top: 50%;
        margin-top: -25px;
        width: 50px;
        height: 50px;
        line-height: 50px;
        text-align: center;
        color: #fff;
        font-size: 30px;
        opacity: .8;
    }
    .pre:hover,
    .next:hover {
        font-size: 60px;
    }
    .pre {
        left: 10px;
    }
    .next {
        right: 10px;
    }
    .bullet {
        /* 相对.carousel水平方向的50%,再使用translate让自己向左平移自身宽度的50%,实现水平居中 */
        position: absolute;
        bottom: 10px;
        left: 50%;
        transform: translate(-50%);
    }
    .bullet li {
        display: inline-block;
        width: 16px;
        height: 4px;
        background: #fff;
        cursor: pointer;
    }
    .bullet li.active {
        background: #666;
    }
</style>
  1. 最后看逻辑部分,大致功能有:向前向后按钮的点击操作(显示下一张和上一张),底部分页器的点击操作(点击分页器显示与之下标对应的图片),自动轮播的功能
<script>
    var $pre = $(".pre"),
        $next = $(".next"),
        $bullet = $(".bullet"),
        $items = $(".items").children(),
        imgCount = $items.length;

    var curIdx = 0,
        isFade = false;         // 设置动作锁,防止用户频繁点击频繁执行,浪费性能

    play(0);
    autoPlay();

    $pre.on('click',function(){
        playPre ();
    })

    $next.on('click',function(){
        playNext();
    })

    $bullet.find('li').on('click',function(){
        var thisIdx = $(this).index();
        play(thisIdx);
    })

    // play()的功能是传哪个下标就显示哪张图片
    // 将curIdx的图片淡出,idx的图片淡入
    // 同时设置底部分页器对应显示样式
    function play (idx) {
        // 先判断动作锁是否开启,如果已开启表示轮播动作正在执行,则不重复执行
        if(isFade) return;   
        // 如果轮播动作未执行,则修改动作锁表示开始执行       
        isFade = true;
        $items.eq(curIdx).fadeOut(500);
        $items.eq(idx).fadeIn(500,function(){
            // 轮播动作执行结束后继续加上动作锁
            isFade = false;
        })
        curIdx = idx;
        setBullet();
    }
    function playNext (){
        // 显示下一张其实就是 play(idx+1),但要将idx+1的值控制在图片数量范围内
        play( (curIdx + 1) % imgCount );
    }
    function playPre (){
        // 显示上一张,play(idx-1),计算方式同上
        play( (imgCount + curIdx - 1) % imgCount );
    }
    function setBullet (){
        $bullet.find('li')
                   .removeClass('active')
                   .eq(curIdx).addClass('active');
    }
    function autoPlay (){
        setInterval(function(){
            playNext();
        },2000)
    }
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_X自主阅读 15,980评论 3 119
  • 如果我是一种植物,我是什么?又是一个很棘手的问题呢!我以前有点像仙人掌,满身是刺,我觉得全天下人都在跟我过不去,甚...
    Echo紫阅读 911评论 0 0
  • 时间过的真快啊,一个星期结束了,早上没做饭跟戚善博去步行街上吃的混沌,晚上写作业的时候橡皮不见了,趁他吃饭的时候我...
    戚善博妈妈阅读 193评论 0 0
  • 一、环境的变化 1. 随着信息技术尤其是互联网的飞速发展,传统企业和传统营销,已难以适应今日企业的生存需求。 2....
    王玉_b195阅读 484评论 0 1
  • 同样标题的文字发过一次了,现在重新编辑一篇感觉又不一样了。 人有的时候就是需要一鼓作气,一蹴而就才有成就感,面对事...
    知子花开阅读 282评论 1 1