swiper 在PC端使用禁止鼠标拖动

博客内容介绍了如何通过在Swiper的容器div上添加'swiper-no-swiping'类来禁用其内部的滑动交互,从而实现特定场景下的用户交互控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在swiper大的容器下加入 swiper-no-swiping 即可

	  <div class="swiper-container swiper-no-swiping"></div>
### 使用原生 JavaScript 实现 Swiper 类似的列表滚动功能 要实现类似于 Swiper 的列表滚动效果,可以通过以下方式完成: #### 1. DOM 结构设计 首先定义 HTML 结构,包含一个可滚动的容器 `.swiper-wrapper` 和多个子项 `.swiper-item`。 ```html <div class="swiper"> <div class="swiper-wrapper"> <div class="swiper-item">Slide 1</div> <div class="swiper-item">Slide 2</div> <div class="swiper-item">Slide 3</div> <!-- 更多滑块 --> </div> <div class="icon-items"> <span class="icon-item"></span> <span class="icon-item"></span> <span class="icon-item"></span> <!-- 对应的小圆点 --> </div> </div> ``` --- #### 2. CSS 样式基础 通过 CSS 设置基本样式,使 `.swiper-wrapper` 可水平滚动,并隐藏溢出部分。 ```css .swiper { position: relative; overflow: hidden; } .swiper-wrapper { display: flex; transition: transform 0.3s ease-in-out; /* 平滑过渡 */ } .swiper-item { min-width: 100%; /* 占满父级宽度 */ box-sizing: border-box; } ``` --- #### 3. 初始化 DOM 元素并绑定事件 利用 `querySelector` 或 `querySelectorAll` 获取所需节点,并将其转换为数组以便操作。同时处理触摸事件或鼠标拖拽逻辑。 ```javascript // 获取必要的 DOM 节点 var swiperWrapper = document.querySelector('.swiper-wrapper'); var swiperItems = Array.from(document.querySelectorAll('.swiper-item')); var iconItems = Array.from(document.querySelectorAll('.icon-item')); let currentIndex = 0; function updatePosition(index) { const offset = -index * 100; // 假设每张幻灯片占宽 100% swiperWrapper.style.transform = `translateX(${offset}%)`; } // 小圆点切换选中状态 function toggleActiveIcon(index) { iconItems.forEach((item, i) => item.classList.toggle('active', i === index)); } // 绑定小圆点点击事件 iconItems.forEach((item, index) => { item.addEventListener('click', () => { currentIndex = index; updatePosition(currentIndex); toggleActiveIcon(currentIndex); }); }); updatePosition(0); // 默认显示第一页 toggleActiveIcon(0); // 自动播放功能 (可选) setInterval(() => { currentIndex = (currentIndex + 1) % swiperItems.length; updatePosition(currentIndex); toggleActiveIcon(currentIndex); }, 3000); ``` 上述代码实现了基于索引的手动切换和自动播放功能[^1]。 --- #### 4. 处理触控手势 为了增强用户体验,还可以加入触控支持,允许用户通过手指滑动控制页面翻转。 ```javascript let startX = 0, moveX = 0, isDragging = false; swiperWrapper.addEventListener('touchstart', function(e) { startX = e.touches[0].clientX; isDragging = true; }); swiperWrapper.addEventListener('touchmove', function(e) { if (!isDragging) return; moveX = e.touches[0].clientX - startX; swiperWrapper.style.transition = 'none'; swiperWrapper.style.transform = `translateX(${-currentIndex * 100 + moveX / window.innerWidth * 100}%)`; }); swiperWrapper.addEventListener('touchend', function() { if (!isDragging) return; isDragging = false; swiperWrapper.style.transition = ''; if (Math.abs(moveX) > window.innerWidth / 3) { // 阈值判断 currentIndex += Math.sign(-moveX); currentIndex = (currentIndex + swiperItems.length) % swiperItems.length; // 循环边界 } updatePosition(currentIndex); toggleActiveIcon(currentIndex); }); ``` 此段代码增加了对移动设备的支持,解决了移动点击延迟问题[^2]。 --- #### 5. IE 浏览器兼容性考虑 如果需要兼容较低版本浏览器(如 IE),则需额外引入 polyfill 或降级库文件。例如对于 IE 不支持的部分 ES6 特性和某些方法,则可通过 Babel 编译或将现代语法替换为传统写法[^3]。 --- ### 总结 以上方案展示了如何仅依靠原生 JavaScript 构建简单的轮播图组件,涵盖了核心交互逻辑、动画平滑度优化以及跨平台适配等内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值