# upp-touch

> 基于vue触屏滑动方案

Latest version **1.1.1** (published 2018-03-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install upp-touch
pnpm add upp-touch
yarn add upp-touch
bun add upp-touch
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.1 |
| Published | 2018-03-20 |
| First published | 2018-03-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 114.3 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 1 |
| Author | thinkupp |
| Maintainers | thinkupp |
| Keywords | touch, move, vue-touch |

## Links

- npm: https://www.npmjs.com/package/upp-touch
- Repository: https://github.com/thinkupp/vtouch
- Homepage: https://github.com/thinkupp/vtouch#readme
- Issues: https://github.com/thinkupp/vtouch/issues
- npm.io page: https://npm.io/package/upp-touch

## Dependencies (1)

- [vue](https://npm.io/package/vue.md) ^2.5.11

## Recent versions

- 1.1.1 (latest) — 2018-03-20
- 1.0.9 — 2018-03-20
- 1.0.3 — 2018-03-20
- 1.0.2 — 2018-03-20
- 1.0.1 — 2018-03-20
- 1.0.0 — 2018-03-19

## README

# upp-touch
> 基于vue的移动端滑动方案。


------

## 什么是 upp-touch
uppTouch 处理移动端的滑动事件

- [x] 可锁定方向，禁止横轴或者纵轴滑动
- [x] 上下左右滑动有对应事件触发并且携带距离值
- [x] 自动处理边界，到达边界后不会继续移动
- [x] 如果移动时已经处于对应方向的边界，则会触发新的事件，以便和移动事件区分开
- [x] 暴露直达上下左右边界的方法
- [x] 简单快捷，轻松上手

### 安装
```bash
npm install upp-touch --save
```

### 在指定区域内滑动
* 通过设置自定义样式使用，注意不要忘记添加 overflow 属性
```bash
<template>
    <upp-touch :diyStyle="diyStyle">
        <div class="scrollWrapper"></div>  // 滚动的盒子
    </upp-touch>
</template>

<script>
    import uppTouch from 'upp-touch'

    export default {
        data() {
          return {
            diyStyle: {
              width: '100px',
              height: '100px',
              overflow: 'hidden'
            }
          }
        },

        components: {
            uppTouch
        }
    }
</script>
```
* 通过外层再加一个盒子使用
```bash
<template>
    <div id="touchWrapper">
        <upp-touch>
            <div class="scrollWrapper"></div>  // 滚动的盒子
        </upp-touch>
    </div>
</template>

<style scoped>
  #touchWrapper {
    width: 100px;
    height: 200px;
    overflow: hidden;
  }
</style>
```

> 注意一：建议组件包裹起来的盒子有且只有一个，多个DOM将无法检测到

* 正确的写法（非必看文档）：
```
<template>
    <div id="out">
        <upp-touch>
            <div class="scrollWrapper">……</div>
        </upp-touch>
    </div>
</template>
```
* 错误的写法（非必看文档）：
```
<template>
    <div id="out">
        <upp-touch>
            <div class="scrollWrapper">……</div>
            <div class="any">……</div>
            ……
        </upp-touch>
    </div>
</template>
```
> 注意二：要滚动的盒子必须满足以下任意一个要求(比如上方类名为 scrollWrapper 的盒子)：
            1、设置了宽高
            2、设置为行内或者行内块级元素让其宽度由内容撑开

### 配置
| 属性名     | 描述   |  类型  |  默认值  |
| --------   | :----:  | :----:  | :----:  |
| lockX     | 锁定横轴，禁止滚动 |   Boolean     |   false     |
| lockY        |   锁定纵轴，禁止滚动   |   Boolean     |   false   |
| preventDefault        |   在滑动时阻止默认事件   |   Boolean     |   false   |
| scrollTransitionTime        |   滑动过渡时间   |   Number     |   0.3S   |
| commonSlideTransition        |   滑动时是否开启过渡效果   |    Boolean     |  false   |
| diyStyle        |   包裹滚动区域盒子的样式   |   Object     |   {}   |

> 说一下 commonSlideTransition，默认的过渡效果只触发在对外封装的方法中生效，如果要在正常的滑动中也添加过渡效果，修改这个属性即可。

### 封装的方法
| 方法名     | 描述   |
| :----:   | :----:  |
| toLeft     | 滚动到横轴起始的位置 |
| toRight        |   滚动到横轴末尾处   |
| toTop        |   滚动到纵轴起始的位置   |
| toBottom        |   滚动到纵轴末尾处   |
> 过渡效果默认只在调用这几个方法的时候生效，如果要在正常的滑动中也生效，修改配置属性 commonSlideTransition

> 特性：
1、在滚动的盒子小于滚动区域的时候，自动锁定对应方向无法滑动，但是这几个方法仍然可以生效；
2、在用户主动锁定横轴或者纵轴方向时，这几个方法仍然可以生效。

### 观察者模式
| 派发的事件     | 描述   | 追加描述
| :----:   | :----:  | :----:  |
| x-start | 横轴方向移动到起始位置时触发 | -
| x-end | 横轴方向移动到末尾时触发 | -
| y-start | 纵轴方向移动到起始位置时触发 | -
| y-end | 纵轴方向移动到末尾时触发 | -
| XStart | 右滑行为时如果已经处于起始位置触发 | 上拉加载下拉刷新利器
| XEnd | 左滑行为时如果已经处于末尾触发 | 上拉加载下拉刷新利器
| YStart | 下拉行为时如果已经处于起始触发 | 上拉加载下拉刷新利器
| YEnd | 上拉行为时如果已经处于末尾触发 | 上拉加载下拉刷新利器
| leftMoving | 页面向左滑动的时候触发 | 可通过形参接收已移动距离
| rightMoving | 页面向右滑动的时候触发 | 可通过形参接收已移动距离
| topMoving | 页面向上滑动的时候触发 | 可通过形参接收已移动距离
| bottomMoving | 页面向下滑动的时候触发 | 可通过形参接收已移动距离
> 可以利用这几个事件进行一些扩展的行为，比如上拉加载、下拉刷新等，可以查看Demo便于理解这几个事件的表现。

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