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…

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…

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

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

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

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

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

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

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

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

安装linux修复系统文件夹,误删除 Linux 系统文件了?这个方法教你解决

误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收站,删除后的…

linux tmux 详细教程,Linux下的神器介绍之Tmux分屏器

前言我们为什么需要分屏器呢?对于这个问题,我想大家肯定都有自己的看法。主流的观点是这样的,对于生活在Linux下的人(开发人员、运维人员、普通爱好者)都不可避免的使用终端模拟器(比如,gnome-terminal)去执行一些命令或者脚本。但…

laravel created_at 时间戳_使用 HTTP 测试测试 Laravel 中间件

文章转发自专业的Laravel开发者社区,原始链接:https://learnku.com/laravel/t/34002在本文中,我将展示一个使用 HTTP 测试中间件的实例。HTTP 级测试更能适应变化,可读性更强。在最近与 Adam Wathan 和 Taylor Otwell 合拍的《全栈…

动物识别专家系统python_Python有哪些作用?

Python是什么呢?Python是一种全栈的开发语言,如果能学好Python,前端、后端、测试、大数据分析、爬虫等这些工作你都能胜任。那Python有哪些作用呢?Python主要有以下四大主要应用:网络爬虫网站开发人工智能自动化运维接…

linux mint图标大小,Cinnamon:LinuxMint 15桌面设置小技巧

touchwiz自身也在做不断的革新,例如7屏分页,桌面切换3d效果,增强型的下拉菜单设置等。win10多桌面最多可以支持7个桌面开启,而且win10切换多桌面是有快捷键的,可以帮助用户迅速切换或创建以及关闭多桌面。切换方法一&a…

操作系统源代码_国产操作系统“之光”?Windows XP绝密源代码泄露,BT种子已在网上疯传...

微软的Windows操作系统是目前使用人数最多、覆盖最广的桌面操作系统,从安全角度来看,其系统源代码对于公众而言可以说是绝密。不过......现在......,黑客在4Chan平台上以BT种子文件的形式在线泄漏了多个旧Windows版本的源代码,包括…

linux设置多语言环境,怎么为Linux系统配置多语言环境?

这篇文章主要讲述了怎么为Linux系统配置多语言环境的基本方法,其中还包括编码的修改方法,我们就拿用户使用最多的Ubuntu和CentOS这两个为例子吧。需要的朋友可以参考下。修改 /etc/sysconfig/i18n 文件,如LANG“en_US.UTF-8”,xwi…

轴承新旧型号对照表_精密机床主轴轴承,高端轴承进口清关报关流程

精密机床的主轴对轴承精度的要求非常高,我国目前在这一技术上仍然处于一片空白,那么高精度的轴承要怎么进口呢?高精度轴承进口这块其他国家管控得比较严格,高精度轴承的进口又会遇到哪些问题呢?在我们的生活中轴承几乎…

开机自启动程序关闭方法_电脑非常卡,总有软件偷偷自启动?学会这1招,永久关闭它们!...

小编有一个朋友,前段子发微信问我,说他的电脑非常卡,重装电脑后,会好转许多,非常流畅,但是过了几天又卡了。我问了他的电脑配置,首先电脑的配置是绝对ok。当前一流水平,后来我远程操…

蒙特卡洛模拟_蒙特卡洛模拟法求期权价值

今年跟朋友讨论了一个期权问题。“Earn Out”方式并购下的金融工具确认。大致条款如下(非真实情况):收购一家标的企业估值15000万元。盈利预测情况如下:收购协议中约定了第一期支付对价50%。同时第二期对价于2021年支付50%。同时若低于2021年净利润低于9…

双亲委派机制_面试官:双亲委派机制的原理和作用是什么?

说到双亲委派机制,就必须要先要弄清楚Java的类加载器什么是类加载器Java类加载器(ClassLoader)是Java运行时环境(JRE)的一部分,负责动态的将Java类加载到Java虚拟机的内存空间。类加载器有哪些主要有三个:引导类加载器(Bootstrap ClassLoader…

无广告的pdf阅读器_奥利给!免费无广告!功能超齐全!这样的良心国产软件,真的不多了!...

日常生活工作中,我们会碰到各种各样的PDF文档,它是一种全球通用的格式,由Adobe公司开发。PDF有通用性好、格式不会乱变、保真性高等优点。但同时,PDF也是让我们感到困惑最多的格式之一,因为与Word文档等其他常见办公软…

android自定义游戏闯关图,Android自定义View(四) -- Canvas

本文计划根据HenCoder系列文章进行学习,所以代码风格及博文素材可能会摘自其中。1 范围裁切范围裁切有两个方法: clipRect() 和 clipPath()。裁切方法之后的绘制代码,都会被限制在裁切范围内。1.1 clipRect()使用很简单,直接应用&…

iPhone记步和Android计步,手机中运动步数是如何计算的?

微信运动每天都记录着你走路的步数,他会形成榜单,走的多收到很多赞,走的少则无人关注,如果你走到第一,你的照片将霸占排行榜封面。所以一段时间,每个人为了霸占封面疯狂走路、刷步,然而有时我们…