VUE 滚动插件(better-scroll)

1. 概述

1.1 说明

better-scroll是一款重点解决移动端(已支持PC)各种滚动场景需求的插件。例如淘宝聚划算中的类型选择(女装/家纺/生鲜美食等),没有滚动条显示却实现了滚动功能。

1.2 better-scroll安装

  npm install better-scroll --save 安装至项目中

1.3 better-scroll使用

  better-scroll常见应用场景(列表滚动)的html结构:

<div class="wrapper">
  <ul class="content">
    <li>...</li>
    <li>...</li>
    ...
  </ul>
  <!-- 这里可以放一些其它的 DOM,但不会影响滚动 -->
</div>

  备注:better-scroll是作用在外层wrapper容器上的,滚动的部分是content元素。并且better-scroll只处理容器(wrapper)的第一个子元素(content)的滚动,其他的元素都会被忽略。

  better-scroll初始化代码:

better-scroll提供了一个类,实例化的第一个参数是一个原生的DOM对象,如果不是传递的对象,而是传递的字符串(类名或者id),better-scroll内部会尝试调用querySelector去获取这个DOM对象。

<->直接传递DOM对象

import BScroll from ‘better-scroll‘
let wrapper = document.querySelector(‘.wrapper‘)
let scroll = new BScroll(wrapper)

<二>传递字符串,使better-scroll内部去获取DOM对象

import BScroll from ‘better-scroll‘
let scroll = new BScroll(‘.wrapper‘)

2. 代码

2.1 代码示例

2.1 子组件scrollChild(横向滚动组件)

<template>
  <div class=‘move-tabs‘>
    <div class=‘tabs-wrapper‘ ref=‘tabsWrapper‘>
      <ul ref=‘tab‘>
        <li v-for=‘(item, index) in tabs‘ :key=‘index‘>
          <div class=‘tab-item‘>
            <div class=‘expand-block‘>
              {{item.name||‘无‘}}
            </div>
          </div>
        </li>
      </ul>
    </div>
  </div>
</template>
<script>
  import BScroll from ‘better-scroll‘

  export default {
    props: {
      data: Array,
    },
    data() {
      return {
        tabs: [],
        mX: 0,
        tabWidth: 300,
      }
    },
    mounted() {
      this.$nextTick(() => {
        console.log(this.data)
        this.tabs = this.data
        this._initMenu()
      })
    },
    methods: {
      _initMenu() {
        const tabsWidth = this.tabWidth
        const width = this.tabs.length * tabsWidth
        this.$refs.tab.style.width = `${width}px`
        this.$nextTick(() => {
          if (!this.scroll) {
            this.scroll = new BScroll(this.$refs.tabsWrapper, {
              scrollX: true,
              eventPassthrough: ‘vertical‘,
            })
          } else {
            this.scroll.refresh()
          }
        })
      },
    },
  }
</script>
<style scoped>
  .move-tabs {
    position: relative;
    top: 0;
    bottom: 0;
    width: 100%;
  }
  .tabs-wrapper {
    height: 120px;
    width: 100%;
    box-sizing: border-box;
    overflow: hidden;
    white-space: nowrap;
  }
  .tab-item {
    float: left;
    width: 280px;
    height: 120px;
    padding: 10px;
    margin-right: 20px;
    background: #f5f5;
    box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.1);
    border-radius: 4px;
  }
  .expand-block {
    font-size: 30px;
    font-weight: bold;
    color: #333333;
  }
</style>

2.1 父组件scrollParent(调用子组件)

<template>
<div>
  <child-scroll :data=‘scrollList‘ />
</div>
</template>

<script>
  import ChildScroll from ‘../components/scrollChild‘
  export default {
    name: "scrollParent.vue",
    components: {
      ChildScroll,
    },
    data(){
      return {
        scrollList:[
          {name:‘北京‘},
          {name:‘上海‘},
          {name:‘杭州‘},
          {name:‘广州‘},
          {name:‘郑州‘},
          {name:‘深圳‘},
          {name:‘合肥‘},
          {name:‘徐州‘},
          {name:‘西安‘},
          {name:‘石家庄‘},
          {name:‘呼和浩特‘},
          {name:‘兰州‘},
          {name:‘包头‘},
          {name:‘重庆‘},
        ]
      }
    },
  }
