npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

view-scroller

v1.2.17

Published

page scroller plugin

Downloads

10

Readme

view-scroller GitHub package.json version Build Status

view-scroller 是一款基于typeScript+snabbdom编写的滚动插件,可实现自定义滚动条样式,支持滚动顶部、底部、左边、右边事件,可实现无限滚动,上拉自动加载下一页等场景。可兼容vue2.0、vue3.0前端框架。

使用注意

插件可以满足大部分浏览器场景

  • vue框架,插件提供了自定义指令v-view-scroller来实现大部分场景的滚动初始化,并且兼容vue2.0和vue3.0,省去了自行销毁和重新初始化的适配工作

  • 但angular、react这类js框架需要在条件渲染过程中自行销毁和重新初始化

浏览器兼容性

| browser | IE | Firefox | Chrome | Edge | Opera | safari | | ------- | ------- | ------- | ------- | ------- | ------- | ------- | | version | NO | 69 | 64 | 79 | 51 | 13.1 |

Demo

滚动插件demo:https://chaosst.gitee.io/view-scroller/src/examples/index 滚动插件移动端demo:https://chaosst.gitee.io/view-scroller/src/examples/mobile 滚动插件vue指令初始化demo:https://chaosst.gitee.io/view-scroller/src/examples/vue

如何启动项目例子

拉取github项目到本地后

npm run start

http://localhost:3000/src/examples/index 查看例子 http://localhost:3000/src/examples/mobile 查看移动端例子 http://localhost:3000/src/examples/vue 查看vue指令使用例子

如何使用

Node(以Vue2.0为例)

兼容vue2.0、vue3.0、typeScript项目

安装

npm i view-scroller -S

例子

vue、react、angularjs建议使用css选择器进行初始化,可兼容条件渲染

<!-- demo.vue -->
<template>
    <div class="page">
        <!-- 初始化元素不兼容使用v-if之类的条件编译,请使用一层容器包裹,包裹容器内使用条件编译 -->
        <div v-if="show" ref="myscroller" v-view-scroller="{selector:'#scroller',options:scrollerOptions}">
            <el-form ref="form" id="scroller">
                ...
            </el-form>
        </div>
    </div>
</template>
/* vue3 main.js */
import { directives } from 'view-scroller'
app.use(directives)
/* demo.vue */
import { directives } from 'view-scroller'
// v1.2.2版本开始,可不再引入index.css
// import 'view-scroller/dist/index.css'
Vue.use(directives)

export default {
    name:'demo',
    data(){
        return {
            show:true,
            scrollerOptions:{
                alwayShow:true,
                class:'myscroller',
                width:500,
                height:500,
                theme:'light',    
                /* 滚动事件,定义事件触发的四个方向距离 */
                limit:{
                top:10,
                bottom:10,
                left:10,
                right:10
                },
                /* 滚动条样式配置 */
                scrollBar:{
                    size:10,
                    right:0,
                    bottom:0,
                    minLength:40,
                    spacing:14
                },
                on:{
                    /* 可以监听滚动事件 */
                    scroll:(e)=>{
                    },
                    scrollTop:(e)=>{
                        console.log('触发顶部事件')
                        e.done()
                    }
                }
            }
        }
    },
    methods:{
    },
    mounted(){
        /* 滚动方法 */
        this.$refs.myscroller._viewScrollerEl.scroller.scrollTo({x:0,y:100}, 500)
    }
}

浏览器

兼容各种主流浏览器

安装

拉取github项目根目录下dist/index.global.js,dist/index.css到项目中

<!-- 全局引入 -->
<script src="./dist/index.global.js"></script>
<!-- v1.2.2版本开始,可不再引入index.css -->
<!-- <link href="./dist/index.css" rel="stylesheet" type="text/css" /> -->

例子

<script>
        window.onload = function(){
            var el = document.getElementsByClassName('content')[0]
			// 传入元素对象初始化滚动条
            var scroller = window.viewScroller.init(el,{
                alwayShow:true,
				class:'myscroller',
				width:500,
				height:500,
				theme:'light',    
				/* 滚动事件,定义事件触发的四个方向距离 */
				limit:{
				  top:10,
				  bottom:10,
				  left:10,
				  right:10
				},
				/* 滚动条样式配置 */
				scrollBar:{
					size:10,
					right:0,
					bottom:0,
					minLength:40,
					spacing:14
				},
				on:{
					/* 可以监听滚动事件 */
					scroll:function(e){
					},
					scrollTop:function(e){
                        console.log('触发顶部事件')
                        e.done()
					}
				}
            })
			/* 滚动方法 */
			scroller.scrollTo({x:0,y:100}, 500)
		}
</script>
...
<body>
	<div class="page">
        <div class="content">
		...
		</div>
	</div>
</body>

API

viewScroller vue的自定义指令: v1.2.8+

  • v-view-scroller="DirectiveOptions"
export interface DirectiveOptions{
    selector?:string,
    options?:ScorllBarOptions
}
  • 以上是自定义指令选项的类型定义,都不是必填的
  • selector是一个css选择器,可以初始化未渲染出来的组件元素,例如初始化el-table下的表格body
  • options是viewScroller的初始化选项,详情查看下表ScorllBarOptions属性

