移动端经常会用页面高度超过了手机屏幕的高度,但是有没有滚动条的出现这时候就用 better-scroll 这个插件, iscroll 是常用的但是这个组件没有人在维护了,导致很多的问题没有办法解决。

better scroll 的页面结构为

<div class="shop_box" ref="shopBox">
<div class="shop_container"> <div class="shop_header"> </div> </div>
</div> 第一层 div:
高度固定比如是手机屏幕的高度,overflow-y:hidden;
第二层 div:
高度不固定,只设置宽度 %。
第三层 div:
数据部分,肯能有很多很多

1、vue2 中如何使用 better-scroll

首先安装better-scroll,然后在配置文件中查看

"dependencies": {
"vue": "^2.2.6",
"vue-router": "^2.3.1",
"vue-resource": "^1.3.3",
"better-scroll": "^0.1.7"
},

然后在要用的地方引用这个组件

import BScroll from 'better-scroll';

接下来初始化这个组件,在methods 里面将这个写为一个方法

_initScroll () {
this.shopBoxScroll = new BScroll(this.$refs.shopBox, {
// better-scroll 会将点击事件去掉,要在这里开启,同时点击在PC 会被执行两次,要在这里控制
click: true
});
}

然后在函数钩子里面调用这个方法,因为mvvm 框架的数据是一步的所以要在函数周期里面使用

created () {
this.$nextTick(() => {
this._initScroll();
});
},

在页面中要调用的地方

<div class="shop_box" ref="shopBox">

整体为:

<script>
import starT from '../star/star.vue';
import BScroll from 'better-scroll'; export default {
props: {
seller: {
type: Object
}
},
created () {
this.$nextTick(() => {
this._initScroll();
});
this.classMap = ['min', 'discount', 'guarantee', 'invoice', 'special'];
},
methods: {
_initScroll () {
this.shopBoxScroll = new BScroll(this.$refs.shopBox, {
// better-scroll 会将点击事件去掉,要在这里开启,同时点击在PC 会被执行两次,要在这里控制
click: true
});
}
},
components: {
'v-star': starT
}
};
</script>

(总结):1、在 vue2中如何获取dom 结构

在要获取的dom元素上添加

ref="shopBox"
这样在 js 中
$refs.shopBox便可以获取dom 元素。
有时候经常汇报better-scroll 找不到孩子元素原因是:
html 中 ref="" 中间不要用空格尽量用驼峰命名 2、移动端经常会有这种场景

数据是横行滚动的,这个时候也是better-scroll 只不过这回改成横向滚动的就行
this.picScroll = new BScroll(this.$refs.pic_scroll, {
// better-scroll 会将点击事件去掉,要在这里开启,同时点击在PC 会被执行两次,要在这里控制
click: true,
scrollX: true,
eventPassthrough: 'vertical'
});
3、动态DOM使用 better-scroll
  在vue 中如果使用 v-show 控制一个dom的显示隐藏并且这个 dom 中要有 better-scroll 的效果,在v-show 控制显示的地方调用初始化better-scroll的函数便可以,
但是一定要放到this.$nextTick 里面,因为 vue 中 dom都是异步加载。
 // 筛选
chooseScreenShop () {
// tab 高两
this.screenTabtHight = !this.screenTabtHight;
// 去除其它高亮显示
this.classification = false;
this.sortHightLight = false;
// 筛选
if (this.screenTabtHight === true) {
this.screenShopList = true;
this.$nextTick(() => {
this._init();
});
// 其他的隐藏
this.sortShopList = false;
this.classificationBox = false;
} else {
this.screenShopList = false;
}
this.dailog();
},

better-scroll 官网地址为:https://www.npmjs.com/package/better-scroll
在这里面有详细的解说

