1. 页面在手机端不能上下滑动,在PC端浏览器正常滑动
说明:在设置了overflow:auto;属性的前提下,H5页面在PC端浏览器里展示可以上下滑动,在ios上可正常滑动,在安卓手机 上不能上下滑动;这现象并不是ios和安卓兼容性问题!
原因:设置了touch-action: none;这属性为局部或者全局属性,将这条属性注释即可正常滑动。
2.使用PullRefresh和List列表实现下拉刷新和上拉加载时出现的问题
问题1. 下拉刷新时在手机上,不论滑到任何位置,只要下拉就刷新
原因:滑动的区间设置错了,此时滑动的区间应是此组件的父盒子,我将overflow:scroll设置给了最外层盒子
问题2. 上拉加载时展示的列表始终只包含当前某一页,而不是当前页和加载出的那一页
原因:请求接口的参数不应该是current++,也就是不应该是当前页数+1,而是始终保持当前页数,请求的size=current*size
问题3. 下拉时,当数据很少的情况下,页面的最下面部分被遮住
原因:给van-list设置了height,且height: 80%,van-list必须设置高,否则无法滑动
解决办法:设置最小高:min-height: calc(100vh - 100px); overflow: hidden;
问题4.上拉加载时出现重复加载问题
van-list的属性finished触发时间错误,如果直接放在@load方法中,则会出现一直请求加载
解决办法:将finished=true放在请求接口返回数据的方法里,当当前页面数据大于等于返回的总条数,finished=true,显示加载完成,不再触发load加载事件。
注:附上下拉刷新、上拉加载部分的代码
<template> <van-pull-refresh v-model="isLoading" :head-height="20" @refresh="onRefresh"> <van-list v-model="loading" :finished="finished" :offset="1" :immediate-check="false" :error.sync="error" finished-text="已全部加载完成" error-text="请求失败,点击重新加载" @load="onLoadList" > </van-list> </van-pull-refresh> </template>
<script> data(){ return { isLoading: false, finished: false, loading: false, } }, methods:{ getVideoList() { getVideoList(this.current, this.selectDisposeStatus, this.searchValue).then(resp => { this.videoList = resp.data.records this.isVideoList = false if (this.videoList.length >= resp.data.total) { this.finished = true } }).catch(() => { this.error = true }) }, onRefresh() { this.current = 1 this.getVideoList() this.isLoading = false this.$toast('刷新成功') }, onLoadList() { this.current++ this.loading = false this.getVideoList() this.$toast('加载成功') }, } </script>
补充知识:Vant与Element-ui出现Property '$notify' must be of type 'ElNotification'错误
遇到问题:
ERROR in /Users/oyo/projects/dataplatform/coconut/node_modules/vant/types/notify.d.ts 33:5 Subsequent property declarations must have the same type. Property ‘$notify' must be of type ‘ElNotification', but here has type ‘Notify'.
原因是两个组件库都在应用上添加了 $notify 方法;
解决方法是:只安装一个组件库, 另一个组件库按需引入
报错示例:
npm install vant element-ui
vant 和 element-ui 都有 $notify 方法, 会报错
import Vue from 'vue'; import Vant from 'vant'; import 'vant/lib/index.css'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(Vant); Vue.use(ElementUI);
解决方案:
import Vue from 'vue'; import Vant from 'vant'; import 'vant/lib/index.css'; // 按需引入你用到的组件, 而不是安装整个组件库 import ElButton from 'element-ui/lib/button'; import 'element-ui/lib/theme-chalk/button.css'; Vue.use(Vant); Vue.component('el-button', ElButton);
tsconfig.json { "compilerOptions": { "paths": { // 指向正确的声明映射 "element-ui/lib/button": ["node_modules/element-ui/types/button"] } } }
以上这篇解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。