今天面试前端开发时,要求在移动端实现手指滑动切换轮播图
这里我用到 bootsrap 的轮播图组件 + hammer.js 库
文章参考: Hammer.js - 李林峰的园子 - 博客园 (cnblogs.com)
在 hammer.js 中
Swipe事件:在指定的 Dom 区域内,一个手指快速在触屏上滑动。即我们平时用到最多的滑动事件。
Swipeleft:向左滑动
Swiperight:向右滑动
Swipeup:向上滑动
Swipedown:向下滑动
演示效果:
手指滑动切换轮播图演示
代码如下:改动的地方我都标了注释,根据自己需求改写即可
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title></title>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<!-- jquery -->
<script src="https://fastly.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"
integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ"
crossorigin="anonymous"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"
integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd"
crossorigin="anonymous"></script>
<link rel="stylesheet" href="./css/index.css">
</head>
<body>
<!-- bootstrap官方轮播图代码 -->
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
</ol>
<div class="carousel-inner" role="listbox">
<!-- 图片地址改成你自己的就可以了 -->
<div class="item active">
<img src="./images/banner1.jpg" alt="...">
</div>
<div class="item">
<img src="./images/banner2.jpg" alt="...">
</div>
<div class="item">
<img src="./images/banner3.jpg" alt="...">
</div>
</div>
<!-- 给两侧切换轮播图的a标签加了id -->
<a id="leftbtn" class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a id="rightbtn" class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<!-- hammer.js -->
<script src="http://hammerjs.github.io/dist/hammer.min.js"></script>
<script type="text/javascript">
// 创建一个新的hammer对象并且在初始化时指定要处理的dom元素
// 通过id获取到装轮播图的容器
var hammertime = new Hammer(document.getElementById("carousel-example-generic"));
//添加左滑动事件
hammertime.on("swipeleft", function (e) {
// 自动触发左侧按钮
document.getElementById('leftbtn').click();
})
//添加右滑动事件
hammertime.on("swiperight", function (e) {
// 自动触发右侧按钮
document.getElementById('rightbtn').click();
})
</script>
</body>
</html>