[TOC]
# Vuep 组件库
组件是构成插件的基础组件,这些组件提供常用的布局。
## Box
Box 组件,声明一个div容器,提供快速布局。
**属性**
- type 包含 [group,box,image,layer] 可以自定义type。需要自行解析
- width 资源宽度。如果需要水平居中,此值必填,例:200、200px、20em...
- height 资源高度。如果需要垂直居中,此值必填,例:同上
- x 资源的相对x坐标,相当于 left 例:同上
- y 资源的相对y坐标,相当于 top 例:同上
- r 资源距离画布右侧的值,相当于box的right值 例:同上
- b 资源距离画布底部的值 相当于box的bottom值 例:同上
- z 图层的优先级(z-index),默认为优先级叠加
- center 居中方式,可选(x,y,xy)
- position 的值,图层默认以absolute定位,['absolute','static','fixed','relative']
- opacity 当前层的透明度
- ani css3动画 同 animation
- bg 背景
- bgMode string 背景的填充方式[repeat,round,space,repeat-x,repeat-y,cover,contain,background]
- [废弃]src 当前层的绑定资源,可用作背景图片处理
- [废弃] mode 层的解析定位方式
**实例**
```html
<div id="app" v-cloak>
<!-- box支持嵌套 -->
<box width="640" height="1008" bg="url(../assets/texture.jpg)">
<!-- 定义一个普通盒子 -->
<box width="200" height="200" x="30" y="30" bg="#ccc">
width="200"<br>height="200"<br>x="30"<br>y="30"
</box>
<box width="30" height="30" r="30" y="30" bg="#ccc">
width="200"<br>height="200"<br>x="30"<br>y="30"
</box>
<!-- 定义一个水平居中的盒子 -->
<box width="200" height="200" y="60" center="x" bg="#ccc">
width="200"<br>height="200"<br>y="60"<br>center="x"
</box>
<!-- 定义一个垂直居中的盒子 -->
<box width="200" height="200" center="y" bg="#ccc">
width="200"<br>height="200"<br>center="y"
</box>
<!-- 定义一个完全居中的盒子 -->
<box width="200" height="200" center="xy" bg="#ccc">
width="200"<br>height="200"<br>center="xy"
</box>
<!-- 右下角的盒子 -->
<box width="200" height="200" r="0" b="0" bg="#ccc">
width="200" height="200" r="0" b="0"
</box>
<box width="200" b="0" center="x" bg="#ccc">
width="200" b="0" center="x"
</box>
</box>
</div>
```
## Grouper
Grouper组件创建一个分组,内部的组件都是相对此组件的位置布局
**属性**
- 基础属性继承box
- layer [string] 可以使用资源声明组件(主要为ps导出的分组配置)
**示例**
```html
<Grouper layer="bottomBtns" center="xy">
<Imager />
<Imager />
<Grouper>
```
## Imager
图片组件,可从资源库中加载已经被load的图片,或者直接设置图片的src
**属性**
- 基础属性继承 box 组件
- src [可选] 图片路径
- layer [图层名称] resource 中的别名
- alt 图片的alt属性
- bgMode [boolean,string] boolean 时表示资源图片是否为背景。string时同box的bgmode属性
** 示例 **
```html
<!-- 引用一张本地的资源图片,水平居中显示 -->
<imager src="share.jpg" center="x"></imager>
<!-- 使用一张图片作为输入框的背景 -->
<imager src="bg.jpg" width="200" height="200" bg-mode>
<input type="text" />
</imager>
<!-- 引用一张psd中的切片 -->
<imager layer="share_btn" @click.native="todo"></imager>
<!-- 引用一张psd中的切片,并覆盖默认属性 -->
<imager layer="share_btn" @click.native="todo" :y="1008-20"></imager>
```
## Row
Row 行组件,提供常用布局方案
**属性**
- gutter 组件两边的留白(注意:这个单位是相对于设计稿的单位,最后会转换为rem)
- direction `flex-direction` 的种类,目前包含[reverse,column,reverse]
- justify `justify-content` 可选[start,center,end,around,between]
- align `align-items` 可选 [top,middle,down,stretch,baseline]
**示例**
通常是配合column一起使用,参考column组件
## Column
Column 列,列模型将一行分为24份。
**属性**
- `span` 当前列所占宽度
- `offset` 向左移动的宽度
- [废弃] `pull` 向左推的宽度
```html
<div id="app" v-cloak>
<row>
<column><span>1</span></column>
<column><span>2</span></column>
</row>
<row :gutter="30">
<column><span>1</span></column>
<column><span>2</span></column>
</row>
<row>
<column :span="1"><span>1</span></column>
<column :span="2"><span>2</span></column>
<column span="3"><span>3</span></column>
<column span="4"><span>4</span></column>
<column span="5"><span>5</span></column>
<column span="6"><span>6</span></column>
</row>
<row>
<column :span="8" offset="3"><span>span8 offset3</span></column>
</row>
<row>
<column :span="6" offset="1"><span>1</span></column>
</row>
</div>
```
## MovieClip
影片剪辑,可以通过影片剪辑播放序列帧动画。
**属性**
- source 已经处理好了等距分隔的图片素材路径。
- width 帧动画所占宽度
- height 帧动画所占高度
- frame 动画帧数
- paused 是否暂停
- vertical 默认为横向平铺,素材是否为纵向平铺
**实例**
```html
<!-- 动画放在一个box中-->
<box center="x" y="20">
<movie-clip width="75" height="90" frame="80" fps="60" source="../assets/movieClip1.png"></movie-clip>
</box>
<!-- 带有暂停功能 -->
<movie-clip :paused="movieClipPause" width="230" height="202" frame="46" fps="30" source="../assets/movieClip3.png" @click.native="movieClipPause=!movieClipPause"></movie-clip>
<!-- 垂直的动画素材 -->
<movie-clip width="640" height="1008" frame="20" fps="24" source="../assets/gifs.png" :vertical="true"></movie-clip>
```
## ScrollView
一个惯性滚动插件,提供更加柔和的滚动方式
**属性**
- width: `滚动容器宽度`
- height: `滚动容器高度`
- startX: `0` 开始的X轴位置
- startY: `0` 开始的Y轴位置
- horizontal 'true' 滚动方向为 X 轴
- threshold: `5`
- momentum: `true` 当快速滑动时是否开启滑动惯性
- bounce: `true` 是否启用回弹动画效果
- [废弃] scrollY: `true` 滚动方向为 Y 轴
- [废弃] scrollX: 'true' 滚动方向为 X 轴
- [废弃]click: `true` 是否派发click事件
- [废弃]reachBottom 底部适合你拉阈值,设置此值可接受底部的上拉事件,会触发onReachBottom 事件,一般用于加载更多
- [废弃]reachTop 向上滑动阀值,设置此值可接受到顶部的下拉事件,会触发 onReachTop 事件,一般用于刷新当前数据
- [废弃]selectedIndex: `0` wheel 为 true 时有效,表示被选中的 wheel 索引
- [废弃]rotate: `25` wheel 为 true 时有效,表示被选中的 wheel 每一层的旋转角度
- [废弃]wheel: `false` 该属性是给 picker 组件使用的,普通的列表滚动不需要配置
**事件**
- `on-before-scroll-start` 滚动开始之前触发
- `on-scroll-start` 滚动开始时触发
- `on-scroll-cancel` 取消滚动时触发
- `on-scroll` 滚动时触发
- `on-scroll-end` 滚动结束时触发
- `on-refresh` 当 better-scroll 刷新时触发
- `on-destroy`销毁 better-scroll 实例时触发
**示例**
```html
<div id="app" v-cloak>
<!-- 高度300px的滚动区域 -->
<Scroll-View height="300px" @on-scroll="onScroll" @on-reach-top="onReachTop">
<ul class="list-wrapper">
<li v-for="n in lists" class="list-item"><span>{{ n }}</span></li>
</ul>
</Scroll-View>
<Scroll-View width="1680px" horizontal>
<ul class="list-btn">
<li v-for="n in lists" class="list-item"><span>{{ n }}</span></li>
</ul>
</Scroll-View>
</div>
```
## Swiper
翻页根容器,所有的页面组件的根组件,此页面对当前组内的所有page进行基本配置设置
**属性**
- v-model 可以双向绑定值到此组件,model的值为page的name值。
- path [string] '' 图层图片资源的根目录
- layout [string] html 布局方式[html,canvas,webgl] 目前只支持html
- base [number] 16 在psd中的根字体大小,即rem单位 1rem = html.fontSize
- width [number] 640 设计稿宽度
- height [number] 1008 设计稿高度
- perspective [number,string] 1200 3d透视距离,page切换3d效果可能需要
**事件**
- ready 加载完成事件
- progress 进度事件
**示例**
```html
<swiper v-model="page" path="assets/images/" @progress="onProgress" @ready="onReady"></swiper>
```
## Page
翻页页面组件
**属性**
- name 页面名称,用于实现跳转
- bg 当前页面背景。
1. 优先查找使用resource中的资源
2. 判断当前背景是否为图片 xxx.jpg 或者 url(xxx.jpg)
3. 直接使用background属性填充图片区域 (#ccc => background:#ccc)
- enter 进场效果
- leave 出场效果
**事件**
- rotate
- pinch
- swipe(包含方向信息 up,down,left,right,如swipeLeft)
- tap
- doubleTap
- longTap
- singleTap
- pressmove
**示例**
```html
<Page name="scene1" :enter="enterEffect" :leave="leaveEffect" @swipeUp="nextPage('scene2')" bg="backgroundtest">
</Page>
```
## 指令
### v-finger
定义某个组件的扩展事件
**示例**
```html
<imager layer="startbtn" v-finger:pinch="onPinch"></imager>
<imager layer="startbtn" v-finger:swipe.page1="doSomeThing"></imager>
```
- 前端篇
- 常用知识点
- 表单处理
- 前后端分离
- 提供模板渲染工具
- 页面优化
- css3动画部分
- 前端工程与模块化框架
- 服务器XML标签用法
- 微信JSSDK
- 小技巧
- 纯CSS实现自适应正方形
- 通用媒体查询
- css 黑科技
- H5性能优化方案
- 10个最常见的 HTML5
- 常见坑
- 资源收集
- 前端组件化开发实践
- 应用秒开计划
- AJAX API部分
- 静态资源处理优化
- 后端篇
- 微信对接与管理
- 微信消息处理
- API插件开发
- Plugin开发
- 后端插件开发
- 组件开发
- XML标签开发
- RESTFUL设计
- Admin GUI
- 设计篇
- 设计规范
- 微信开发库v.js
- 使用方法
- 微信JSSDK集成
- 调试面板使用
- 插件-http功能
- 插件-layer弹出层
- 插件-music 音乐播放器
- 插件-store 本地存储
- 插件 emitter 事件管理器
- 插件-shake 摇动功能
- 插件-lazyload 延迟加载
- 插件-t 模板渲染
- 插件-ani 动画功能
- 插件-is 类型侦测器
- 插件-ease 缓动函数库
- 插件-os 设备检测
- 插件 $ 类Jquery插件
- 插件-md5 散列计算
- 插件-svg动画loading
- 后台页面成功GUI
- 列表渲染List
- 表单生成Config
- 树状列表Tree
- 排序操作Sort
- Js 风格指南
- Vuep
- 内置动画库
- 组件库
- 内置插件库
- PSD自动切图