微信小程序学习笔记(三)

小程序的flex布局

 

 

view

视图容器。

属性名类型默认值说明最低版本
hover-classStringnone指定按下去的样式类。当 hover-class="none" 时,没有点击态效果 
hover-stop-propagationBooleanfalse指定是否阻止本节点的祖先节点出现点击态1.5.0
hover-start-timeNumber50按住后多久出现点击态,单位毫秒 
hover-stay-timeNumber400手指松开后点击态保留时间,单位毫秒 

示例:

在开发者工具中预览效果

<view class="section">
  <view class="section__title">flex-direction: row</view>
  <view class="flex-wrp" style="flex-direction:row;">
    <view class="flex-item bc_green">1</view>
    <view class="flex-item bc_red">2</view>
    <view class="flex-item bc_blue">3</view>
  </view>
</view>
<view class="section">
  <view class="section__title">flex-direction: column</view>
  <view class="flex-wrp" style="height: 300px;flex-direction:column;">
    <view class="flex-item bc_green">1</view>
    <view class="flex-item bc_red">2</view>
    <view class="flex-item bc_blue">3</view>
  </view>
</view>

scroll-view

可滚动视图区域。

属性名类型默认值说明
scroll-xBooleanfalse允许横向滚动
scroll-yBooleanfalse允许纵向滚动
upper-thresholdNumber50距顶部/左边多远时(单位px),触发 scrolltoupper 事件
lower-thresholdNumber50距底部/右边多远时(单位px),触发 scrolltolower 事件
scroll-topNumber 设置竖向滚动条位置
scroll-leftNumber 设置横向滚动条位置
scroll-into-viewString 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素
scroll-with-animationBooleanfalse在设置滚动条位置时使用动画过渡
enable-back-to-topBooleanfalseiOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向
bindscrolltoupperEventHandle 滚动到顶部/左边,会触发 scrolltoupper 事件
bindscrolltolowerEventHandle 滚动到底部/右边,会触发 scrolltolower 事件
bindscrollEventHandle 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

使用竖向滚动时,需要给<scroll-view/>一个固定高度,通过 WXSS 设置 height。

Bug & Tip

  1. tip: 请勿在 scroll-view 中使用 textareamapcanvasvideo 组件
  2. tipscroll-into-view 的优先级高于 scroll-top
  3. tip: 在滚动 scroll-view 时会阻止页面回弹,所以在 scroll-view 中滚动,是无法触发 onPullDownRefresh
  4. tip: 若要使用下拉刷新,请使用页面的滚动,而不是 scroll-view ,这样也能通过点击顶部状态栏回到页面顶部

 

绑定事件

 

enable-back-to-top返回最上方(在手机端进行调试)

 

scroll-into-view(值应为某子元素id,id不能以数字开头)

 

 scroll-x

 

 

 

 swiper组件(轮播图)

 

swiper

 

滑块视图容器。

 

属性名类型默认值说明最低版本
indicator-dotsBooleanfalse是否显示面板指示点 
indicator-colorColorrgba(0, 0, 0, .3)指示点颜色1.1.0
indicator-active-colorColor#000000当前选中的指示点颜色1.1.0
autoplayBooleanfalse是否自动切换 
currentNumber0当前所在滑块的 index 
current-item-idString""当前所在滑块的 item-id ,不能与 current 被同时指定1.9.0
intervalNumber5000自动切换时间间隔 
durationNumber500滑动动画时长 
circularBooleanfalse是否采用衔接滑动 
verticalBooleanfalse滑动方向是否为纵向 
previous-marginString"0px"前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值1.9.0
next-marginString"0px"后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值1.9.0
display-multiple-itemsNumber1同时显示的滑块数量1.9.0
skip-hidden-item-layoutBooleanfalse是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息1.9.0
bindchangeEventHandle current 改变时会触发 change 事件,event.detail = {current: current, source: source} 
bindanimationfinishEventHandle 动画结束时会触发 animationfinish 事件,event.detail 同上1.9.0

 

从 1.4.0 开始,change事件返回detail中包含一个source字段,表示导致变更的原因,可能值如下:

 

  • autoplay 自动播放导致swiper变化;
  • touch 用户划动引起swiper变化;
  • 其他原因将用空字符串表示。

 

注意:其中只可放置<swiper-item/>组件,否则会导致未定义的行为。

 

swiper-item

 

仅可放置在<swiper/>组件中,宽高自动设置为100%。

 

属性名类型默认值说明最低版本
item-idString""该 swiper-item 的标识符1.9.0

 