viewScroller 对象属性:

  • version
  • 当前插件的版本 v1.2.2+

viewScroller 初始化方法:

  • init(el:HTMLElement|string, options?:ScorllBarOptions)
  • 对节点el进行滚动条初始化,当el为string类型,会作为css选择器使用获取初始化的节点,选项options为非必填

viewScroller 初始化属性ScorllBarOptions:

| 属性 | 描述 | 是否必填 | 类型 |默认值| |-----|-----|-----|-----|-----| | mobile | 滚动插件是否设置为移动端模式,滚动触发事件会变成适配移动端的touch事件,alwayShow为false时的显示规则会变成滚动时出现,滚动完成后2秒消失 v1.2.0+ | 否 | boolean | false | | refresh | 滚动插件是否支持下拉刷新,具体配置看下表refreshOption v1.2.2+ | 否 | boolean object | false | | width | 滚动插件外层容器的宽度,单位px,支持string设置其他单位 | 否 | string number | auto | | height | 滚动插件外层容器的高度,单位px,支持string设置其他单位 | 否 | string number | auto | | alwayShow | 滚动插件的滚动条是否一直可见 | 否 | boolean | false | | class | 滚动插件外层容器的样式类名 | 否 | string | | | theme | 滚动插件的主题设置(dark 深色, light 浅色, dark-reverse 深色反转, light-reverse 浅色反转) | 否 | string | dark | | limit | 配合滚动插件的scrollTop,scrollBottom,scrollLeft,scrollRight事件使用 | 否 | object | | | scrollBar | 滚动插件的样式设置 | 否 | object | | | on | 滚动插件的绑定事件集合,可在初始化时进行事件绑定 | 否 | object | |

limit 属性:

| 属性 | 描述 | 是否必填 | 类型 |默认值| |-----|-----|-----|-----|-----| | top | scrollTop事件触发距离,向顶部滚动时,当离顶部距离小于该值时触发,单位px,不支持string设置其他单位 | 否 | number | 10 | | bottom | scrollBottom事件触发距离,向底部滚动时,当离底部距离小于该值时触发,单位px,不支持string设置其他单位 | 否 | number | 60 | | left | scrollLeft事件触发距离,向左边滚动时,当离左边距离小于该值时触发,单位px,不支持string设置其他单位 | 否 | number | 10 | | right | scrollRight事件触发距离,向右边滚动时,当离右边距离小于该值时触发,单位px,不支持string设置其他单位 | 否 | number | 60 |

scrollBar 属性:

| 属性 | 描述 | 是否必填 | 类型 |默认值| |-----|-----|-----|-----|-----| | size | 滚动条的粗细(垂直方向的宽度或水平方向的高度),单位px,支持string设置其他单位 | 否 | number string | 6 | | right | 垂直方向滚动条离容器最右方的距离,单位px,支持string设置其他单位 | 否 | number string | 4 | | bottom | 水平方向滚动条离容器最底部的距离,单位px,支持string设置其他单位 | 否 | number string | 4 | | radius | 滚动条的圆角设置,单位px | 否 | number string | 4 | | minLength | 当容器滚动内容足够多的时候,可以设置滚动条最小的长度来避免滚动条会无限接近一个点,单位px,不支持string设置其他单位 | 否 | number | 20 | | spacing | 滚动容器预留垂直方向或水平方向滚动条的间距空间,默认0,为0时嵌套滚动插件时的滚动条有可能出现多层重合,可以设置大于0的距离来解决这个问题,单位px,支持string设置其他单位 | 否 | number,string | 0 |

on 属性:

| 属性 | 描述 | 是否必填 | 类型 |默认值| |-----|-----|-----|-----|-----| | scroll | 滚动条的滚动事件,当容器内容滚动时触发 | 否 | function | | | scrollTop | 滚动容器滚动到顶部距离limit.top时触发,参数请查看下方事件 | 否 | function | | | scrollBottom | 滚动容器滚动到底部距离limit.bottom时触发,参数请查看下方事件 | 否 | function | | | scrollLeft | 滚动容器滚动到左边距离limit.left时触发,参数请查看下方事件 | 否 | function | | | scrollRight | 滚动容器滚动到右边距离limit.right时触发,参数请查看下方事件 | 否 | function | | | refresh | ScorllBarOptions.refresh设置后生效,刷新回调函数,参数请查看下方事件 v1.2.2+ | 否 | function | |

refresh 属性: v1.2.2+

| 属性 | 描述 | 是否必填 | 类型 |默认值| |-----|-----|-----|-----|-----| | message | 下拉刷新时是否显示刷新提示文字,true的时候,则读取refresh.message的默认值,见下表refresh.message | 否 | boolean object | refresh.message默认值 | | pullIcon | 下拉刷新的下拉动作图标样式class | 否 | string | | | refreshIcon | 下拉刷新的刷新中的图标样式class | 否 | string | | | distance | 下拉刷新的动作触发刷新的距离,最大120,单位:px | 否 | number | 65 |

