swiper怎么让不会回弹,为什么我的滚动条拉上拉下都会回弹呢?

其它都是正常的,就是拉上去拉下来自己又回弹回去了,拉不到最底部也拉不到最顶部,拉来拉去都会是这样的

9ae3d582bac7b76885ecdab7ef57978a.png

category/index.vue

import CategoryHeader from "./header";

import CategoryTab from "./tab";

import CategoryContent from "./content";

export default {

name: "Category",

components: {

CategoryHeader,

CategoryTab,

CategoryContent

},

data(){

return{

curId: ''

}

},

methods:{

getCurrentId(id){

this.curId = id;

}

}

};

@import "~assets/scss/mixins";

.category{

overflow: hidden;

width:100%;

height:100%;

background-color:$bgc-theme;

}

.g-content-container{

display:flex;

}

.sidebar{

width: 80px;

height:100%;

}

.main{

flex:1;

height:100%;

}

tab.vue

  • class="tab-item"

    :class="{'tab-item-active': item.id === curId}"

    v-for="(item,index) in items"

    :key="index"

    @click="switchTab(item.id)"

    >{{item.name}}

import MeScroll from 'base/scroll';

import {categoryNames} from './config';

export default {

name:'CategoryTab',

components: {

MeScroll

},

data() {

return {

curId:''

};

},

// 因为数据只需要赋值一次,所以就把数据写在methods的init()里

created(){

this.init();

this.switchTab(this.items[0].id);

},

methods:{

init(){

this.items=categoryNames;

},

switchTab(id){

if(this.curId === id){

return;

}

this.curId = id;

this.$emit('switch-tab',id)

}

}

};

@import "~assets/scss/mixins";

$tab-item-height: 46px;

.tab {

width: 100%;

&-item {

height: $tab-item-height;

background-color: #fff;

border-right: 1px solid $border-color;

border-bottom: 1px solid $border-color;

color: #080808;

font-size: $font-size-l;

font-weight: bold;

text-align: center;

line-height: $tab-item-height;

@include ellipsis();

&:last-child {

border-bottom: none;

}

&-active {

background: none;

border-right: none;

color: #f23030;

}

}

}

base/scroll/index.vue

// 滚动条也是使用swiper插件

import { swiper, swiperSlide } from "vue-awesome-swiper";

import MeLoading from "base/loading";

import {

PULL_DOWN_HEIGHT,

PULL_DOWN_TEXT_INIT,

PULL_DOWN_TEXT_START,

PULL_DOWN_TEXT_ING,

PULL_DOWN_TEXT_END,

PULL_UP_HEIGHT,

PULL_UP_TEXT_INIT,

PULL_UP_TEXT_START,

PULL_UP_TEXT_ING,

PULL_UP_TEXT_END

} from "./config";

