小程序组件

组件是什么?

组件是可以完成某些功能和逻辑的 代码集合, 将某些功能和逻辑封装起来, 以提供 直接使用

组件的特点就是高内聚, 可 复用性

开发者不需要知道组件内部是怎么实现的, 只需要拿来使用即可, 并且在需要的地方可多次使用

微信内置很多组件:

  1. 视图组件               view, scroll_view 
  2. 基础内容               icon, text 
  3. 表单                      input, textarea 
  4. 导航                      navigator 
  5. 媒体                      video, image, audio
  6. 地图                      map..
  7. 画布                      canvas
  8. 开发能力              open-data, webview

当然后续自己也可以 自定义组件

组件的通常包含: 配置  和   事件

来看看微信内置的switch组件的定义思路

switch的一般展示样子(一个具有手动开和关的功能的开关):

switch的属性:

  1. checked:是否选中—-false、true
  2. type:开关选择器的样式—-switch, checkbox
  3. color:switch 的颜色,同 css 的 color
  4. bindchange:checked属性改变时触发 change 事件

1,2,3项为switch组件的属性, 用来呈现的   ---- 配置项

4  ---- 事件

微信就是通过定义配置项和事件来定义一个组件, 我们定义组件也是这样做

 

下面介绍几个简单的基本组件:

icon是一个图标组件, 根据其类型的不同, 而生成不同的图标, 不需要从外部引入

与image不同, image是导入外部的图片, image需要先存在 外部图片文件

<view wx:for='{{iconType}}'>
  <icon type='{{item}}' color='blue' size='100'/>
</view>

type可取的值有: 'success', 'success_no_circle', 'info', 'warn', 'waiting', 'cancel', 'download', 'search', 'clear'

这个size默认是23px, 在书写时size="100", 不要写成size="100px", 否则无法识别

color不写时, 表示使用各种图标的默认颜色(各种图标有自身的默认颜色)

text组件

  • 表示文本, 其它元素在text元素内都是无效的 (比如在text元素内包含一个navigator元素, navigator元素是不起作用的)
  • 其文本支持转义字符, 且默认不换行, 而view组件是默认换行的
  • text组件里的文字可以被选中(长按鼠标), 需要加上一个selectable属性, view中的文字则不可被选中
  • 加上space属性还可以保留大量空格
<text selectable='true'>可以选中\n我</text>
<text space='nbsp'>我  有大量                   空格</text>

经测试在view上加这些属性无效

 

progress进度条组件

<progress percent='50' show-info stroke-width='20' color='red' active/>

percent='50'表示占总进度条的50%

show-info显示进度条的当前值

stroke-width='20'进度条的大小

color进度条颜色

active有动画效果

 

js中使用定时器来控制progress进度:

把active属性去掉 (不停地改变静态的属性, 看上去就是动态的)

<progress percent='{{progress}}' show-info stroke-width='20' color='red'/>

js中添加数据, 其中初始进度为0, 再加上onLoad事件, 在onLoad中添加定时器, 每0.05秒执行一下

Page({
  data: {
    progress : 0
  },
  onLoad: function() {
    var that = this;                  /*把this保存起来, 由于在setInterval函数中取不到它*/
    var pNumber = 0;

    var ptimer = setInterval(function(){
      pNumber ++;
      if(pNumber >= 100) {                    /*进度为100%时清除定时器*/
        clearInterval(ptimer);
      }
      that.setData({                        /*改变进度条当前值*/
        progress: pNumber
      });
    }, 50);
  }
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值