微信小程序开发 Note-2
@ 2018年8月15日 20:54:19
小程序的flex布局
小程序建议使用flex布局进行排版(响应式、自适应);
flex是一个盒装弹性布局(盒子中依然含有多个大小不一的盒子);
flex是一个容器,所有子元素都是他的成员;
定义布局:display:flex
flex容器的属性 flex-direction:排列方向,flex-wrap:换行规则 ,justify-content:对齐方式;
flex-direction
row:从左到右 row-reverse:从右到左
column:从上到下 column-reverse:从下到上
1  | .container {  | 
flex-wrap
nowrap:默认不换行(根据所设置的长度进行压缩
wrap:换行(顶满则换行) wrap-reverse:倒序换行(从下开始换行)
1  | .container {  | 
justify-content
决定内容的对齐方式;
flex-start:左对齐; flex-end:右对齐; center:居中对齐;
space-between:从左往右,平均分配,用空格分隔成员 ;
space-around:从左往右,平均分配,用空格包围成员;
1  | .container {  | 
flex成员元素的样式设置
order:成员之间的显示顺序;
flex:成员所占屏幕的比例(会导致width和height失效,并且将一行按比例分配给每个成员);
1  | .a {  | 
小程序的组件介绍
组件是视图层的基本组成单元,多个组件构成一张试图页面;
组件包含<开始标签></结束标签>;
每个组件都包含一些共有属性;
属性类型
Boolean Number String Array Object EventHandler 事件处理函数名 Any 任意属性
共同属性类型
id(String) class(String) style(String) hidden(Boolean) data-*(Any) bind*/catch*(EventHandler)
视图组件 view
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| hover-class | String | none | 指定按下去的样式类。当 hover-class="none" 时,没有点击态效果 | 
| hover-stop-propagation | Boolean | false | 指定是否阻止本节点的祖先节点出现点击态 | 
| hover-start-time | Number | 50 | 按住后多久出现点击态,单位毫秒 | 
| hover-stay-time | Number | 400 | 手指松开后点击态保留时间,单位毫秒 | 
scroll-view 可滚动视图
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| scroll-x | Boolean | false | 允许横向滚动 | 
| scroll-y | Boolean | false | 允许纵向滚动 | 
| upper-threshold | Number | 50 | 距顶部/左边多远时(px),触发 scrolltoupper 事件 | 
| lower-threshold | Number | 50 | 距底部/右边多远时(px),触发 scrolltolower 事件 | 
| bindscrolltoupper | EventHandle | 滚动到顶部/左边,会触发 scrolltoupper 事件 | |
| bindscrolltolower | EventHandle | 滚动到底部/右边,会触发 scrolltolower 事件 | |
| scroll-top | Number | 设置竖向滚动条的默认位置 | |
| enable-back-to-top | Boolean | false | iOS点击顶部状态栏/安卓双击标题栏时,滚动条返回顶部,只支持竖向 | 
| scroll-with-animation | Boolean | false | 在设置滚动条位置时使用动画过渡 | 
| bindscroll | EventHandle | 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY} | |
| scroll-into-view | String | 值应为某子元素id(id不能以数字开头).设置哪个方向可滚动,则在哪个方向滚动到该元素 | |
| scroll-left | Number | 设置横向滚动条位置 | 
1  | <!scroll.wxml-->  | 
1  | //scroll.js  | 
1  | /**index.wxss**/  | 
swiper 轮播图
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| indicator-dots | Boolean | false | 是否显示面板指示点 | 
| autoplay | Boolean | false | 是否自动切换 | 
| interval | Number | 5000 | 自动切换时间间隔 | 
| duration | Number | 500 | 滑动动画时长 | 
movable-area/movable-view
movable-view 需要在movable-area成员之间;
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| direction | String | none | movable-view的移动方向,属性值有all、vertical、horizontal、none | 
| inertia | Boolean | false | movable-view是否带有惯性 | 
| out-of-bounds | Boolean | false | 超过可移动区域后,movable-view是否还可以移动 | 
| x/y | Number / String | 定义x/y轴方向的偏移,如果x/y的值不在可移动范围内,会自动移动到可移动范围;改变x/y的值会触发动画 | |
| damping | Number | 20 | 阻尼系数,用于控制x或y改变时的动画和过界回弹的动画,值越大移动越快 | 
| friction | Number | 2 | 摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值 | 
| scale | Boolean | false | 是否支持双指缩放,默认缩放手势生效区域是在movable-view内 | 
| scale-min/max | Number | 0.5 | 定义缩放倍数最小/大值 | 
| bindchange | EventHandle | 拖动过程中触发的事件,event.detail = {x: x, y: y, source: source},其中source表示产生移动的原因,值可为touch(拖动)、touch-out-of-bounds(超出移动范围)、out-of-bounds(超出移动范围后的回弹)、friction(惯性)和空字符串(setData) | 
1  | <movable-area class="father-size">  | 
1  | Page({  | 
icon
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| type | String | icon的类型,有效值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear | |
| size | Number | 23 | icon的大小,单位px | 
| color | Color | icon的颜色,同css的color | 
1  | <icon type='success' size='66'></icon>  | 
text
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| selectable | Boolean | false | 文本是否可选 | 
| space | String | false | 显示连续空格 | 
| decode | Boolean | false | 是否解码 | 
space 有效值:
| 值 | 说明 | 
|---|---|
| ensp | 中文字符空格一半大小 | 
| emsp | 中文字符空格大小 | 
| nbsp | 根据字体设置的空格大小 | 
Tips
- decode可以解析的有 
 <>&'   - 各个操作系统的空格标准并不一致。
 <text/>组件内只支持<text/>嵌套。- 除了文本节点以外的其他节点都无法长按选中。
 
1  | <view>  | 
rich-text(富文本)
nodes 属性推荐使用 Array 类型,由于组件会将 String 类型转换为 Array 类型,因而性能会有所下降;
| 属性 | 说明 | 类型 | 必填 | 备注 | 
|---|---|---|---|---|
| name | 标签名 | String | 是 | 支持部分受信任的HTML节点 | 
| attrs | 属性 | Object | 否 | 支持部分受信任的属性,遵循Pascal命名法 | 
| children | 子节点列表 | Array | 否 | 结构和nodes一致 | 
Bug & Tip
nodes 不推荐使用 String 类型,性能会有所下降;
rich-text 组件内屏蔽所有节点的事件;
attrs 属性不支持 id ,支持 class ;
name 属性大小写不敏感;
如果使用了不受信任的HTML节点,该节点及其所有子节点将会被移除;
img 标签仅支持网络图片;
如果在自定义组件中使用 rich-text 组件,那么仅自定义组件的 wxss 样式对 rich-text 中的 class 生效;
1  | <!-- String -->  | 
1  | Page({  | 
progress
| 属性名 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| percent | Float | 无 | 百分比0~100 | 
| show-info | Boolean | false | 在进度条右侧显示百分比 | 
| stroke-width | Number | 6 | 进度条线的宽度,单位px | 
| color | Color | #09BB07 | 进度条颜色 (请使用 activeColor) | 
| activeColor | Color | 已选择的进度条的颜色 | |
| backgroundColor | Color | 未选择的进度条的颜色 | |
| active | Boolean | false | 进度条从左往右的动画 | 
| active-mode | String | backwards | backwards: 动画从头播;forwards:动画从上次结束点接着播 | 
1  | <progress percent="{{percentdata}}" show-info='true' stroke-width="20" color="orange" backgroundColor='white' active='true'active-mode='forwards'/>  | 
1  | Page({  | 
@ 2018年8月16日 11:22:28