无极低码 :https://wheart.cn
swiper Swiper 常用于移动端网站的内容触摸滑动 Swiper 是纯 JavaScript 打造的滑动特效插件,面向手机、平板电脑等移动终端。 swiper.js 在国内使用面非常广,可以用于实现轮播、图片预览、可滚动应用等,发挥想象可是实现诸多需求。 本篇幅采用 swiper5,所有版本的 api 都很相似,主要区别可以参考官方的提供的说明。 1. 使用
实例演示 预览 复制 复制成功! <style> .container {height: 100px;overflow: hidden;} .slide-item {display: flex;justify-content: center;align-items: center;color: white;font-size: 42px;} .item1 {background-color: cornflowerblue;} .item2 {background-color: darkslateblue;} .item3 {background-color: darkorange;} </style> <div class="container"> <div class="swiper-wrapper"> <div class="swiper-slide slide-item item1">第一屏</div> <div class="swiper-slide slide-item item2">第二屏</div> <div class="swiper-slide slide-item item3">第三屏</div> </div> </div> <link href="https://cdn.bootcdn.net/ajax/libs/Swiper/5.4.5/css/swiper.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/Swiper/5.4.5/js/swiper.min.js"></script> <script> var mySwiper = new Swiper('.container', { autoplay: true, // 自动切页 }); </script> 运行案例 点击 "运行案例" 可查看在线运行效果
swiper 需要引入两个资源,通常和 UI 相关的框架都会有两个及以上资源,需要额外引入样式。 轮播是非常常见的需求,只需一些简单的 DOM 结构就可以完成。 .swiper-wrapper 和 .swiper-slide 两个类是和 swiper 联动的,swiper 在初始化的时候会在 swiper-wrapper 下 swiper-slide 作为每一项,这些类名都是可通过配置修改的。 2. 使用 swiper 实现移动端的图片预览 移动端产品的图片查看几乎都是全屏预览,可以作用滑动切换图,支持缩放手势等,swiper 天然支持这些功能,同时又可以深度定制,适合制作业务组建嵌入项目。 分析一下需求:点击图片查看大图,图片可以手势缩放,同时支持左右切换。 其实这就是一个不会自动切换的轮播,通过 swiper 就能实现。 可以设计一个方法,方法接收 当前图片和所有图片列表,然后每个图片为一页,生成一个轮播,显示在页面的最上层。
实例演示 预览 复制 复制成功! <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> </head> <body> <style> .container {position: fixed;top: 0;bottom: 0;right: 0;left: 0;background-color: rgba(0, 0, 0, .7);} .container .swiper-pagination {display: none;} .slide-item {overflow: hidden;} .slide-item img {width: 100%;} .count {position: absolute;left: 50%;transform: translateX(-50%);top: 16px;color: white;} </style> <link href="https://cdn.bootcdn.net/ajax/libs/Swiper/5.4.5/css/swiper.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/Swiper/5.4.5/js/swiper.min.js"></script> <script> function previewImage(current, list) { if (!list) list = [current]; // 如果没传,默认以初始图为列表 if (list.length === 0) list = [current]; // 如果数组为空 则以初始图为列表 var idx = 0; // 寻找初始图在列表的位置 var html = list.map(function(item, index) { if (item === current) { // 如果两个图 url 相等,则说明初始图就是在这个位置 idx = index + 1; // 记录下位置 } // 拼一个 swiper-slide return [ '<div class="swiper-slide slide-item">', '<div class="swiper-zoom-container">', // 应用缩放配置项要提供这个节点 '<img src="' + item + '" />', '</div>', '</div>', ].join(''); }); var wrapper = document.createElement('div'); // 创建一个 swiper-wrapper wrapper.className = 'swiper-wrapper'; wrapper.innerHTML = html.join(''); // 把所有 swiper-slide 塞进去 var container = document.createElement('div'); // 创建跟节点 container.className = 'container'; // 把所有 html 拼起来 container.innerHTML = [ '<div class="count">', '<span class="current">' + (idx || 1) + '</span>', '/', '<span class="total">' + list.length + '</span>', '</div>', wrapper.outerHTML, '<div class="swiper-pagination"></div>', ].join(''); // 添加到 DOM 中 document.body.appendChild(container); // 实例化一个 swiper new Swiper(container, { zoom: true, // 缩放开启 loop: list.length > 1, // 如果图片只有一张,则不开启循环 pagination: { // 分页配置 el: '.swiper-pagination', }, on: { // 事件监听 paginationUpdate: function(e) { // 当分页发生变化的时候 var idx = e.realIndex; // 拿到当前页索引 // 赋值给分页计数器 container.querySelector('.current').innerText = idx + 1; }, }, }).slideTo(idx, 0); // 默认展示初始图 } previewImage('https://img.mukewang.com/5ef94c8e000109e118720764.jpg', [ 'https://img.mukewang.com/5f057a6a0001f4f918720764.jpg', 'https://img.mukewang.com/5ef94c8e000109e118720764.jpg', 'https://img.mukewang.com/5ef15e4e00010b0018720764.jpg', 'https://img.mukewang.com/5f0561160001630718720764.jpg', ]); </script> </body> </html> 运行案例 点击 "运行案例" 可查看在线运行效果
源码没有跳着走的逻辑,都加上了注释,相对好理解。 这个图片查看方法利用了 swiper 提供的滚动、手势缩放、手势拖动、分页的能力,实现相对简单,如果需要自己去实现相应功能,就需要花费大量的经历。 3. 小结 swiper 本身的定位并不是轮播,轮播是其应用场景之一,发挥想象,可以用 swiper 做许多事情。
公开笔记 0/1000 提交
删除 编辑
无极低码 :https://wheart.cn
-
2024-10-12 08:59:22.0
可视化,大数据,gis
-
2024-08-29 08:44:47.0
GIS,leafletjs,js,地图,可视化,百度,高德
-
2024-08-26 11:41:05.0
三维,模型,glft,无极低码
-
2024-04-20 08:51:41.0
echart,js,可视化,前端,流动关系图
-
2024-04-04 13:09:31.0
编程,程序,js,教程,程序员,入门教程
-
2024-02-17 21:55:21.0
layui,前端,js,cascader
-
2023-11-26 22:38:27.0
layui,js,前端,树,字典
-
2023-07-28 23:56:45.0
gis,前端,可视化,风场,洋流,天气
-
2023-07-16 15:42:34.0
JavaScript,入门教程表单处理swiper
-
2023-07-05 22:52:01.0
js,javascript,正则表达式,form表单验证
-
2023-07-03 18:03:43.0
原型设计,可视化,axure模板,产品设计
-
2023-07-02 22:43:01.0
mdui,分页,html,js
-
2023-07-01 10:59:29.0
layui,前端,js
-
2023-06-29 21:55:58.0
项目计划,里程碑计划,工期计算,项目工时估算
-
2023-05-28 19:55:56.0
可视化,GIS,大数据,热力图,动态地图,三维,百度地图特效,高德地图,地图动画
-
2023-05-14 18:08:23.0
大屏,gis,前端,可视化,免费
-
2023-05-07 15:22:23.0
语音合成,前端,JavaScript,html
-
2023-05-07 14:58:59.0
js,html,JavaScript,vue
-
2023-04-27 21:10:07.0
JavaScript,图片上传
-
2023-04-26 13:17:56.0
html,Javascript,css,面试,前端
-
2023-04-21 22:21:03.0
wangeditor,富文本,代码,highlight.js
-
2023-04-13 21:21:26.0
GIS,可视化,百度地图
-
2023-03-26 20:12:31.0
base64,js,前端,加密,解密,jquery
-
2023-03-26 18:52:41.0
JS,加密,前端,加解密
-
2023-03-22 19:45:58.0
js,前端,乱码,jquery,移动端,web,全栈
-
2022-12-15 16:45:16.0
大数据,气象数据,天气数据,历史天气,最新数据
-
2023-03-12 21:01:30.0
免费,云服务,ECS,腾讯云,云主机
-
2023-03-12 21:59:56.0
大数据,gis绘图,乡镇边界,数据可视化,地图
-
2023-01-15 16:32:02.0
可视化,大数据,大屏,图标,新冠病毒,前端,特效
-
2023-01-11 16:32:02.0
可视化,大数据,大屏,图标,新冠病毒,前端,特效
-
2022-12-15 16:45:16.0
大数据,小程序,编程,免费
-
2022-12-15 16:45:16.0
大数据,小程序,编程,免费