【发布时间】:2017-07-18 21:02:33
【问题描述】:
我正在尝试使用简单的 HTML、CSS 和 Javascript 制作滑块/轮播。我正在使用 Flexbox,这很麻烦。单击移动幻灯片的箭头时,没有动画,新图像只是弹出而不向左滑动。
关于 CSS,一切都是 Flexboxed,所以我看到的任何指南都没有太大帮助。在试用 Flexbox/Carousel 教程时,它们使我的代码复杂得多。
这是我的代码。
(function() {
var sliderWidth = $('.carousel-cells').width();
var Carousel = {
props: {
current_slide: null,
total_slides: null
},
init: function() {
Carousel.bindEvents();
},
bindEvents: function() {
$(".carousel-next").on("click", function() {
Carousel.next();
});
$(".carousel-prev").on("click", function() {
Carousel.previous();
});
$(document).keydown(function(e) {
if (e.keyCode === 37) {
Carousel.previous();
}
});
$(document).keydown(function(e) {
if (e.keyCode === 39) {
Carousel.next();
}
});
},
next: function() {
$('.carousel-cells').animate({
left: -sliderWidth
}, 500,
function() {
$('article:first-child').appendTo('.carousel-cells');
$('article').css('left', '');
});
},
previous: function() {
$('.carousel-cells').animate({
left: +sliderWidth
}, 500, function() {
$('article:last-child').prependTo('.carousel-cells');
$('article').css('left', '');
});
},
update: function() {
//will add code
}
}
$(function() {
Carousel.init();
})
})(window);
body {
background-color: #e2e2e2;
height: 100vh;
}
.page-content {
padding-top: 50px;
}
.page-content .main-carousel {
width: 100vw;
height: 400px;
overflow: hidden;
position: relative;
z-index: 1;
}
.page-content .main-carousel .carousel-next,
.page-content .main-carousel .carousel-prev {
position: absolute;
top: 50%;
padding: 20px;
background-color: rgba(200, 200, 200, 1);
cursor: pointer;
margin-top: -25px;
}
.page-content .main-carousel .carousel-next {
right: 0;
}
.page-content .main-carousel .carousel-prev {
left: 0;
}
.page-content .main-carousel .carousel-cells {
width: 99999px;
height: 100%;
display: inline-flex;
flex-direction: row;
}
.page-content .main-carousel .carousel-cells article {
width: 100vw;
height: 100%;
/*float:left;*/
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
background-image: url('../img/slide-background.jpg');
}
.column-content {
display: flex;
flex-direction: column;
background-color: #f2f2f2;
padding: 4vh 0 4vh 0;
}
.column-content h1 {
margin: 0 0vh 2vh 6vh;
font-size: 4vh;
}
.three-columns {
display: flex;
/* -webkit-columns: 4 300px;
-moz-columns: 4 250px;
columns: 4 250px;*/
justify-content: space-between;
margin: 0 6vh 0vh 6vh;
}
.list-block h3 {
margin-bottom: 2vh;
padding-top: 1vh;
}
li {
list-style-type: none;
}
.slide-text h1 {
font-size: 8vh;
}
@media only screen and (max-width: 767px) {
.three-columns {
flex-flow: row wrap;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="page-content">
<section class="main-carousel">
<div class="carousel-next">></div>
<div class="carousel-prev"><</div>
<div class="carousel-cells">
<article>
<div class="slide-text">
<h1>Slide One</h1>
<p>A slide about sliding slides.</p>
</div>
</article>
<article>
<div class="slide-text">
<h1>Slide Two</h1>
<p>A slide-sliding slider sliding slides.</p>
</div>
</article>
<article>
<div class="slide-text">
<h1>Slide Three</h1>
<p>A slide-sliding slider sliding slides.</p>
</div>
</article>
</div>
</section>
<section class="column-content">
<h1>Three Columns</h1>
<div class="three-columns">
<aside class="list-block">
<h3>List Heading</h3>
<ul>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
</ul>
</aside>
<aside class="list-block">
<h3>List Heading</h3>
<ul>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
</ul>
</aside>
<aside class="list-block">
<h3>List Heading</h3>
<ul>
<li>List Item</li>
<li>List Item</li>
</ul>
</aside>
<aside class="list-block">
<h3>List Heading</h3>
<ul>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
</ul>
</aside>
</div>
</section>
</div>
我查看了以下内容以获得指导:https://codepen.io/anon/pen/mwYoOm?editors=0110,这非常有帮助,但是由于我使用的是 Flexbox,所以它无法正常工作。
您对采取什么行动或简单的 Javascript 可以使其正常工作有什么建议吗?非常感激!
【问题讨论】:
-
嗨,Amanda,您需要发布其余代码,以便我们有一个重现问题的工作演示。由于问题显然也与您的 HTML/CSS 有关,因此我们只能看到 javascript 断章取义。了解如何创建minimal reproducible example。
-
更新了我的代码。我正在尝试使用 Vanilla Javascript 和 jQuery 尽可能简单地做到这一点,因为我看到许多插件可以更轻松地解决它
标签: javascript jquery html css carousel