H5仿探探左右滑动效果Vue.js

2023-10-22 17:10
文章标签 vue js 效果 滑动 h5 左右 探探

本文主要是介绍H5仿探探左右滑动效果Vue.js,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 效果图:

 

效果图:GIF

 

说明 H5仿探探左右滑动效果

<template><div class="slide"><divclass="slide_item"v-for="(item,index) in listArr":key="index":style="[initCSS(index),Transform(index)]"@touchstart.stop.prevent.capture="touchStart($event,index)"@touchmove.stop.prevent.capture="touchMove($event,index)"@touchend.stop.prevent.capture="touchEnd(index)"v-show="item.show"><span class="title">第{{item.index + 1}}个</span><span class="text">仿探探左右滑动效果/初始化50个</span><span class="text">只支持移动端</span></div></div>
</template>
<script>
export default {name: "slide",data() {return {listArr: [],/*记录x y轴*/x: {start: 0,move: 0,end: 0},y: {start: 0,move: 0,end: 0},/*下标*/currentIndex: 0,/*宽度宽度*/winWidth: 0,/*xy位移*/displacement: {x: 0,y: 0},/*滑动*/swipering: false,/*滑动中*/slideing: false,};},mounted() {this.init();},methods: {init() {/* 测试数据*/for (let index = 0; index < 50; index++) {var data = {index: index,show: true,x: 0,y: 0,opacity: index < 3 ? 1 : 0};this.listArr.push(data);}this.winWidth = document.documentElement.clientWidth;},initCSS(index) {let css = {};css["z-index"] = index;css["transform"] = `translate3d(0,0,${(this.currentIndex - index) *50}px)`;css["transitionDuration"] =   "0ms";return css;},Transform(index) {let css = {};if (!this.swipering) {css["transitionDuration"] = "300ms";} else {css["transitionDuration"] = "0ms";}if (index === this.currentIndex) {css["transform"] = `translate3d(${this.listArr[index].x}px,${this.listArr[index].y}px,${(this.currentIndex - index) * 50}px)`;}css['opacity'] = this.listArr[index].opacity;return css;},touchStart(e) {if(this.slideing) return;this.swipering = true;this.x.start = e.touches[0].pageX;this.y.start = e.touches[0].pageY;},// 滑动计算touchMove(e, index) {if(this.slideing) return;if(this.listArr.length == index + 1){return;}this.x.move = e.touches[0].pageX;this.y.move = e.touches[0].pageY;this.displacement.x, (this.listArr[index].x = this.x.move - this.x.start);this.displacement.y, (this.listArr[index].y = this.y.move - this.y.start);},// 滑动结束判断是否超过一定值touchEnd(index) {this.swipering = false;if(this.listArr.length == index + 1){return;}if (this.listArr[index].x > 0 &&this.listArr[index].x > this.winWidth / 2 - this.winWidth / 4.5) {this.touchEndNext(index);} else if (this.listArr[index].x < 0 &&this.listArr[index].x < -this.winWidth / 2 + this.winWidth / 4.5) {this.touchEndNext(index);} else {this.listArr[index].x = 0;this.listArr[index].y = 0;this.slideing = false;}},touchEndNext(index) {this.slideing = true;this.listArr[index].x = this.listArr[index].x * 3;this.listArr[index].y = this.listArr[index].y * 3;var a = setTimeout(() => {this.$set(this.listArr[index], "show", false);this.$nextTick(() => {this.currentIndex++;if(index + 3 < this.listArr.length){this.$set(this.listArr[index + 3], "opacity", 1);}this.slideing = falsea;});}, 300);}}
};
</script>

.slide {position: relative;width: 95%;height: 500px;perspective: 1000px;perspective-origin: 50% 150%;transform-style: preserve-3d;
}
.slide .slide_item {transform-style: preserve-3d;display: flex;width: 100%;height: 100%;border-radius: 20px;position: absolute;z-index: 30;background: #fff;display: flex;justify-content: center;align-items: center;text-align: center;/* opacity: 0; *//* display: none; */text-align: center;font-size: 30px;line-height: 1;transform: translate3d(0px, 0px, 0px) rotate(0deg);box-shadow: 0 10px 15px 0 rgba(0, 0, 0, 0.15);transition: 300ms;opacity: 0;flex-direction: column;
}
.slide .slide_item .title{font-size: 50px;
}
.slide .slide_item .text{font-size: 16px;margin-top: 10px;
}

由于csdn没有vue格式代码插入所以分成三段展示

这篇关于H5仿探探左右滑动效果Vue.js的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/262625

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