better-scroll的使用方法,动态创建dom使用better-scroll的更多相关文章

  1. DOM – 7.动态创建DOM + 8.innerText innerHTML value

    7.动态创建DOM 8.innerText  innerHTML  value 7+8 练习:案例:点击按钮动态增加网站列表,分两列,第一列为网站的名字,第二列为带网站超链接的网站名.增加三行常见网站 ...

  2. jQuery – 7.动态创建Dom、删除节点

    动态创建Dom节点     1.使用$(html字符串)来创建Dom节点     2.append方法用来在元素的末尾追加元素     案例:动态生成网站列表     3.prepend,在元素的开始 ...

  3. JS,Jquery,ExtJs不同脚本动态创建DOM对象

    好久不来写东西了,这段时间太慢了,闲了下来看了几篇文章,觉得很好,同时也许咱们大家都能遇到,所以就把它记录下来... 简单使用JavaScript.JQuery.ExtJs进行DOM对象创建的测试,主 ...

  4. JavaScript DOM编程基础精华02(window对象的属性,事件中的this,动态创建DOM,innerText和innerHTML)

    window对象的属性1 window.location对象: window.location.href=‘’;//重新导航到新页面,可以取值,也可以赋值. window.location.reloa ...

  5. JS、JQuery和ExtJs动态创建DOM对象

    做了个简单使用JavaScript.JQuery.ExtJs进行DOM对象创建的测试,主要是使用JavaScript.JQuery.ExtJs动态创建Table对象.动态Table数据填充.多选控制. ...

  6. Vue.js源码解析-Vue初始化流程之动态创建DOM

    目录 前言 一._update 如何判断是初始化还是更新操作? 二.patch 2.1 patch 定义 2.2 初始化的 patch 三.createElm 动态创建DOM 3.1 创建组件节点 3 ...

  7. 动态创建dom元素

    效果图如上所示: 思维nav:就相当于qq空间发表动态(说说),在输入框里输入内容,点击提交(发表),内容就呈现在下面的动态栏里.我这里是准备写一个招聘的app,大家可以随便想象下哪些情况会遇到动态创 ...

  8. jQuery动态创建DOM节点

    var SKU=$("#SKU"); // 通过ID查找到指定表格 var oTable=SKU[0]; // 获取第一个表格 // 获取正文tbody元素 var tBodies ...

  9. 一看就懂——利用getJSON()与each()方法动态创建内容

    一个案例——忘记的时候可以翻阅参考↓<务必放在服务器内才能看效果哟~>   html文件内容如下↓ <!DOCTYPE html> <html> <head& ...

随机推荐

  1. [POJ2404]Jogging Trails

    我太弱了. 我们可以知道一个结论就是对于一个图的话假如所有点的度数都是偶数,那么只需要走一波欧拉回路. 所以我们就把奇点补成偶点. 将两个奇点补充到偶点的最佳方法是选择任意两个奇点连最短路径为权的边 ...

  2. Linux之部署虚拟环境、安装系统

    本章涵盖了Linux的优势和哲学思想,零基础详细记录了部署虚拟环境安装Linux系统,完整演示了VM虚拟机的安装与配置过程,以及Centos 7系统的安装.配置过程和初始化方法. Linux优势分析: ...

  3. cogs 983. [NOIP2003] 数字游戏

    983. [NOIP2003] 数字游戏 ★☆   输入文件:numgame.in   输出文件:numgame.out   简单对比时间限制:1 s   内存限制:128 MB 题目描述 丁丁最近沉 ...

  4. POJ 2954

    PICK定理:格子上的多边形面积=边界上格子点数/2+内部点数-1. 利用叉积求出面积.再枚举边上的点数.然后按公式求出内部点数就可以了. 关于PICK:http://blog.csdn.net/i_ ...

  5. [Angular] Increasing Performance by using Pipe

    For example you make a function to get rating; getRating(score: number): string { let rating: string ...

  6. 全栈JavaScript之路( 二十 )HTML5 插入 html标记 ( 二 )insertAdjacentHTML

    insertAdjacentHTML(),  这种方法也是在IE中最早出现的.如今已纳入html5规范,它接受两个參数,一个是下列的标记之中的一个,一个是要写入的 html 代码文本. beforeb ...

  7. 关于SharePoint讨论板的一些知识(2)--视图中的栏目

    关于SharePoint讨论板的一些知识(2)--视图中的栏目         新建讨论后,默认显示四个栏目:主题.创建者.答复和上次更新时间.         从功能区的当前视图能够看出这是默认的主 ...

  8. Java读源代码学设计模式:适配器Adapter

    适配器模式相关源代码:slf4j-1.6.1.hibernate-3.6.7 大家都知道.log4j是一个广泛使用的日志工具,除此之外.sun公司在JDK中也有自己的日志工具,也就是java.util ...

  9. Linux系统调用具体解释(怎样从用户空间进入内核空间)

    系统调用概述 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同一时候执行的多个进程都须要訪问这些资源,为了更好的管理这些资源进程是不同意直接操作的,全部对这些资源的訪问都必须有操作系统控制. ...

  10. POJ1742 Coins 背包

    题目大意:给出一些钱币的价值和对应的数目,求在一定价值限定下这些钱币能凑成的价值数. 本题用多重背包直接拆分或二进制拆分法都太慢.说起处理一组物品,完全背包可算是比较效率高的,但是本题中物体的数目是有 ...