jquery: update carousel logic & animate

Posted nyan-workflow-fc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery: update carousel logic & animate相关的知识,希望对你有一定的参考价值。

技术图片

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Carousel</title>
    <link rel="stylesheet" href="../css/reset.css">
</head>
<style>
    .box-content {
        width: 600px;
        margin: 40px auto;
    }

    .carousel-show {
        margin-bottom: 20px;
    }

    .carousel-show .item-list,
    .carousel-show .item-list .banner-position {
        position: relative;
        width: 600px;
        height: 400px;
        overflow: hidden;
    }

    .carousel-show .item-list li {
        display: none;
        position: absolute;
        top: 0;
        left: 0;
        width: 600px;
        height: 400px;
        background-color: #ddd;
    }

    .carousel-show .item-list img {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        height: 400px;
        margin: auto;

    }

    .carousel-wrap {
        position: relative;
        width: 600px;
        height: 80px;
    }

    .carousel-wrap .current {
        position: absolute;
        left: 0;
        top: -5px;
        width: 112px;
        height: 85px;
        background: url("../images/carousel-cur.png") no-repeat center center;
        cursor: pointer;
        z-index: 103;
    }

    .carousel-container {
        position: relative;
        width: 600px;
        height: 80px;
        text-align: center;
        overflow: hidden;
    }

    .carousel-container .carousel-list {
        position: absolute;
        width: 800px;
        height: 80px;
        left: 0;
    }

    .carousel-container .carousel-list li {
        position: relative;
        float: left;
        cursor: pointer;
        width: 112px;
        height: 80px;
        margin-right: 10px;
        overflow: hidden;
    }

    .carousel-container .carousel-list li em {
        position: absolute;
        bottom: 0;
        left: 0;
        width: 112px;
        height: 26px;
        background-color: #000;
        opacity: 0.6;
        z-index: 102;
    }

    .carousel-container .carousel-list li p {
        position: absolute;
        bottom: 0;
        width: 112px;
        height: 26px;
        line-height: 26px;
        text-align: center;
        z-index: 103;
    }

    .carousel-container .carousel-list li p a {
        color: #fff;
        font-size: 12px;
    }

    .carousel-container .carousel-list li img {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        margin: auto;
        height: 80px;
        z-index: 100;
    }

    .carousel-container .carousel-list li img:hover {
        transform: scale(1.05);
        transition: all .3s ease;
        -webkit-transition: all .3s ease;
        -moz-transition: all .3s ease;
        -ms-transition: all .3s ease;
        -o-transition: all .3s ease;
    }

    .carousel-container .arrow {
        position: absolute;
        width: 22px;
        height: 33px;
        z-index: 104;
        background: url("../images/arrow.png");
    }

    .carousel-container .arrow.next {
        background-position: -23px 0;
        top: 20px;
        right: 0;
    }

    .carousel-container .arrow.next:hover {
        background-position: -23px -34px;
    }

    .carousel-container .arrow.previous {
        background-position: 0 0;
        top: 20px;
        left: 0;
    }

    .carousel-container .arrow.previous:hover {
        background-position: 0 -34px;
    }

    .carousel-container .current {
        position: absolute;
        left: 0;
        width: 114px;
        height: 84px;
        border: 2px solid #ddd;
    }
</style>

<body>
    <div class="box-content">
        <div class="carousel-show">
            <ul class="item-list" id="carouselShowList">
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_1.jpg" alt="">
                        </a>
                    </div>
                </li>
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_2.png" alt="">
                        </a>
                    </div>
                </li>
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_3.jpg" alt="">
                        </a>
                    </div>
                </li>
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_4.png" alt="">
                        </a>
                    </div>
                </li>
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_5.jpg" alt="">
                        </a>
                    </div>
                </li>
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_6.jpg" alt="">
                        </a>
                    </div>
                </li>
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_7.jpg" alt="">
                        </a>
                    </div>
                </li>
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_8.jpg" alt="">
                        </a>
                    </div>
                </li>
                <li>
                    <div class="banner-position">
                        <a href="javascript:;">
                            <img src="../images/1400x933_9.png" alt="">
                        </a>
                    </div>
                </li>
            </ul>
        </div>
        <div class="carousel-wrap">
            <div class="current" id="carouselCurrent"></div>
            <div class="carousel-container">
                <ul class="carousel-list" id="carouselList">
                    <li>
                        <p><a href="javascript:;">图1</a></p>
                        <em></em>
                        <img src="../images/112x80_1.jpg" alt="">
                    </li>
                    <li>
                        <p><a href="javascript:;">图2</a></p>
                        <em></em>
                        <img src="../images/112x80_2.png" alt="">
                    </li>
                    <li>
                        <p><a href="javascript:;">图3</a></p>
                        <em></em>
                        <img src="../images/112x80_3.jpg" alt="">
                    </li>
                    <li>
                        <p><a href="javascript:;">图4</a></p>
                        <em></em>
                        <img src="../images/112x80_4.png" alt="">
                    </li>
                    <li>
                        <p><a href="javascript:;">图5</a></p>
                        <em></em>
                        <img src="../images/112x80_5.jpg" alt="">
                    </li>
                    <li>
                        <p><a href="javascript:;">图6</a></p>
                        <em></em>
                        <img src="../images/112x80_6.jpg" alt="">
                    </li>
                    <li>
                        <p><a href="javascript:;">图7</a></p>
                        <em></em>
                        <img src="../images/112x80_7.jpg" alt="">
                    </li>
                    <li>
                        <p><a href="javascript:;">图8</a></p>
                        <em></em>
                        <img src="../images/112x80_8.jpg" alt="">
                    </li>
                    <li>
                        <p><a href="javascript:;">图9</a></p>
                        <em></em>
                        <img src="../images/112x80_9.png" alt="">
                    </li>
                </ul>
                <a href="javascript:;" class="arrow previous" id="arrowPrev"></a>
                <a href="javascript:;" class="arrow next" id="arrowNext"></a>
            </div>
        </div>
    </div>