Bug & Tip

  1. tip: 如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起。

复制代码

<swiper indicator-dots="{{indicatorDots}}"
  autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
  <block wx:for="{{imgUrls}}">
    <swiper-item>
      <image src="{{item}}" class="slide-image" width="355" height="150"/>
    </swiper-item>
  </block>
</swiper>
<button bindtap="changeIndicatorDots"> indicator-dots </button>
<button bindtap="changeAutoplay"> autoplay </button>
<slider bindchange="intervalChange" show-value min="500" max="2000"/> interval
<slider bindchange="durationChange" show-value min="1000" max="10000"/> duration
Page({
  data: {
    imgUrls: [
      'http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',
      'http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',
      'http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg'
    ],
    indicatorDots: false,
    autoplay: false,
    interval: 5000,
    duration: 1000
  },
  changeIndicatorDots: function(e) {
    this.setData({
      indicatorDots: !this.data.indicatorDots
    })
  },
  changeAutoplay: function(e) {
    this.setData({
      autoplay: !this.data.autoplay
    })
  },
  intervalChange: function(e) {
    this.setData({
      interval: e.detail.value
    })
  },
  durationChange: function(e) {
    this.setData({
      duration: e.detail.value
    })
  }
})
 

复制代码

 

 

 

可拖动view

 

movable-area

基础库 1.2.0 开始支持,低版本需做兼容处理

movable-view 的可移动区域

属性名类型默认值说明最低版本
scale-areaBooleanfalse当里面的movable-view设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个movable-area1.9.90

注意:movable-area 必须设置width和height属性,不设置默认为10px

movable-view

基础库 1.2.0 开始支持,低版本需做兼容处理

可移动的视图容器,在页面中可以拖拽滑动

属性名类型默认值说明最低版本
directionStringnonemovable-view的移动方向,属性值有all、vertical、horizontal、none 
inertiaBooleanfalsemovable-view是否带有惯性 
out-of-boundsBooleanfalse超过可移动区域后,movable-view是否还可以移动 
xNumber / String 定义x轴方向的偏移,如果x的值不在可移动范围内,会自动移动到可移动范围;改变x的值会触发动画 
yNumber / String 定义y轴方向的偏移,如果y的值不在可移动范围内,会自动移动到可移动范围;改变y的值会触发动画 
dampingNumber20阻尼系数,用于控制x或y改变时的动画和过界回弹的动画,值越大移动越快 
frictionNumber2摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值 
disabledBooleanfalse是否禁用1.9.90
scaleBooleanfalse是否支持双指缩放,默认缩放手势生效区域是在movable-view内1.9.90
scale-minNumber0.5定义缩放倍数最小值1.9.90
scale-maxNumber10定义缩放倍数最大值1.9.90
scale-valueNumber1定义缩放倍数,取值范围为 0.5 - 101.9.90
animationBooleantrue是否使用动画2.1.0
bindchangeEventHandle 拖动过程中触发的事件,event.detail = {x: x, y: y, source: source},其中source表示产生移动的原因,值可为touch(拖动)、touch-out-of-bounds(超出移动范围)、out-of-bounds(超出移动范围后的回弹)、friction(惯性)和空字符串(setData)1.9.90
bindscaleEventHandle 缩放过程中触发的事件,event.detail = {x: x, y: y, scale: scale},其中x和y字段在2.1.0之后开始支持返回1.9.90

除了基本事件外,movable-view提供了两个特殊事件

类型触发条件最低版本
htouchmove初次手指触摸后移动为横向的移动,如果catch此事件,则意味着touchmove事件也被catch1.9.90
vtouchmove初次手指触摸后移动为纵向的移动,如果catch此事件,则意味着touchmove事件也被catch1.9.90

movable-view 必须设置width和height属性,不设置默认为10px

movable-view 默认为绝对定位,top和left属性为0px

当movable-view小于movable-area时,movable-view的移动范围是在movable-area内;当movable-view大于movable-area时,movable-view的移动范围必须包含movable-area(x轴方向和y轴方向分开考虑)

注意:movable-view必须在<movable-area/>组件中,并且必须是直接子节点,否则不能移动。

 

checkbox

 

form组件 -picker普通选择器
form组件-pick多列选择器

bindchangeEventHandle value 改变时触发 change 事件,event.detail = {value: value} 
bindcancelEventHandle 取消选择时触发

时间选择器:mode = time

