custom carousel
Здравствуйте, подскажите пожалуйста, почему у меня carousel_ch.animate({ "left": -carousel_ch_width + "px"}, 1000) выполняется только один раз
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="css/normalize.css"> <link rel="stylesheet" href="css/styles.css"> </head> <body> <div class="wrap"> <div class="carousel-wrap"> <ul class="carousel clearfix"> <li class="carousel__title active"> <div class="myslide"> <img class="carousel__image" src="images/fl.jpg" alt=""> <a href="#" class="carousel__link">Комнатные цветы</a> </div> </li> <li class="carousel__title active"> <div class="myslide"> <img class="carousel__image" src="images/fl2.jpg" alt=""> <a href="#" class="carousel__link">Свадебные цветы</a> </div> </li> <li class="carousel__title active"> <div class="myslide"> <img class="carousel__image" src="images/fl.jpg" alt=""> <a href="#" class="carousel__link">Комнатные цветы</a> </div> </li> <li class="carousel__title active"> <div class="myslide"> <img class="carousel__image" src="images/fl2.jpg" alt=""> <a href="#" class="carousel__link">Свадебные цветы</a> </div> </li> <li class="carousel__title"> <div class="myslide"> <img class="carousel__image" src="images/fl.jpg" alt=""> <a href="#" class="carousel__link">Комнатные цветы</a> </div> </li> <li class="carousel__title"> <div class="myslide"> <img class="carousel__image" src="images/fl2.jpg" alt=""> <a href="#" class="carousel__link">Свадебные цветы</a> </div> </li> <li class="carousel__title"> <div class="myslide"> <img class="carousel__image" src="images/fl.jpg" alt=""> <a href="#" class="carousel__link">Комнатные цветы</a> </div> </li> <li class="carousel__title"> <div class="myslide"> <img class="carousel__image" src="images/fl2.jpg" alt=""> <a href="#" class="carousel__link">Свадебные цветы</a> </div> </li> </ul> <div class="controls"> <div class="controls__prev"><a href="#"></a></div> <div class="controls__next"><a href="#"></a></div> </div> </div> </div> <script src="js/jquery-1.11.3.js"></script> <script src="js/main.js"></script> </body> </html>
.clearfix:before, .clearfix:after{
content: " ";
display: table;
}
.clearfix:after{
clear: both;
}
body {
background-color: #d6dbcb;
}
img {
border: none;
max-width: 100%;
display: block;
margin: auto;
}
.wrap {
max-width: 959px;
margin: auto;
position: relative;
}
div.carousel-wrap {
margin: 20px auto;
max-width: 852px;
overflow: hidden;
}
ul.carousel {
padding: 20px 0 15px 0;
margin: 0;
list-style-type: none;
background-color: #fff;
/* width: 852px; */
margin: 0 auto;
width: 10650px;
}
li.carousel__title {
float: left;
position: relative;
}
div.myslide {
width: 213px;
text-align: center;
}
a.carousel__link {
display: block;
color: #be1a2a;
}
div.controls__prev {
position: absolute;
top: 0;
left: 0px;
width: 54px;
background-color: #f0f2eb;
}
div.controls__prev > a {
width: 22px;
height: 45px;
background: url(../images/prev.png) no-repeat;
display: block;
position: absolute;
top: 50%;
left: 50%;
margin: -22.5px 0 0 -11px;
}
div.controls__next {
position: absolute;
top: 0;
right: 0px;
width: 54px;
background-color: #f0f2eb;
}
div.controls__next > a {
width: 22px;
height: 45px;
background: url(../images/next.png) no-repeat;
display: block;
position: absolute;
top: 50%;
left: 50%;
margin: -22.5px 0 0 -11px;
}
$(function() {
var init = function() {
forward();
}
var forward = function() {
$('.controls__next').on('click', function(e) {
e.preventDefault();
var carousel_ch = $('.carousel').children(); // все li
var carousel_ch_last = $('.carousel').children().last(); // все li
var carousel_first = $('.carousel').children().first();
var active_f = $('.active').first();
var active_l = $('.active').last();
var active_ln = $('.active').last().next();
var carousel_ch_width = $('.carousel').children().width();
console.log(carousel_ch_width);
if ( carousel_ch_last.hasClass('active') ) {
} else {
carousel_ch.animate({
"left": -carousel_ch_width + "px"
}, 1000)
active_f.removeClass('active');
active_ln.addClass('active');
}
})
}
init()
});
|
carousel с адаптацией под окно просмотра
s24344,
для медитации ...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.clearfix:before, .clearfix:after{
content: " ";
display: table;
}
.clearfix:after{
clear: both;
}
body {
background-color: #d6dbcb;
}
img {
border: none;
max-width: 100%;
display: block;
margin: auto;
}
.wrap {
max-width: 959px;
margin: auto;
position: relative;
}
div.carousel-wrap {
margin: 20px auto;
max-width: 852px;
overflow: hidden;
position: relative;
}
ul.carousel {
padding: 20px 0 15px 0;
margin: 0;
list-style-type: none;
background-color: #fff;
/* width: 852px; */
left: 0;
position: relative;
width: 10650px;
}
li.carousel__title {
float: left;
position: relative;
}
div.myslide {
width: 213px;
text-align: center;
}
a.carousel__link {
display: block;
color: #be1a2a;
}
div.controls__prev {
position: absolute;
top: 0;
left: 0px;
width: 54px;
background-color: #f0f2eb;
opacity: .2;
}
div.controls__prev > a {
width: 22px;
height: 45px;
background: url(../images/prev.png) no-repeat;
display: block;
position: absolute;
top: 50%;
left: 50%;
}
div.controls__next {
position: absolute;
top: 0;
right: 0px;
width: 54px;
background-color: #f0f2eb;
}
div.controls__next > a {
width: 22px;
height: 45px;
background: url(../images/next.png) no-repeat;
display: block;
position: absolute;
top: 50%;
right: 50%;
}
</style>
</head>
<body>
<div class="wrap">
<div class="carousel-wrap">
<ul class="carousel clearfix">
<li class="carousel__title">
<div class="myslide">
<img class="carousel__image" src="http://www.sadalisa.ru/wp-content/uploads/2010/10/05157cad.jpg" alt="">
<a href="#" class="carousel__link">Комнатные цветы1</a>
</div>
</li>
<li class="carousel__title">
<div class="myslide">
<img class="carousel__image" src="http://www.sadalisa.ru/wp-content/uploads/2010/10/05157cad.jpg" alt="">
<a href="#" class="carousel__link">Свадебные цветы2</a>
</div>
</li>
<li class="carousel__title">
<div class="myslide">
<img class="carousel__image" src="http://www.sadalisa.ru/wp-content/uploads/2010/10/05157cad.jpg" alt="">
<a href="#" class="carousel__link">Комнатные цветы3</a>
</div>
</li>
<li class="carousel__title">
<div class="myslide">
<img class="carousel__image" src="http://www.sadalisa.ru/wp-content/uploads/2010/10/05157cad.jpg" alt="">
<a href="#" class="carousel__link">Свадебные цветы4</a>
</div>
</li>
<li class="carousel__title">
<div class="myslide">
<img class="carousel__image" src="http://www.sadalisa.ru/wp-content/uploads/2010/10/05157cad.jpg" alt="">
<a href="#" class="carousel__link">Комнатные цветы5</a>
</div>
</li>
<li class="carousel__title">
<div class="myslide">
<img class="carousel__image" src="http://www.sadalisa.ru/wp-content/uploads/2010/10/05157cad.jpg" alt="">
<a href="#" class="carousel__link">Свадебные цветы6</a>
</div>
</li>
<li class="carousel__title">
<div class="myslide">
<img class="carousel__image" src="http://www.sadalisa.ru/wp-content/uploads/2010/10/05157cad.jpg" alt="">
<a href="#" class="carousel__link">Комнатные цветы7</a>
</div>
</li>
<li class="carousel__title">
<div class="myslide">
<img class="carousel__image" src="http://www.sadalisa.ru/wp-content/uploads/2010/10/05157cad.jpg" alt="">
<a href="#" class="carousel__link">Свадебные цветы8</a>
</div>
</li>
</ul>
<div class="controls">
<div class="controls__prev"><a href="#">prev</a></div>
<div class="controls__next"><a href="#">next</a></div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function() {
var e = $(".carousel"),
c = $("li", e).get(),
d = c.length,
g = $("div.carousel-wrap"),
h = $(".controls__next, .controls__prev");
h.on("click", function(a) {
a.preventDefault();
a = e.position().left;
if (this.classList.contains("controls__next"))
for (var b = 0; b < d; b++) {
var f = $(c[b]).position().left;
if (f > -a) {
a = f;
break
}
} else
for (b = d - 1; - 1 < b; b--)
if (f = $(c[b]).position().left, f < -a) {
a = f;
break
}
h.css({
opacity: 1
});
b > 0 || $(this).css({
opacity: .2
});
b = $(c[d - 1]).position().left + $(c[d - 1]).width() - g.width();
a > b && (a = b, $(this).css({
opacity: .2
}));
e.stop().animate({
left: -a + "px"
}, 1E3)
});
var k;
$(window).on("resize", function() {
window.clearTimeout(k);
k = window.setTimeout(function() {
var a = -e.position().left + g.width() - $(c[d - 1]).position().left - $(c[d - 1]).width();
0 < a && e.stop().animate({
left: "+=" + a + "px"
}, 300)
}, 200)
})
});
</script>
</body>
</html>
|
Спасибо
|
| Часовой пояс GMT +3, время: 17:21. |