# slidePage
**Repository Path**: xiaolinlu/slidePage
## Basic Information
- **Project Name**: slidePage
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-08-09
- **Last Updated**: 2024-08-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# slidePage
### Demo:
* [simple](http://slidepage.codeasily.net/examples/simple.html)
* [animated](http://slidepage.codeasily.net/examples/animated.html)
* [scroll](http://slidepage.codeasily.net/examples/scroll.html)
* [custom](http://slidepage.codeasily.net/examples/custom.html)
* [dragMode](http://slidepage.codeasily.net/examples/drag.html)
* [fullFeatured](http://slidepage.codeasily.net/examples/fullFeatured.html)
### Featured
slidePage3 特别适合主流前端框架开发,无任何依赖库,Gzip压缩后仅有2.4k, 接口符合插件具有的初始化、销毁、重载的方法,适配PC和移动端,可实现内容超出屏幕滚动、手动播放动画、动态更新等特色功能,具体查看完整示例: [fullFeatured](http://slidepage.codeasily.net/examples/fullFeatured.html)
### Documentation:
* [Usage](#usage)
* [Install slidePage](#install-slidepage)
* [Including files](#including-files)
* [Required HTML structure](#required-html-structure)
* [Initialization](#initialization)
* [Configuration](#configuration)
* [Options](#options)
* [Using Animation](#using-animation)
* [Methods](#methods)
* [slidepage.slideNext()](#slidepageslidenext)
* [slidepage.slidePrev()](#slidepageslideprev)
* [slidepage.slideTo(page)](#slidepageslidetopage)
* [slidepage.slideFile(page)](#slidepageslidefilepage)
* [slidepage.destroy()](#slidepagedestroy)
* [slidepage.update()](#slidepageupdate)
* [Troubleshooting(常见问题汇总)](https://github.com/lipten/slidePage/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E6%B1%87%E6%80%BB)
## Usage
### Including files
```
```
### Required HTML structure
```
```
您可以查看完整examples里的html文件结构 [fullFeatured.html](https://github.com/lipten/slidePage/blob/master/examples/fullFeatured.html)
### Initialization
```
new slidePage()
```
## Configuration
```
var slidepage = new slidePage({
slideContainer: '#slide-container',
slidePages: '.slide-item',
page: 1,
refresh: true,
dragMode: false,
useWheel: true,
useSwipe: true,
useAnimation : true,
// Events
before: function(origin,direction,target){},
after: function(origin,direction,target){},
});
```
## Options
> 在slidePage中,page指的是每一次全屏滚动的一屏,也可以理解为每一屏对应的页码,必须是1以上的整数
| name |
type |
default |
description |
| slideContainer |
String|Element |
'.slide-container' |
指定slidePage要运行的容器选择器或元素 |
| slidePages |
String|NodeList|HTMLCollection |
'.slide-page' |
指定`slideContainer`容器里每个page的选择器或元素 |
| page |
Number |
1 |
首次进入的page页码 |
| dragMode |
Boolean |
false |
💡移动端开启触控拖动滑屏模式(此功能还在测试阶段),默认为false,前提是`useSwipe: true` |
| useAnimation |
Boolean |
true |
是否开启动画 |
| refresh |
Boolean |
true |
每次滚动进入是否重新执行动画 |
| useWheel |
Boolean |
true |
是否开启鼠标滚轮滑动 |
| useSwipe |
Boolean |
true |
是否开启移动端触控滑动 |
## Events
| name |
description |
| before |
每次全屏滚动前触发事件,回调三个参数(origin, direction, target),分别是滚动前的page序号、方向('next'|'prev')、滚动后的page序号 |
| after |
每次全屏滚动后触发事件,回调三个参数(origin, direction, target),参数释义同上 |
## Using Animation
> 为了方便示例用animate.css,动画效果可以自己实现
### Include animate.css
```
```
### HTML structure
```
;
```
在想要动画控制的元素上加上step类,并加上css动画类名即可使用动画,data-delay属性控制动画延时播放(默认为100毫秒);
#### 手动触发动画
```
```
1. 在想要手动播放动画的元素上加上lazy类,并加上css动画类名即可使用动画,可以加上data-delay使触发时再延时播放;
2. 通过slidepage.slideFire(page)指定某一页的lazy动画触发播放。
## Drag Mode
> 最新加入的拖动滑屏模式,在实例化时传入配置`dragMode: true`,即可开启,此功能目前为测试阶段,请酌情使用。
现已加入Demo系列豪华套餐:
* [dragMode](http://slidepage.codeasily.net/examples/drag.html)
需要注意的是,为了滑动松手后的动画体验更好,记得在你的项目里设置过渡动画类`.slide-container .slide-page.transition`,调整过渡函数和时长。具体查看示例代码:https://github.com/lipten/slidePage/blob/master/examples/drag.html#L13
## Methods
### slidepage.slideNext()
滑动定位到下一屏
### slidepage.slidePrev()
滑动定位到上一屏
### slidepage.slideTo(page)
传入page页码,滑动定位到对应的page
### slidepage.slideFire(page)
触发对应 page 的lazy手动动画
### slidepage.destroy()
销毁当前实例,移除所有事件恢复class属性值。
### slidepage.update(newSlidePages)
当html里的page发生变化时需要执行动态更新。
`newSlidePages`参数非必填,仅应对于初始化的时候`slidePages`参数传入的是`NodeList`或`HTMLCollection`时才需要在更新的时候再传一次变化后的DOM结构通知更新。
> 此方法非常适合现在流行的数据驱动型框架,当模型数据驱动改变pege的排列时,执行update可以起到更新的作用,可以先看示例源码了解:[custom.html](https://github.com/lipten/slidePage/blob/master/examples/custom.html)
## Contributing
### development
本地运行
```
npm install
npm run server
```
构建
```
npm run build
```