Анимация infinite-jquery карусели
Пример карусели, которую необходимо реализовать. Анимация работает нормально за исключением случаев, когда последний слайд становится на место первого (если листаешь влево то не выходит анимировать переход с 1 на 14, если вправо - с 14 на 1). Самостоятельно решить не могу и нуждаюсь в помощи.
Посмотреть можно здесь <head> <meta charset="UTF-8"> <title>Карусель + галерея</title> <style> body { text-align: center; padding: 30px; } h1{ font-size: 20px; margin: 15px 0; } p, span{ font-size: 14px; } .carousel-hider { width: 550px; overflow: hidden; display: inline-block; } .carousel-list { list-style: none; width: 10000px; padding: 0px; position: relative; } .carousel-element { display: block; margin-right: 5px; float: left; position: relative; } .carousel-element img { max-width: 106px; cursor: pointer; } .carousel-arrow-left, .carousel-arrow-right { vertical-align: top; display: inline-block; background-color: #ffdcdc; padding: 8px; margin-top: 40px; border: 5px solid #ffd2d2; border-radius: 5px; } .carousel-arrow-left:hover, .carousel-arrow-right:hover { cursor: pointer; background-color: #ffa3a3; } .carousel-arrow-left { margin-right: 25px; } .carousel-arrow-right { margin-left: 25px; } .title-appear{ font-size: 20px; color: #9a0000; margin: 15px 0; } .wrap{ font-size: 0; padding-left: 8px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script> $(document).ready(function() { var leftUIEl = $('.carousel-arrow-left'); var rightUIEl = $('.carousel-arrow-right'); var elementsList = $('.carousel-list'); var pixelsOffset = 111; var currentLeftValue = 0; var elementsCount = elementsList.find('li').length; var minimumOffset = -((elementsCount - 5) * pixelsOffset); var maximumOffset = 0; leftUIEl.click(function() { if (currentLeftValue != maximumOffset) { currentLeftValue += 111; elementsList.animate({ left: currentLeftValue + "px" }, 500); } else { $('.carousel-element:last').insertBefore($(".carousel-element:first")); } }); rightUIEl.click(function() { if (currentLeftValue != minimumOffset) { currentLeftValue -= 111; elementsList.animate({ left: currentLeftValue + "px" }, 500); } else { $('.carousel-element:first').insertAfter($(".carousel-element:last")); } }); $('.carousel-element img').click(function() { var largePath = $(this).attr("src"); var largeAlt = $(this).attr("title") $("#largeImg").attr({src: largePath}); $('h1').html('<h2 class="title-appear">' + largeAlt + '</h2>'); return false; }) }); </script> </head> <body> <h1>Название изображения</h1> <div class="contain-img"> <img id="largeImg" src="img/img1-lg.jpg" alt="Large image" /> </div> <div class="wrap"> <div class="carousel-arrow-left"><span>Влево</span></div> <div class="carousel-hider"> <ul class="carousel-list"> <li class="carousel-element"><img src="img/img1-lg.jpg" title="Название 1"> <p>Описание 1</p> </li> <li class="carousel-element"><img src="img/img2-lg.jpg" title="Название 2"> <p>Описание 2</p> </li> <li class="carousel-element"><img src="img/img3-lg.jpg" title="Название 3"> <p>Описание 3</p> </li> <li class="carousel-element"><img src="img/img4-lg.jpg" title="Название 4"> <p>Описание 4</p> </li> <li class="carousel-element"><img src="img/img1-lg.jpg" title="Название 5"> <p>Описание 5</p> </li> <li class="carousel-element"><img src="img/img2-lg.jpg" title="Название 6"> <p>Описание 6</p> </li> <li class="carousel-element"><img src="img/img3-lg.jpg" title="Название 7"> <p>Описание 7</p> </li> <li class="carousel-element"><img src="img/img4-lg.jpg" title="Название 8"> <p>Описание 8</p> </li> <li class="carousel-element"><img src="img/img1-lg.jpg" title="Название 9"> <p>Описание 9</p> </li> <li class="carousel-element"><img src="img/img2-lg.jpg" title="Название 10"> <p>Описание 10</p> </li> <li class="carousel-element"><img src="img/img3-lg.jpg" title="Название 11"> <p>Описание 11</p> </li> <li class="carousel-element"><img src="img/img4-lg.jpg" title="Название 12"> <p>Описание 12</p> </li> <li class="carousel-element"><img src="img/img3-lg.jpg" title="Название 13"> <p>Описание 13</p> </li> <li class="carousel-element"><img src="img/img4-lg.jpg" title="Название 14"> <p>Описание 14</p> </li> </ul> </div> <div class="carousel-arrow-right"><span>Вправо</span></div> </div> </body> |
бесконечная карусель
antegria,
на форуме с десяток примеров, этого варианта решения ... <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Карусель + галерея</title> <style> body { text-align: center; padding: 30px; } h1{ font-size: 20px; margin: 15px 0; } p, span{ font-size: 14px; } .carousel-hider { width: 550px; overflow: hidden; display: inline-block; } .carousel-list { list-style: none; width: 10000px; padding: 0px; position: relative; } .carousel-element { display: block; margin-right: 5px; float: left; position: relative; } .carousel-element img { max-width: 106px; cursor: pointer; } .carousel-arrow-left, .carousel-arrow-right { vertical-align: top; display: inline-block; background-color: #ffdcdc; padding: 8px; margin-top: 40px; border: 5px solid #ffd2d2; border-radius: 5px; } .carousel-arrow-left:hover, .carousel-arrow-right:hover { cursor: pointer; background-color: #ffa3a3; } .carousel-arrow-left { margin-right: 25px; } .carousel-arrow-right { margin-left: 25px; } .title-appear{ font-size: 20px; color: #9a0000; margin: 15px 0; } .wrap{ font-size: 0; padding-left: 8px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script> $(document).ready(function() { var leftUIEl = $(".carousel-arrow-left"); var rightUIEl = $(".carousel-arrow-right"); var elementsList = $(".carousel-list"); leftUIEl.click(function() { $(".carousel-element:last").insertBefore($(".carousel-element:first")); elementsList.css({ left: "-111px" }).animate({ left: "0px" }, 500) }); rightUIEl.click(function() { elementsList.animate({ left: "-111px" }, 500, function() { $(".carousel-element:first").insertAfter($(".carousel-element:last")); elementsList.css({ left: 0 }) }) }); $(".carousel-element img").click(function() { var largePath = $(this).attr("src"); var largeAlt = $(this).attr("title"); $("#largeImg").attr({ src: largePath }); $("h1").html('<h2 class="title-appear">' + largeAlt + "</h2>"); return false }) }); </script> </head> <body> <h1>Название изображения</h1> <div class="contain-img"> <img id="largeImg" src="https://unsplash.it/400/280/?random&1" alt="Large image" /> </div> <div class="wrap"> <div class="carousel-arrow-left"><span>Влево</span></div> <div class="carousel-hider"> <ul class="carousel-list"> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 1"> <p>Описание 1</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 2"> <p>Описание 2</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 3"> <p>Описание 3</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 4"> <p>Описание 4</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 5"> <p>Описание 5</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 6"> <p>Описание 6</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 7"> <p>Описание 7</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 8"> <p>Описание 8</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 9"> <p>Описание 9</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 10"> <p>Описание 10</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 11"> <p>Описание 11</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 12"> <p>Описание 12</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 13"> <p>Описание 13</p> </li> <li class="carousel-element"><img src="https://unsplash.it/400/280/?random&1" title="Название 14"> <p>Описание 14</p> </li> </ul> </div> <div class="carousel-arrow-right"><span>Вправо</span></div> </div> </body> </html> |
рони, я очень благодарна за решение, и большое спасибо за то, что уделили время и все-таки помогли мне разобраться.
|
Часовой пояс GMT +3, время: 14:35. |