前端知识笔记(十八)———页面首次滑动不可返回

简介: 前端知识笔记(十八)———页面首次滑动不可返回

移动端的一个常见的功能

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <style>
      .slider-container {
        width: 100%;
        overflow: hidden;
      }
      .slider-wrapper {
        display: flex;
        width: 200%;
        transition: transform 0.3s ease-in-out;
      }
      img {
        width: 50%;
        height: auto;
      }
    </style>
  </head>
  <body>
    <div class="slider-container">
      <div class="slider-wrapper">
        <img src="./img/641.png" alt="Image 1">
        <img src="./img/641.png" alt="Image 2">
      </div>
    </div>
    <script>
      var container = document.querySelector('.slider-container');
      var wrapper = document.querySelector('.slider-wrapper');
      var images = document.querySelectorAll('.slider-wrapper img');
      var imageWidth = images[0].clientWidth;
      var currentIndex = 0;
      // 监听手势滑动事件
      container.addEventListener('touchstart', handleTouchStart);
      container.addEventListener('touchmove', handleTouchMove);
      container.addEventListener('touchend', handleTouchEnd);
      var startX = 0;
      var currentX = 0;
      var threshold = 50; // 滑动触发切换的阈值
      function handleTouchStart(event) {
        startX = event.touches[0].clientX;
      }
      function handleTouchMove(event) {
        currentX = event.touches[0].clientX;
        var diffX = currentX - startX;
        // 根据手指滑动的距离实时更新图片容器的位置
        wrapper.style.transform = `translateX(${-currentIndex * imageWidth + diffX}px)`;
      }
      function handleTouchEnd() {
        var diffX = currentX - startX;
        // 根据滑动的距离和阈值判断应该切换到上一张或下一张图片
        if (diffX < -threshold && currentIndex < images.length - 1) {
          currentIndex++;
        }
        // 切换图片容器的位置到指定索引对应的图片
        wrapper.style.transform = `translateX(${-currentIndex * imageWidth}px)`;
        // 重置滑动变量
        startX = 0;
        currentX = 0;
      }
    </script>
  </body>
</html>
相关文章
|
2月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
171 2
|
26天前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
2月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
46 0
|
1月前
|
前端开发 数据安全/隐私保护
.自定义认证前端页面
.自定义认证前端页面
10 1
.自定义认证前端页面
|
25天前
|
前端开发 JavaScript 搜索推荐
前端懒加载:提升页面性能的关键技术
前端懒加载是一种优化网页加载速度的技术,通过延迟加载非首屏内容,减少初始加载时间,提高用户访问体验和页面性能。
|
1月前
|
前端开发 安全 JavaScript
在阿里云快速启动Appsmith搭建前端页面
本文介绍了Appsmith的基本信息,并通过阿里云计算巢完成了Appsmith的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Appsmith,非技术同学也能轻松搞定。
|
2月前
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
38 18
|
2月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
2月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
2月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
119 1