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

相关文章

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

使用Python实现生命之轮Wheel of life效果

《使用Python实现生命之轮Wheeloflife效果》生命之轮Wheeloflife这一概念最初由SuccessMotivation®Institute,Inc.的创始人PaulJ.Meyer... 最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用python创建生命倒计时图表,珍惜时间

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间