# zscroller

> dom scroller based on zynga scroller

Latest version **0.7.1** (published 2020-12-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install zscroller
pnpm add zscroller
yarn add zscroller
bun add zscroller
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.7.1 |
| Published | 2020-12-24 |
| First published | 2016-09-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 216.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 51 |
| Maintainers | yiminghe |
| Keywords | zynga scroller, dom scroller |

## Links

- npm: https://www.npmjs.com/package/zscroller
- Repository: https://github.com/yiminghe/zscroller
- Issues: https://github.com/yiminghe/zscroller/issues
- npm.io page: https://npm.io/package/zscroller

## Recent versions

- 0.7.1 (latest) — 2020-12-24
- 0.7.0 — 2020-10-26
- 0.6.15 — 2020-10-21
- 0.6.14 — 2020-09-29
- 0.6.13 — 2020-09-29
- 0.6.12 — 2020-09-29
- 0.6.11 — 2020-09-15
- 0.6.10 — 2020-09-15
- 0.6.9 — 2020-09-09
- 0.6.8 — 2020-09-01
- 0.6.7 — 2020-09-01
- 0.6.6 — 2020-07-22
- 0.6.5 — 2020-07-22
- 0.6.4 — 2020-07-13
- 0.6.3 — 2020-07-13
- … 47 more at https://npm.io/package/zscroller/versions

## README

# zscroller
---

dom scroller based on [zynga scroller](https://zynga.github.io/scroller/)


[![NPM version][npm-image]][npm-url]
[![gemnasium deps][gemnasium-image]][gemnasium-url]
[![node version][node-image]][node-url]
[![npm download][download-image]][download-url]

[npm-image]: http://img.shields.io/npm/v/zscroller.svg?style=flat-square
[npm-url]: http://npmjs.org/package/zscroller
[travis-image]: https://img.shields.io/travis/yiminghe/zscroller.svg?style=flat-square
[travis-url]: https://travis-ci.org/yiminghe/zscroller
[coveralls-image]: https://img.shields.io/coveralls/yiminghe/zscroller.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/yiminghe/zscroller?branch=master
[gemnasium-image]: http://img.shields.io/gemnasium/yiminghe/zscroller.svg?style=flat-square
[gemnasium-url]: https://gemnasium.com/yiminghe/zscroller
[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square
[node-url]: http://nodejs.org/download/
[download-image]: https://img.shields.io/npm/dm/zscroller.svg?style=flat-square
[download-url]: https://npmjs.org/package/zscroller

## Example

http://localhost:6006/examples/

online example: http://yiminghe.github.io/zscroller/

## install

[![zscroller](https://nodei.co/npm/zscroller.png)](https://npmjs.org/package/zscroller)


## API

### typed

```js
interface ViewportSize {
    width: number;
    height: number;
}
interface ContentSize {
    width: number;
    height: number;
}
interface X {
    // scrollbar x size
    width: number;
    height?: number;
    scrollbar?: {
        style: any;
    };
    indicator?: {
        style: any;
    };
}
interface Y {
    width?: number;
     // scrollbar y height
    height: number;
    scrollbar?: {
        style: any;
    };
    indicator?: {
        style: any;
    };
}

//  minZoom defaults to 0.1
//  maxZoom defaults to 10
// locking defaults to true
//  defaultScrollX defaults to 0
//  defaultScrollY defaults to 0
//  defaultZoom defaults to 1
interface IZScrollerOption {
  minZoom?: number;
  maxZoom?: number;
  minIndicatorSize?: number;
  zooming?: boolean;
  locking?: boolean;
  viewport: IViewportSize;
  content: IContentSize;
  x?: X;
  y?: Y;
  defaultScrollX?:number;
  defaultScrollY?:number;
  defaultZoom?:number;
  container?: HTMLElement;
  scrollingComplete?: () => any;
  onScroll?: (x: number, y: number, zoom: number) => any;
}
declare class ZScroller {
    constructor(_options: ZScrollerOption);
    scrollTo(x: number, y: number, animate: boolean): void;
    scrollBy(x: number, y: number, animate: boolean): void;
    getScrollbar(type: any): HTMLElement;
    getScrollPosition(): {x:number;y:number;};
    setDisabled(disabled: any): void;
    // relayout
    setDimensions({ viewport, content, x, y, }?: {
        viewport?: ViewportSize;
        content?: ContentSize;
        x?: X;
        y?: Y;
    }): void;
    destroy(): void;
}
```

### usage

```js
import ZScroller from 'zscroller';

const zscroller = new ZScroller({
    container: container,
    viewport: {
      height: container.clientHeight - 20, // padding
      width: container.clientWidth - 20,
    },
    content: {
      width: content.offsetWidth,
      height: content.offsetHeight
    },
    x: {
      width: container.current.clientWidth - 4, // padding

    },
    y: {
      height: container.current.clientHeight - 4, // padding
    },
    onScroll(left, top) {
      content.style.transform = `translate3d(${-left}px,${-top}px,0)`
      content.style.webkitTransform = `translate3d(${-left}px,${-top}px,0)`;
    }
  });
container.appendChild(zscroller.getScrollbar('x'));
container.appendChild(zscroller.getScrollbar('y'));
```

## License

zscroller is released under the MIT license.

---
_Source: https://npm.io/package/zscroller · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