export default {

components: {

swiper,

swiperSlide,

MeLoading

},

props: {

scrollbar: {

type: Boolean,

default: true

},

//这个data是接收

data: {

type: [Array, Object]

},

pullDown: {

type: Boolean,

default: false

},

pullUp: {

type: Boolean,

default: false

}

},

watch: {

data() {

this.update();

}

},

created(){

this.init();

},

methods: {

update() {

// 外部调用的api

//如果它存在的话再调用swiper下面的update()

this.$refs.swiper && this.$refs.swiper.swiper.update();

},

scrollToTop(speed,runCallbacks) {

// 不是什么回到顶部,而是返回到第一个幻灯片

this.$refs.swiper && this.$refs.swiper.swiper.slideTo(0,speed,runCallbacks)

},

init(){

this.pulling= false;

this.pullDownText= PULL_DOWN_TEXT_INIT;

this.pullUpText= PULL_UP_TEXT_INIT;

this.swiperOption= {

direction: "vertical",

slidesPerView: "auto", //一页能看几张图片,auto是自适应

freeMode: true, //如果设置了这个大力滑可以滑很远

setWrapperSize: true, //自动给sliderwrapper设置高度

scrollbar: {

el: this.scrollbar ? ".swiper-scrollbar" : null,

hide: true //是否自动隐藏

},

on: {

sliderMove: this.scroll,

touchEnd: this.touchEnd,

transitionEnd:this.scrollEnd

}

}

},

// 内部自己使用的

scroll() {

//this.$refs.swiper是通过refs找到这个组件,

//后面的.swiper就是找到它组件的对象,swiper里又很多的属性

const swiper = this.$refs.swiper.swiper;

// 传什么时候显示返回顶部按钮,什么时候隐藏

this.$emit('scroll',swiper.translate,this.$refs.swiper.swiper);

if (this.pulling) {

return;

}

if (swiper.translate > 0) {

//大于0就是下拉

if (!this.pullDown) {

return;

}

if (swiper.translate > PULL_DOWN_HEIGHT) {

this.$refs.pullDownLoading.setText(PULL_DOWN_TEXT_START);

} else {

this.$refs.pullDownLoading.setText(PULL_DOWN_TEXT_INIT);

}

} //下拉

//判断是否到达底部

else if (swiper.isEnd) {

if (!this.pullUp) {

return;

}

const isPullUp =

Math.abs(swiper.translate) + swiper.height - PULL_UP_HEIGHT >

parseInt(swiper.$wrapperEl.css("height")); //判断是否到达上拉的触发条件,//abs的意思是绝对值

if (isPullUp) {

this.$refs.pullUpLoading.setText(PULL_UP_TEXT_START);

} else {

this.$refs.pullUpLoading.setText(PULL_UP_TEXT_INIT);

}

}

},

//滑动停止后触发的事件

scrollEnd(){

this.$emit('scroll-end',this.$refs.swiper.swiper.translate,this.$refs.swiper.swiper,this.pulling);

},

touchEnd() {

if (this.pulling) {

return;

}

const swiper = this.$refs.swiper.swiper;

if (swiper.translate > PULL_DOWN_HEIGHT) {//下拉

if (!this.pullDown) {

return;

}

this.pulling = true;

swiper.allowTouchMove = false; //正在加载时禁止触摸

swiper.setTransition(swiper.params.speed); //通过参数找到初始的速度

swiper.setTranslate(PULL_DOWN_HEIGHT); //拖过头了就移动到100的位置

swiper.params.virtualTranslate = true; //定住不给回弹

this.$refs.pullDownLoading.setText(PULL_DOWN_TEXT_ING);

this.$emit("pull-down", this.pullDownEnd);

}

//上拉,判断是否到底部

else if(swiper.isEnd){

const totalHeight = parseInt(swiper.$wrapperEl.css('height'));

const isPullUp =  Math.abs(swiper.translate) + swiper.height - PULL_UP_HEIGHT >

totalHeight; //判断是否满足触发的条件

if(isPullUp){//上拉

if(!this.pullUp){

return;

}

this.pulling = true;//正在加载中,不能够继续加载

swiper.allowTouchMove = false;//禁止触摸

swiper.setTranslate(-(totalHeight + PULL_UP_HEIGHT - swiper.height));

swiper.params.virtualTranslate = true;//定住不给回弹

this.$refs.pullUpLoading.setText(PULL_UP_TEXT_ING);

this.$emit('pull-up',this.pullUpEnd);

}

}

},

pullDownEnd() {

//下拉后恢复原值

const swiper = this.$refs.swiper.swiper;

this.pulling = false;

this.$refs.pullDownLoading.setText(PULL_DOWN_TEXT_END);

swiper.params.virtualTranslate = false; //开始可以回弹

swiper.allowTouchMove = true; //可以触摸

swiper.setTransition(swiper.params.speed);

swiper.setTranslate(0); //回到0的位置

console.log(swiper.params)

// 下拉回弹后显示header

setTimeout(() =>{

this.$emit('pull-down-transition-end');

},swiper.params.speed);

},

pullUpEnd(){

//上拉后恢复原值

const swiper = this.$refs.swiper.swiper;

this.pulling = false;

this.$refs.pullUpLoading.setText(PULL_UP_TEXT_END);

swiper.params.virtualTranslate = false;//开始可以回弹

swiper.allowTouchMove = true;

}

}

};