</body>
<script src="../JavaScript/jquery.min.js" type="text/javascript"></script>
<script>
    $(document).ready(function () {
        let index = 0;
        let isMoveOver = true;
        let arrowPrev = $(#arrowPrev);
        let arrowNext = $(#arrowNext);
        let carouselList = $(#carouselList);
        let carouselCurrent = $(#carouselCurrent);
        let carouselListItems = $(#carouselList li);
        let listLength = carouselListItems.length; //轮播总数
        let showLength = 5; // 显示个数
        let stepWidth = 122; // 每个轮播长度
        let fixCurPonit = (showLength - 1) * stepWidth; //488
        let pointCurWidth = stepWidth - (listLength - showLength) * stepWidth;
        let pointPicWidth = (showLength - listLength) * stepWidth;

        //初始化图片列表实际长度
        carouselList.css(width, (listLength + 1) * 112 + px);

        showCurrentCarousel(index);

        function showCurrentCarousel(index) {
            $(#carouselShowList li).css({
                display: none
            });
            $(#carouselShowList li).eq(index).css({
                display: block
            });
        }

        carouselListItems.each(function (index) {
            $(this).click(function () {
                let newLeft = parseInt($(this).offset().left) - stepWidth;
                carouselCurrent.css(left, newLeft);
                showCurrentCarousel(index);
            })
        })

        arrowPrev.click(function () {
            if (isMoveOver) {
                movePrev();
            }
        });
        arrowNext.click(function () {
            if (isMoveOver) {
                moveNext();
            }
        });

        function resetMoveOver() {
            isMoveOver = true;
        }

        function movePrev() {
            isMoveOver = false;
            let picLeft = parseFloat(carouselList.css(left));
            let curLeft = parseFloat(carouselCurrent.css(left));
            if (curLeft > 0 && curLeft <= fixCurPonit) {
                index--;
                let newCurLeft = curLeft - stepWidth;
                //carouselCurrent.css(‘left‘, `${newCurLeft}px`);
                carouselCurrent.animate({ left: `${newCurLeft}px` }, 300, resetMoveOver);
            } else if (picLeft === 0 && curLeft === 0) {
                index = listLength - 1;
                carouselCurrent.css(left, `${fixCurPonit}px`);
                carouselList.css(left, `${pointPicWidth}px`);
                isMoveOver = true;
            } else {
                index--;
                let newPicLeft = picLeft + stepWidth;
                //carouselList.css(‘left‘, `${newPicLeft}px`);
                carouselList.animate({ left: `${newPicLeft}px` }, 300, resetMoveOver)
            }
            showCurrentCarousel(index);
        }

        function moveNext() {
            isMoveOver = false;
            let picLeft = parseFloat(carouselList.css(left));
            let curLeft = parseFloat(carouselCurrent.css(left));
            if (picLeft < pointCurWidth && curLeft < fixCurPonit) {
                index++;
                let newCurLeft = curLeft + stepWidth;
                //carouselCurrent.css(‘left‘, `${newCurLeft}px`);
                carouselCurrent.animate({ left: `${newCurLeft}px` }, 300, resetMoveOver);
            } else if (picLeft === pointPicWidth && curLeft === fixCurPonit) {
                index = 0;
                carouselCurrent.css(left, 0);
                carouselList.css(left, 0);
                isMoveOver = true;
            } else {
                index++;
                let newPicLeft = picLeft - stepWidth;
                //carouselList.css(‘left‘, `${newPicLeft}px`);
                carouselList.animate({ left: `${newPicLeft}px` }, 300, resetMoveOver)
            }
            showCurrentCarousel(index);
        }
    })
</script>

</html>

 

以上是关于jquery: update carousel logic & animate的主要内容,如果未能解决你的问题,请参考以下文章

在 Bootstrap 3 Carousel 上向左/向右滑动 MOBILE

使用 Carousel 时 Jquery / Bootstrap “未捕获的类型错误”

owl-carousel jquery 调取数据循环

jquery carousel用啥插件

Carousel Bootstrap 5:从 JQuery 到 Javascript

jquery: carousel arrow click