BootStrap 轮播插件(carousel)是一款基于 jQuery 和 CSS3 技术的滑动轮播插件,它可以帮助网站快速搭建功能强大的轮播图。同时,它也支持左右手势滑动,实现更好的用户体验。下面将详细讲解三种支持手势滑动的方法,并提供两个示例。
方法一
这种方法可以在Bootstrap原有代码的基础上,直接添加左右手势滑动功能。
// 手势滑动支持
$('.carousel').on('touchstart', function (e) {
var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
startX = touch.pageX;
});
$('.carousel').on('touchmove', function (e) {
var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
endX = touch.pageX;
if (endX - startX > 50) {
$(this).carousel('prev');
} else if (startX - endX > 50) {
$(this).carousel('next');
}
});
方法二
这种方法需要引入hammer.js插件,它是一款专门用于支持触摸手势的轻量级库,可以实现更为灵活、细致的手势控制。
<!-- 引入Hammer.js插件 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js"></script>
<!-- 相应的JavaScript代码 -->
<script>
// 初始化hammer.js插件
var myHammer = new Hammer(document.querySelector('.carousel'));
// 监听左右滑动手势并执行相应方法
myHammer.on('swipeleft', function() {
$('.carousel').carousel('next');
});
myHammer.on('swiperight', function() {
$('.carousel').carousel('prev');
});
</script>
方法三
这种方法需要引入touchSwipe.js插件,它是一款专门用于支持手势滑动的jQuery插件。
<!-- 引入touchSwipe.js插件 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.touchswipe/1.6.19/jquery.touchSwipe.min.js"></script>
<!-- 相应的JavaScript代码 -->
<script>
// 初始化touchSwipe.js插件
$('.carousel').swipe({
swipeLeft: function() {
$(this).carousel('next');
},
swipeRight: function() {
$(this).carousel('prev');
}
});
</script>
示例一
<!-- Carousel示例代码 -->
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img class="d-block w-100" src="https://cdn.pixabay.com/photo/2018/01/14/23/12/nature-3082832_1280.jpg" alt="First slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="https://cdn.pixabay.com/photo/2018/03/15/20/50/mountains-3220773_1280.jpg" alt="Second slide">
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<!-- 相应的JavaScript代码 -->
<script>
$(function() {
// 手势滑动支持
$('.carousel').on('touchstart', function (e) {
var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
startX = touch.pageX;
});
$('.carousel').on('touchmove', function (e) {
var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
endX = touch.pageX;
if (endX - startX > 50) {
$(this).carousel('prev');
} else if (startX - endX > 50) {
$(this).carousel('next');
}
});
});
</script>
示例二
<!-- Carousel示例代码 -->
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img class="d-block w-100" src="https://cdn.pixabay.com/photo/2018/01/14/23/12/nature-3082832_1280.jpg" alt="First slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="https://cdn.pixabay.com/photo/2018/03/15/20/50/mountains-3220773_1280.jpg" alt="Second slide">
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<!-- 相应的JavaScript代码 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js"></script>
<script>
$(function() {
// 初始化hammer.js插件
var myHammer = new Hammer(document.querySelector('.carousel'));
// 监听左右滑动手势并执行相应方法
myHammer.on('swipeleft', function() {
$('.carousel').carousel('next');
});
myHammer.on('swiperight', function() {
$('.carousel').carousel('prev');
});
});
</script>
这里提供了两个轮播图的示例,第一个示例采用了方法一,第二个示例则采用了方法二。建议在实际应用中,根据具体需求和喜好,选择其中一种方法即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种) - Python技术站