refresh.message 属性: v1.2.2+

| 属性 | 描述 | 是否必填 | 类型 |默认值| |-----|-----|-----|-----|-----| | pullMessage | 下拉刷新下拉动作提示文字 | 否 | string | 下拉进行刷新 | | releaseMessage | 下拉刷新达到触发距离后的提示文字 | 否 | string | 释放进行刷新 | | refreshMessage | 下拉刷新触发刷新后提示文字 | 否 | string | 刷新中 |

viewScroller 初始化后的实例属性:

  • target
  • 插件最外层元素对象 v1.2.2+
  • currentTarget
  • 插件需要滚动初始化的元素 v1.2.2+

viewScroller 初始化后的实例方法:

  • scrollXTo(value:number, duration?:number)
  • 容器水平方向滚到到左边距离为value的位置,duration非必填,为滚动动画时间(单位:毫秒)
  • scrollYTo(value:number, duration?:number)
  • 容器垂直方向滚到到左边距离为value的位置,duration非必填,为滚动动画时间(单位:毫秒)
  • scrollTo({x,y}:ScrollToJSON, duration?:number)
  • 容器水平方向滚到到左边距离为x,垂直方向滚到到左边距离为y的位置,duration非必填,为滚动动画时间(单位:毫秒)
  • scrollTo({x,y}:ScrollToJSON, duration?:number)
  • 容器水平方向滚到到左边距离为x,垂直方向滚到到左边距离为y的位置,duration非必填,为滚动动画时间(单位:毫秒)
  • getScrollerEvent()
  • 返回滚动插件的当前滚动事件对象,可获取当前滚动条的scrollTop等信息 v1.2.2+

viewScroller 初始化后的事件:

  • onScroll(value:number, duration?:number)
  • 同options.on.scroll,滚动容器滚动事件,当容器内容滚动时触发
  • onScrollTop(callback:Funciton(ScrollerEv))
  • 同options.on.scrollTop,滚动容器滚动到顶部距离limit.top时触发,完成后需要调用ScrollerEv.done()修改状态
  • onScrollBottom(callback:Funciton(ScrollerEv))
  • 同options.on.scrollBottom,滚动容器滚动到底部距离limit.bottom时触发,完成后需要调用ScrollerEv.done()修改状态
  • onScrollLeft(callback:Funciton(ScrollerEv))
  • 同options.on.scrollLeft,滚动容器滚动到左边距离limit.left时触发,完成后需要调用ScrollerEv.done()修改状态
  • onScrollRight(callback:Funciton(ScrollerEv))
  • 同options.on.scrollRight,滚动容器滚动到右边距离limit.right时触发,完成后需要调用ScrollerEv.done()修改状态
  • onRefresh(callback:Funciton(done:Function))
  • 同options.on.refresh,触发刷新后的回调函数,需要done()完成刷新重置状态 v1.2.2+

ScrollerEv可读属性

| 属性 | 描述 | |-----|-----| | width | 滚动容器的内容区域width+左右padding+左右border | | height | 滚动容器的内容区域height+上下padding+上下border | | offsetTop | 滚动容器到定位父节点的top方向的距离 | | offsetLeft | 滚动容器到定位父节点的left方向的距离 | | scrollWidth | 滚动容器可滚动的垂直高度 | | scrollHeight | 滚动容器可滚动的水平宽度 | | scrollTop | 滚动容器垂直方向滚动距离 | | scrollLeft | 滚动容器水平方向滚动距离 | | clientWidth | 滚动容器的内容区域width+左右padding(可视区域width的大小) | | clientHeight | 滚动容器的内容区域height+上下padding(可视区域height的大小) | | clientTop | 滚动容器上边框 | | clientLeft | 滚动容器左边框 | | target | 滚动容器html对象 | | done | 事件完成的回调方法,修改滚动事件(scrollTop,scrollBottom,scrollLeft,scrollRight)的状态 |

更新记录

v1.2.8 更新

  • 1、新增vue的自定义指令v-view-scroller,兼容vue下的使用

v1.2.3 更新

  • 1、新增了通过css选择器,作为init方法的第一个参数传入进行初始化

v1.2.2 更新

  • 1、新增下拉刷新功能,兼容pc端和移动端
  • 2、新增下拉刷新事件
  • 3、viewScroller对象新增version属性,返回插件版本
  • 4、viewScroller初始化后的实例新增target属性和currentTarget属性,target属性返回插件最外层元素,currentTarget属性返回需要滚动初始化的元素
  • 5、viewScroller初始化后的实例新增getScrollerEvent返回当前滚动插件的ScrollerEv对象
  • 6、插件安装后不再需要引入dist/index.css文件,改为内联样式

v1.2.0 更新

  • 1、适配移动端的滚动条拖动
  • 2、多层嵌套滚动条时,处理每层的滚动条层级问题,以保证里层的滚动条能被抓取到
  • 3、部分参数添加字符串配置,可以通过字符串实现配置rem,em等css单位兼容移动端布局