</script>

<style scoped>

</style>

2.2 结果展示

  可左右滑动出所需要展示的列表集合

原文地址:https://www.cnblogs.com/ajuan/p/10690179.html

时间: 2024-10-30 07:33:17

VUE 滚动插件(better-scroll)的相关文章

Infinite Scroll - jQuery &amp; WP 无限滚动插件

无限滚动(Infinite Scroll)也成为自动分页.滚动分页和无限分页.常用在图片.文章或其它列表形式的网页中,用来在滚动网页的时候自动加载下一页的内容.Infinite Scroll  这款 jQuery & WordPress 无限滚动插件可以帮助你轻松实现这个效果. 插件下载     效果演示 下面是所有的配置选项: $('.selector').infinitescroll({ loading: { finished: undefined, finishedMsg: "&l

Javascript和jQuery WordPress 图片轮播插件, 内容滚动插件,前后切换幻灯片形式显示

用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插件能够帮助到你.Nivo Slider首先推荐的这款插件号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如下特色:? 16个独特的过渡效果? 简洁和有效的标记? 加载参数设置?

jQuery无缝滚动插件

插件代码 ;(function ($) { // jQuery marquee 插件 $.fn.marquee = function (options) { // 默认设置 var defaults = { derection: "top", interval: 50 }; // 合并后的参数设置 var options = $.extend(defaults, options); var $mar = $(this), original = $mar.children().first

jq滚动插件jquery.nicescroll+定位到底部

<pre name="code" class="html"><!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="X-UA-Compat

基于jquery的锚点滚动插件(百度百科效果) anchorScroll.js

1.插进使用场景 请打开https://baike.baidu.com/item/%E6%97%A5%E6%9C%AC%E5%8A%A8%E7%94%BB#hotspotmining,查看百度百科页面效果. 2.插件源代码: /* * 作者:孟繁贵 * 2017-08-25 * 版本:1.0 */ jQuery.anchorScroll = function(elem1, elem2) { var currObj, offsetTop = 0, h2List = new Array(), h3L

liMarquee – jQuery无缝滚动插件

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><title>jQuery无缝滚动插件liMarquee演示-向上滚动_dowebok</title><link rel="stylesheet" href="css/liMarquee.css"><style>

onepage scorll全屏滚动插件

onepage scorll全屏滚动插件,它能够很方便.很轻松的制作出单页/全屏滚动页面.兼容主流浏览器,懒人图库推荐下载! 使用方法: 1.head区域引用文件onepage-scroll.css,jquery.min.js,jquery.onepage-scroll.min.js及以下样式 .page1 { } .page2 { background-color: #FF7F50;} .page3 { } .page4 { background-color: #f90;} p.title {

Flexslider - 响应式的 jQuery 内容滚动插件

FlexSlider 是一款轻量的响应式 jQuery 内容滚动插件,能够帮助你在项目轻松的创建漂亮的内容滚动效果.这款插件曾经连续多年入选 WDL 的年度最佳 jQuery 插件,值得大家在网站开发中试试. 温馨提示:响应式效果需要再 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中才支持. 效果演示     插件下载 使用示例: <div class="flexslider"> <ul class="slides"&g

jQuery-全屏滚动插件【fullPage.js】API 使用方法总结

jQuery-全屏滚动插件fullPage.js使用方法总结 作者github及下载地址:https://github.com/alvarotrigo/fullPage.js 今天说下jQuery的一款插件fullpage.js,可以实现全屏滚动,非常流行的效果,兼容性IE8+ 还算不错,使用网站有小米,等电子产品.汽车全屏滚动展示,看起来比较高大上,接下来我全面解析下此款插件!附我做的一个简易效果,刚入博客园,不知能怎么上demo,只能截图了! 兼容性: 支持 IE8+ 及其他现代浏览器. 主