.swiper-container {

overflow: hidden;

width: 100%;

height: 100%;

}

.swiper-slide {

height: auto;

}

.mine-scroll-pull-up,

.mine-scroll-pull-down {

position: absolute;

left: 0;

width: 100%;

}

.mine-scroll-pull-down {

bottom: 100%;

height: 80px;

}

.mine-scroll-pull-up {

top: 100%;

height: 30px;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异构服务器 微服务_Spring Cloud Alibaba Sidecar 多语言微服务异构

Spring Cloud Alibaba Sidecar 介绍自 Spring Cloud Alibaba 2.1.1 版本后增加了 spring-cloud-alibaba-sidecar 模块作为作为一个代理的服务来间接性的让其他语言可以使用spring cloud alibaba等相关组件。通过与网关的来进行路由的映射,从而可以做到服务的获取&am…

采用的php cms分校站点 打开特别慢,phpcms v9 打开网站特别慢 增加数据库缓存方法...

SET GLOBAL QUERY_CACHE_SIZE80000000;设置好查询缓存的大小就行了。比如设置个20MB.SET GLOBAL QUERY_CACHE_SIZE20000000;mysql会将查询SQL和结果集存到缓存中,等下次遇到相同的SQL语句时,结果集从缓存中读取。1.设置缓存大小时,至少给它40…

python3 console input_Python3 tkinter基础 Button command 单击按钮 在console中打印文本

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-10-1Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""import tkinter as tk# 面向对象…

matlab教程点语言,编程语言 / Matlab教程_电脑教程学习网( 5 )

逐次超松弛方法(SOR方法)求解方程组日期:2014-09-26 21:03:34点击:370好评:0#includeiostream.h//逐次超松弛方法(SOR方法)求解方程组 #includemath.h #includeiomanip.h #define n 3 void main() { double A[n][n]{{5,2,1},{-1,4,2},{2,-3,1…

python中timedelta_Python – 使用时间戳,timedelta的日期和时间比较

我花了过去一小时挖掘Python文档和许多SO问题;请原谅我是另一个Python新手被Python时代的谜团所困扰.我的目标是确定当前时间和某个日期/时间之间的差异,而不管过去/将来,并返回可执行的格式,如秒.例如,如果输入是下午2:00和下午4:00(现在),我想要说“-7200”,表示事件发生在两…

php hex2bin nodejs,Nodejs Serialport文档翻译

版本号:Serialport5.0.0-beta3本文链接想象一个世界,你可以在那写javascript来控制搅拌机,灯,安全系统或者甚至是机器人。是的,我说的是机器人。那个世界就是这儿,现在使用node serialport。它提供一个非常简单的接口所…

sql 以a开头的所有记录_SQL开发与数据库管理笔记

简介: SQL开发与数据库管理笔记,看过的都说好!原创: 丶平凡世界文章链接:https://mp.weixin.qq.com/s/Y9TmoHOyh7To7jUrMulvEw一、开发管理篇1.按姓氏笔画排序Select * From TableNameOrder By CustomerNameCollate Ch…

python apscheduler执行_Python下定时任务框架APScheduler的使用

今天准备实现一个功能需要用到定时执行任务,所以就看到了Python的一个定时任务框架APScheduler,试了一下感觉还不错。1.APScheduler简介:APScheduler是Python的一个定时任务框架,可以很方便的满足用户定时执行或者周期执行任务的需…

oracle trace发起用户,Oracle 使用TRACE进行SQL性能分析

设置sql_trace参数为true会对整个实例进行跟踪,包括所有进程:用户进程和后台进程,会造成比较严重的性能问题,生产环境一定要慎设置sql_trace参数为true会对整个实例进行跟踪,包括所有进程:用户进程和后台进…

python画二次函数图像的顶点_画二次函数图像的步骤

画二次函数图像的步骤2019-11-14 09:26:25文/叶丹画二次函数图像的步骤:五点法是选五个极其重要的点,分别为顶点、与x轴的交点、与y轴的交点及其关于对称轴的对称点,然后根据这五点作图。二次函数的画法五点法五点草图法又被叫做五点作图法是…

php rss xml,php 一个完全面向对象的RSS/XML类的简单示例

这篇文章主要为大家详细介绍了php 一个完全面向对象的RSS/XML类的简单示例,具有一定的参考价值,可以用来参考一下。感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧。经测试代码如下:/*** RSS/XML类** param* arrange (512.…

zynq中mgtx应用_基于ZYNQ的UCOS移植(TCP通讯)

周五在某小徐处借到了一块Zedboard开发板,平时在公司没有机会做SDK开发的笔记,今天就趁着这块开发板简要记录一些SDK的基本操作。一、功能简介通过第三方库创建SDK工程在ZYNQ-UCOS中实现TCP echo通讯二、配置需求操作系统Windows 10(64位)开发环境SDK 20…

oracle主机名的脚本,一个开启Oracle服务和更改主机名的脚本-Oracle

一个开启Oracle服务和更改主机名的脚本真不知道该起一个什么题目,这是昨天数据库老师提出的问题。由于实验室的机器都装了还原卡,每次开机或重启都会回到初始状态,所以数库的listener.ora、tnsnames.ora文件里的host不是本机的计算机名&#…

python中的字体英文名_对python opencv 添加文字 cv2.putText 的各参数介绍

如下所示:cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细其中字体可以选择FONT_HERSHEY_SIMP…

oracle备份 ram,Oracle备份时出现AIX系统的3D32B80D错误

环境:数据库: AIX5.3下的64位Oracle 10.2.0.1.0TSM5.4:Windows2003带库:IBM3100问题描述:1、aix系统出现3D32B80D错误。如下:JTXXDBS01:> errpt |moreIDENTIFIER TIMESTAMPT C RESOURCE_NAMEDESCRIPTION3D32B80D020…

python僵尸进程和孤儿进程_python学习笔记——孤儿进程和僵尸进程

1 基本概述1.1 孤儿进程和僵尸进程父进程创建子进程后,较为理想状态是子进程结束,父进程回收子进程并释放子进程占有的资源;而实际上,父子进程是异步过程,两者谁先结束是无顺的,一般可以通过父进程调用wait…

linux weblogic启动目录,Linux下WebLogic开机启动设置

为了方便管理,可以写一个启动脚本用来启动weblogic,方法如下:用root用户登录Linux,打开目录/etc/rc.d/init.d,新建一个空文本文件,名称改为weblogic(此文件名为将来的服务名,可自定义,最好以域名…

算法描述怎么写_管件材料描述怎么写

通过以上及其我们了解到了管道上不同的管道元件,包括:弯头、三通、异径管、管帽等。但在材料等级表中如何清楚的描述它们的特性,至关重要,因为这涉及材料采购是否正确。以下主要介绍管件材料描述的写法:①弯头 ②DN15~…

linux复制文件通信方式,Linux分布式文件拷贝

在开发过程中总会遇到这种情况,就是需要将一个文件从一个机器拷贝到其他的很多台机器中,最简单的方法是用U盘拷出来再一个一个机器的插进去拷贝,另一张方法则是利用飞鸽传书或者QQ等工具传输,但是都不是很方便,因为每次…

python矩阵施密特标准型_矩阵与数值计算(3)——Schur标准型和Jordan分解

前言之前介绍过几种矩阵分解方法,都可以有效的提升矩阵方程的数值求解问题,其中LU分解尤其适合于中小型、稠密矩阵的求解问题。我们最理想的矩阵就是可相似对角化的矩阵,直接可以分解成两个酉矩阵和一个对角矩阵的形式,那么如果一…