属性名类型默认值说明最低版本
valueString 表示选中的时间,格式为"hh:mm" 
startString 表示有效时间范围的开始,字符串格式为"hh:mm" 
endString 表示有效时间范围的结束,字符串格式为"hh:mm" 
bindchangeEventHandle value 改变时触发 change 事件,event.detail = {value: value} 
bindcancelEventHandle 取消选择时触发1.9.90
disabledBooleanfalse是否禁用 

日期选择器:mode = date

属性名类型默认值说明最低版本
valueString0表示选中的日期,格式为"YYYY-MM-DD" 
startString 表示有效日期范围的开始,字符串格式为"YYYY-MM-DD" 
endString 表示有效日期范围的结束,字符串格式为"YYYY-MM-DD" 
fieldsStringday有效值 year,month,day,表示选择器的粒度 
bindchangeEventHandle value 改变时触发 change 事件,event.detail = {value: value} 
bindcancelEventHandle 取消选择时触发1.9.90
disabledBooleanfalse是否禁用 

fields 有效值:

说明
year选择器粒度为年
month选择器粒度为月份
day选择器粒度为天

省市区选择器:mode = region(最低版本:1.4.0

属性名类型默认值说明最低版本
valueArray[]表示选中的省市区,默认选中每一列的第一个值 
custom-itemString 可为每一列的顶部添加一个自定义的项1.5.0
bindchangeEventHandle value 改变时触发 change 事件,event.detail = {value: value, code: code, postcode: postcode},其中字段code是统计用区划代码,postcode是邮政编码 
bindcancelEventHandle 取消选择时触发1.9.90
disabledBooleanfalse是否禁用
 

picker-view

嵌入页面的滚动选择器

属性名类型说明最低版本
valueNumberArray数组中的数字依次表示 picker-view 内的 picker-view-column 选择的第几项(下标从 0 开始),数字大于 picker-view-column 可选项长度时,选择最后一项。 
indicator-styleString设置选择器中间选中框的样式 
indicator-classString设置选择器中间选中框的类名1.1.0
mask-styleString设置蒙层的样式1.5.0
mask-classString设置蒙层的类名1.5.0
bindchangeEventHandle当滚动选择,value 改变时触发 change 事件,event.detail = {value: value};value为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项(下标从 0 开始) 

注意:其中只可放置<picker-view-column/>组件,其他节点不会显示。

picker-view-column

仅可放置于<picker-view />中,其孩子节点的高度会自动设置成与picker-view的选中框的高度一致

 

 

slider滑动选择器

slider

滑动选择器。

 

 

属性名类型默认值说明最低版本
minNumber0最小值 
maxNumber100最大值 
stepNumber1步长,取值必须大于 0,并且可被(max - min)整除 
disabledBooleanfalse是否禁用 
valueNumber0当前取值 
colorColor#e9e9e9背景条的颜色(请使用 backgroundColor) 
selected-colorColor#1aad19已选择的颜色(请使用 activeColor) 
activeColorColor#1aad19已选择的颜色 
backgroundColorColor#e9e9e9背景条的颜色 
block-sizeNumber28滑块的大小,取值范围为 12 - 281.9.0
block-colorColor#ffffff滑块的颜色1.9.0
show-valueBooleanfalse是否显示当前 value 
bindchangeEventHandle 完成一次拖动后触发的事件,event.detail = {value: value} 
bindchangingEventHandle 拖动过程中触发的事件,event.detail = {value: value}
 

 

 

 swich开关

switch

开关选择器。

属性名类型默认值说明
checkedBooleanfalse是否选中
disabledBooleanfalse是否禁用
typeStringswitch样式,有效值:switch, checkbox
bindchangeEventHandle checked 改变时触发 change 事件,event.detail={ value:checked}
colorColor switch 的颜色,同 css 的 color
 

 

 

textarea

多行输入框。该组件是原生组件,使用时请注意相关限制。

属性名类型默认值说明最低版本
valueString 输入框的内容 
placeholderString 输入框为空时占位符 
placeholder-styleString 指定 placeholder 的样式 
placeholder-classStringtextarea-placeholder指定 placeholder 的样式类 
disabledBooleanfalse是否禁用 
maxlengthNumber140最大输入长度,设置为 -1 的时候不限制最大长度 
auto-focusBooleanfalse自动聚焦,拉起键盘。 
focusBooleanfalse获取焦点 
auto-heightBooleanfalse是否自动增高,设置auto-height时,style.height不生效 
fixedBooleanfalse如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true 
cursor-spacingNumber0指定光标与键盘的距离,单位 px 。取 textarea 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 
cursorNumber 指定focus时的光标位置1.5.0
show-confirm-barBooleantrue是否显示键盘上方带有”完成“按钮那一栏1.6.0
selection-startNumber-1光标起始位置,自动聚集时有效,需与selection-end搭配使用1.9.0
selection-endNumber-1光标结束位置,自动聚集时有效,需与selection-start搭配使用1.9.0
adjust-positionBooleantrue键盘弹起时,是否自动上推页面1.9.90
bindfocusEventHandle 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度,在基础库 1.9.90 起支持 
bindblurEventHandle 输入框失去焦点时触发,event.detail = {value, cursor} 
bindlinechangeEventHandle 输入框行数变化时调用,event.detail = {height: 0, heightRpx: 0, lineCount: 0} 
bindinputEventHandle 当键盘输入时,触发 input 事件,event.detail = {value, cursor},bindinput 处理函数的返回值并不会反映到 textarea 上 
bindconfirmEventHandle 点击完成时, 触发 confirm 事件,event.detail = {value: value}

 

 

 

小程序的导航组件

navigator

页面链接。

属性名类型默认值说明最低版本
targetStringself在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram2.0.7
urlString 当前小程序内的跳转链接 
open-typeStringnavigate跳转方式 
deltaNumber 当 open-type 为 'navigateBack' 时有效,表示回退的层数 
app-idString 当target="miniProgram"时有效,要打开的小程序 appId2.0.7
pathString 当target="miniProgram"时有效,打开的页面路径,如果为空则打开首页2.0.7
extra-dataObject 当target="miniProgram"时有效,需要传递给目标小程序的数据,目标小程序可在 App.onLaunch()App.onShow() 中获取到这份数据。详情2.0.7
versionversionrelease当target="miniProgram"时有效,要打开的小程序版本,有效值 develop(开发版),trial(体验版),release(正式版),仅在当前小程序为开发版或体验版时此参数有效;如果当前小程序是正式版,则打开的小程序必定是正式版。2.0.7
hover-classStringnavigator-hover指定点击时的样式类,当hover-class="none"时,没有点击态效果 
hover-stop-propagationBooleanfalse指定是否阻止本节点的祖先节点出现点击态1.5.0
hover-start-timeNumber50按住后多久出现点击态,单位毫秒 
hover-stay-timeNumber600手指松开后点击态保留时间,单位毫秒 
bindsuccessString 当target="miniProgram"时有效,跳转小程序成功2.0.7
bindfailString 当target="miniProgram"时有效,跳转小程序失败2.0.7
bindcompleteString 当target="miniProgram"时有效,跳转小程序完成2.0.7

open-type 有效值:

说明最低版本
navigate对应 wx.navigateTo 或 wx.navigateToMiniProgram 的功能 
redirect对应 wx.redirectTo 的功能 
switchTab对应 wx.switchTab 的功能 
reLaunch对应 wx.reLaunch 的功能1.1.0
navigateBack对应 wx.navigateBack 的功能1.1.0
exit退出小程序,target="miniProgram"时生效2.1.0

注:navigator-hover 默认为 {background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;}<navigator/> 的子节点背景色应为透明色

示例代码:

在开发者工具中预览效果

复制代码

/** wxss **/
/** 修改默认的navigator点击态 **/
.navigator-hover {
    color:blue;
}
/** 自定义其他点击态样式类 **/
.other-navigator-hover {
    color:red;
}
<!-- sample.wxml -->
<view class="btn-area">
  <navigator url="/page/navigate/navigate?title=navigate" hover-class="navigator-hover">跳转到新页面</navigator>
  <navigator url="../../redirect/redirect/redirect?title=redirect" open-type="redirect" hover-class="other-navigator-hover">在当前页打开</navigator>
  <navigator url="/page/index/index" open-type="switchTab" hover-class="other-navigator-hover">切换 Tab</navigator>
  <navigator target="miniProgram" open-type="navigate" app-id="" path="" extra-data="" version="release">打开绑定的小程序</navigator>
</view>
<!-- navigator.wxml -->
<view style="text-align:center"> {{title}} </view>
<view> 点击左上角返回回到之前页面 </view>
<!-- redirect.wxml -->
<view style="text-align:center"> {{title}} </view>
<view> 点击左上角返回回到上级页面 </view>
// redirect.js navigator.js
Page({
  onLoad: function(options) {
    this.setData({
      title: options.title
    })
  }
})

复制代码

 

 

 

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值