zoukankan      html  css  js  c++  java
  • 小程序-demo:小程序示例-page/component2

    ylbtech-小程序-demo:小程序示例-page/component2

     以下将展示小程序官方组件能力,组件样式仅供参考,开发者可根据自身需求自定义组件样式,具体属性参数详见小程序开发文档。

    1. page/component返回顶部
    1、
    a) .js
    Page({
      data: {
        list: [
          {
            id: 'view',
            name: '视图容器',
            open: false,
            pages: ['view', 'scroll-view', 'swiper']
          }, {
            id: 'content',
            name: '基础内容',
            open: false,
            pages: ['text', 'icon', 'progress']
          }, {
            id: 'form',
            name: '表单组件',
            open: false,
            pages: ['button', 'checkbox', 'form', 'input', 'label', 'picker', 'radio', 'slider', 'switch', 'textarea']
          }, {
            id: 'nav',
            name: '导航',
            open: false,
            pages: ['navigator']
          }, {
            id: 'media',
            name: '媒体组件',
            open: false,
            pages: ['image', 'audio', 'video']
          }, {
            id: 'map',
            name: '地图',
            pages: ['map']
          }, {
            id: 'canvas',
            name: '画布',
            pages: ['canvas']
          }
        ]
      },
      kindToggle: function (e) {
        var id = e.currentTarget.id, list = this.data.list;
        for (var i = 0, len = list.length; i < len; ++i) {
          if (list[i].id == id) {
            list[i].open = !list[i].open
          } else {
            list[i].open = false
          }
        }
        this.setData({
          list: list
        });
      }
    })
    b) .json
    {
        "navigationBarTitleText": "小程序官方组件展示"
    }
    c) .wxml
    <view class="index">
      <view class="index-hd">
        <image class="index-logo" src="resources/kind/logo.png"></image>
        <view class="index-desc">以下将展示小程序官方组件能力,组件样式仅供参考,开发者可根据自身需求自定义组件样式,具体属性参数详见小程序开发文档。</view>
      </view>
      <view class="index-bd">
        <view class="kind-list">
          <block wx:for-items="{{list}}" wx:key="{{item.id}}">
            <view class="kind-list-item">
              <view id="{{item.id}}" class="kind-list-item-hd {{item.open ? 'kind-list-item-hd-show' : ''}}" bindtap="kindToggle">
                <view class="kind-list-text">{{item.name}}</view>
                <image class="kind-list-img" src="resources/kind/{{item.id}}.png"></image>
              </view>
              <view class="kind-list-item-bd {{item.open ? 'kind-list-item-bd-show' : ''}}">
                <view class="navigator-box {{item.open ? 'navigator-box-show' : ''}}">
                  <block wx:for-items="{{item.pages}}" wx:for-item="page" wx:key="*item">
                    <navigator url="pages/{{page}}/{{page}}" class="navigator">
                      <view class="navigator-text">{{page}}</view>
                      <view class="navigator-arrow"></view>
                    </navigator>
                  </block>
                </view>
              </view>
            </view>
          </block>
        </view>
      </view>
    </view>
    d) .wxss
    @import "../common/index.wxss";
    e)
    2、pages
    3、resources
    -kind
    -pic
    4、
    2.  ./pages/view 试图容器返回顶部
    1、view
    a) .js
    Page({})
    b) .json
    {
        "navigationBarTitleText":"view"  
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'view'}}"/>
    
      <view class="page-body">
        <view class="page-section">
          <view class="page-section-title">
            <text>flex-direction: row
    横向布局</text>
          </view>
          <view class="page-section-spacing">
            <view class="flex-wrp" style="flex-direction:row;">
              <view class="flex-item demo-text-1"></view>
              <view class="flex-item demo-text-2"></view>
              <view class="flex-item demo-text-3"></view>
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="page-section-title">
            <text>flex-direction: column
    纵向布局</text>
          </view>
          <view class="flex-wrp" style="flex-direction:column;">
            <view class="flex-item flex-item-V demo-text-1"></view>
            <view class="flex-item flex-item-V demo-text-2"></view>
            <view class="flex-item flex-item-V demo-text-3"></view>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    .flex-wrp{
      margin-top: 60rpx;
      display:flex;
    }
    .flex-item{
      width: 200rpx;
      height: 300rpx;
      font-size: 26rpx;
    }
    .flex-item-V{
      margin: 0 auto;
      width: 300rpx;
      height: 200rpx;
    }
    e)
    2、scroll-view
    a) .js
    var order = ['demo1', 'demo2', 'demo3']
    Page({
      data: {
        toView: 'green'
      },
      upper: function(e) {
        console.log(e)
      },
      lower: function(e) {
        console.log(e)
      },
      scroll: function(e) {
        console.log(e)
      },
      scrollToTop: function(e) {
        this.setAction({
          scrollTop: 0
        })
      },
      tap: function(e) {
        for (var i = 0; i < order.length; ++i) {
          if (order[i] === this.data.toView) {
            this.setData({
              toView: order[i + 1],
              scrollTop: (i + 1) * 200
            })
            break
          }
        }
      },
      tapMove: function(e) {
        this.setData({
          scrollTop: this.data.scrollTop + 10
        })
      }
    })
    b) .json
    {
        "navigationBarTitleText": "scroll-view"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'scroll-view'}}"/>
    
      <view class="page-body">
        <view class="page-section">
          <view class="page-section-title">
            <text>Vertical Scroll
    纵向滚动</text>
          </view>
          <view class="page-section-spacing">
            <scroll-view scroll-y="true" style="height: 300rpx;" bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" scroll-into-view="{{toView}}" scroll-top="{{scrollTop}}">
              <view id="demo1" class="scroll-view-item demo-text-1"></view>
              <view id="demo2"  class="scroll-view-item demo-text-2"></view>
              <view id="demo3" class="scroll-view-item demo-text-3"></view>
            </scroll-view>
          </view>
        </view>
        <view class="page-section">
          <view class="page-section-title">
            <text>Horizontal Scroll
    横向滚动</text>
          </view>
          <view class="page-section-spacing">
            <scroll-view class="scroll-view_H" scroll-x="true" bindscroll="scroll" style=" 100%">
              <view id="demo1" class="scroll-view-item_H demo-text-1"></view>
              <view id="demo2"  class="scroll-view-item_H demo-text-2"></view>
              <view id="demo3" class="scroll-view-item_H demo-text-3"></view>
            </scroll-view>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    .page-section-spacing{
      margin-top: 60rpx;
    }
    .scroll-view_H{
      white-space: nowrap;
    }
    .scroll-view-item{
      height: 300rpx;
    }
    .scroll-view-item_H{
      display: inline-block;
      width: 100%;
      height: 300rpx;
    }
    e)
    3、swiper
    a) .js
    Page({
      data: {
        background: ['demo-text-1', 'demo-text-2', 'demo-text-3'],
        indicatorDots: true,
        vertical: false,
        autoplay: false,
        interval: 2000,
        duration: 500
      },
      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
        })
      }
    })
    b) .json
    {
        "navigationBarTitleText": "swiper"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'swiper'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-spacing swiper">
          <swiper indicator-dots="{{indicatorDots}}"
            autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
            <block wx:for="{{background}}" wx:key="*this">
              <swiper-item>
                <view class="swiper-item {{item}}"></view>
              </swiper-item>
            </block>
          </swiper>
        </view>
        <view class="page-section" style="margin-top: 40rpx;margin-bottom: 0;">
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_switch">
              <view class="weui-cell__bd">指示点</view>
              <view class="weui-cell__ft">
                <switch checked="{{indicatorDots}}" bindchange="changeIndicatorDots" />
              </view>
            </view>
            <view class="weui-cell weui-cell_switch">
              <view class="weui-cell__bd">自动播放</view>
              <view class="weui-cell__ft">
                <switch checked="{{autoplay}}" bindchange="changeAutoplay" />
              </view>
            </view>
          </view>
        </view>
    
        <view class="page-section page-section-spacing">
          <view class="page-section-title">
            <text>幻灯片切换时长(ms)</text>
            <text class="info">{{duration}}</text>
          </view>
          <slider bindchange="durationChange" value="{{duration}}" min="500" max="2000"/>
          <view class="page-section-title">
            <text>自动播放间隔时长(ms)</text>
            <text class="info">{{interval}}</text>
          </view>
          <slider bindchange="intervalChange" value="{{interval}}" min="2000" max="10000"/>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    
    button{
      margin-bottom: 30rpx;
    }
    button:last-child{
      margin-bottom: 0;
    }
    .page-section-title{
      padding: 0;
    }
    .swiper-item{
      display: block;
      height: 150px;
    }
    .page-section-title{
      margin-top: 60rpx;
      position: relative;
    }
    .info{
      position: absolute;
      right: 0;
      color: #353535;
      font-size: 30rpx;
    }
    .page-foot{
      margin-top: 50rpx;
    }
    e)
    4、
    3. ./pages/content 基础内容返回顶部
    1、text
    a) .js
    var texts = [
      '2011年1月,微信1.0发布',
      '同年5月,微信2.0语音对讲发布',
      '10月,微信3.0新增摇一摇功能',
      '2012年3月,微信用户突破1亿',
      '4月份,微信4.0朋友圈发布',
      '同年7月,微信4.2发布公众平台',
      '2013年8月,微信5.0发布微信支付',
      '2014年9月,企业号发布',
      '同月,发布微信卡包',
      '2015年1月,微信第一条朋友圈广告',
      '2016年1月,企业微信发布',
      '2017年1月,小程序发布',
      '......'
    ];
    
    Page({
      data: {
        text: '',
        canAdd: true,
        canRemove: false
      },
      extraLine: [],
      add: function(e) {
        var that = this;
        this.extraLine.push(texts[this.extraLine.length % 12])
        this.setData({
          text: this.extraLine.join('
    '),
          canAdd: this.extraLine.length < 12,
          canRemove: this.extraLine.length > 0
        })
        setTimeout(function(){
          that.setData({
            scrollTop: 99999
          });
        }, 0)
      },
      remove: function(e) {
        var that = this;
        if (this.extraLine.length > 0) {
          this.extraLine.pop()
          this.setData({
            text: this.extraLine.join('
    '),
            canAdd: this.extraLine.length < 12,
            canRemove: this.extraLine.length > 0,
          })
        }
        setTimeout(function(){
          that.setData({
            scrollTop: 99999
          });
        }, 0)
      }
    })
    b) .json
    {
        "navigationBarTitleText": "text"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'text'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-spacing">
          <view class="text-box" scroll-y="true" scroll-top="{{scrollTop}}">
            <text>{{text}}</text>
          </view>
          <button disabled="{{!canAdd}}" bindtap="add">add line</button>
          <button disabled="{{!canRemove}}" bindtap="remove">remove line</button>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    button{
      margin: 40rpx 0;
    }
    .text-box{
      margin-bottom: 70rpx;
      padding: 40rpx 0;
      display: flex;
      min-height: 300rpx;
      background-color: #FFFFFF;
      justify-content: center;
      align-items: center;
      text-align: center;
      font-size: 30rpx;
      color: #353535;
      line-height: 2em;
    }
    e)
    2、icon
    a) .js
    Page({})
    b) .json
    {
        "navigationBarTitleText": "icon"
    }
    c) .wxml
    <import src="../../../common/head.wxml"/>
    <import src="../../../common/foot.wxml"/>
    
    <view class="container">
      <template is="head" data="{{title: 'icon'}}"/>
    
      <view class="icon-box">
        <icon class="icon-box-img" type="success" size="93"></icon>
        <view class="icon-box-ctn">
          <view class="icon-box-title">成功</view>
          <view class="icon-box-desc">用于表示操作顺利完成</view>
        </view>
      </view>
      <view class="icon-box">
        <icon class="icon-box-img" type="info" size="93"></icon>
        <view class="icon-box-ctn">
          <view class="icon-box-title">提示</view>
          <view class="icon-box-desc">用于表示信息提示;也常用于缺乏条件的操作拦截,提示用户所需信息</view>
        </view>
      </view>
      <view class="icon-box">
        <icon class="icon-box-img" type="warn" size="93" color="#C9C9C9"></icon>
        <view class="icon-box-ctn">
          <view class="icon-box-title">普通警告</view>
          <view class="icon-box-desc">用于表示操作后将引起一定后果的情况;也用于表示由于系统原因而造成的负向结果</view>
        </view>
      </view>
      <view class="icon-box">
        <icon class="icon-box-img" type="warn" size="93"></icon>
        <view class="icon-box-ctn">
          <view class="icon-box-title">强烈警告</view>
          <view class="icon-box-desc">用于表示由于用户原因造成的负向结果;也用于表示操作后将引起不可严重的挽回的后果的情况</view>
        </view>
      </view>
      <view class="icon-box">
        <icon class="icon-box-img" type="waiting" size="93"></icon>
        <view class="icon-box-ctn">
          <view class="icon-box-title">等待</view>
          <view class="icon-box-desc">用于表示等待,告知用户结果需等待</view>
        </view>
      </view>
      <view class="icon-box">
        <view class="icon-small-wrp">
          <icon class="icon-small" type="success" size="23"></icon>
        </view>
        <view class="icon-box-ctn">
          <view class="icon-box-title">多选控件图标_已选择</view>
          <view class="icon-box-desc">用于多选控件中,表示已选择该项目</view>
        </view>
      </view>
      <view class="icon-box">
        <view class="icon-small-wrp">
          <icon class="icon-small" type="circle" size="23"></icon>
        </view>
        <view class="icon-box-ctn">
          <view class="icon-box-title">多选控件图标_未选择</view>
          <view class="icon-box-desc">用于多选控件中,表示该项目可被选择,但还未选择</view>
        </view>
      </view>
      <view class="icon-box">
        <view class="icon-small-wrp">
          <icon class="icon-small" type="warn" size="23"></icon>
        </view>
        <view class="icon-box-ctn">
          <view class="icon-box-title">错误提示</view>
          <view class="icon-box-desc">用于在表单中表示出现错误</view>
        </view>
      </view>
      <view class="icon-box">
        <view class="icon-small-wrp">
          <icon class="icon-small" type="success_no_circle" size="23"></icon>
        </view>
        <view class="icon-box-ctn">
          <view class="icon-box-title">单选控件图标_已选择</view>
          <view class="icon-box-desc">用于单选控件中,表示已选择该项目</view>
        </view>
      </view>
      <view class="icon-box">
        <view class="icon-small-wrp">
          <icon class="icon-small" type="download" size="23"></icon>
        </view>
        <view class="icon-box-ctn">
          <view class="icon-box-title">下载</view>
          <view class="icon-box-desc">用于表示可下载</view>
        </view>
      </view>
      <view class="icon-box">
        <view class="icon-small-wrp">
          <icon class="icon-small" type="info_circle" size="23"></icon>
        </view>
        <view class="icon-box-ctn">
          <view class="icon-box-title">提示</view>
          <view class="icon-box-desc">用于在表单中表示有信息提示</view>
        </view>
      </view>
      <view class="icon-box">
        <view class="icon-small-wrp">
          <icon class="icon-small" type="cancel" size="23"></icon>
        </view>
        <view class="icon-box-ctn">
          <view class="icon-box-title">停止或关闭</view>
          <view class="icon-box-desc">用于在表单中,表示关闭或停止</view>
        </view>
      </view>
      <view class="icon-box">
        <view class="icon-small-wrp">
          <icon class="icon-small" type="search" size="14"></icon>
        </view>
        <view class="icon-box-ctn">
          <view class="icon-box-title">搜索</view>
          <view class="icon-box-desc">用于搜索控件中,表示可搜索</view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    .icon-box{
      margin-bottom: 40rpx;
      padding: 0 75rpx;
      display: flex;
      align-items: center;
    }
    .icon-box-img{
      margin-right: 46rpx;
    }
    .icon-box-ctn{
      flex-shrink: 100;
    }
    .icon-box-title{
      font-size: 34rpx;
    }
    .icon-box-desc{
      margin-top: 12rpx;
      font-size: 26rpx;
      color: #888;
    }
    
    .icon-small-wrp{
      margin-right: 46rpx;
      width: 93px;
      height: 93px;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    e)
    3、progress
    a) .js
    Page({})
    b) .json
    {
        "navigationBarTitleText": "progress"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'progress'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap">
    
          <view class="progress-box">
            <progress percent="20" show-info stroke-width="3"/>
          </view>
    
          <view class="progress-box">
            <progress percent="40" active stroke-width="3" />
            <icon class="progress-cancel" type="cancel"></icon>
          </view>
    
          <view class="progress-box">
            <progress percent="60" active stroke-width="3" />
          </view>
    
          <view class="progress-box">
            <progress percent="80" color="#10AEFF" active stroke-width="3" />
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    progress{
      width: 100%;
    }
    .progress-box{
      display: flex;
      height: 50rpx;
      margin-bottom: 60rpx;
    }
    .progress-cancel{
      margin-left: 40rpx;
    }
    e)
    4. ./pages/form 表单组件返回顶部
    1、button
    a) .js
    var types = ['default', 'primary', 'warn']
    var pageObject = {
      data: {
        defaultSize: 'default',
        primarySize: 'default',
        warnSize: 'default',
        disabled: false,
        plain: false,
        loading: false
      },
      setDisabled: function(e) {
        this.setData({
          disabled: !this.data.disabled
        })
      },
      setPlain: function(e) {
        this.setData({
          plain: !this.data.plain
        })
      },
      setLoading: function(e) {
        this.setData({
          loading: !this.data.loading
        })
      }
    }
    
    for (var i = 0; i < types.length; ++i) {
      (function(type) {
        pageObject[type] = function(e) {
          var key = type + 'Size'
          var changedData = {}
          changedData[key] =
            this.data[key] === 'default' ? 'mini' : 'default'
          this.setData(changedData)
        }
      })(types[i])
    }
    
    Page(pageObject)
    b) .json
    {
        "navigationBarTitleText": "button"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'button'}}"/>
    
      <view class="page-body">
        <view class="btn-area" id="buttonContainer">
          <button type="primary">页面主操作 Normal</button>
          <button type="primary" loading="true">页面主操作 Loading</button>
          <button type="primary" disabled="true">页面主操作 Disabled</button>
    
          <button type="default">页面次要操作 Normal</button>
          <button type="default" disabled="true">页面次要操作 Disabled</button>
    
          <button type="warn">警告类操作 Normal</button>
          <button type="warn" disabled="true">警告类操作 Disabled</button>
    
          <view class="button-sp-area">
            <button type="primary" plain="true">按钮</button>
            <button type="primary" disabled="true" plain="true">不可点击的按钮</button>
    
            <button type="default" plain="true">按钮</button>
            <button type="default" disabled="true" plain="true">按钮</button>
    
            <button class="mini-btn" type="primary" size="mini">按钮</button>
            <button class="mini-btn" type="default" size="mini">按钮</button>
            <button class="mini-btn" type="warn" size="mini">按钮</button>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    button{
      margin-top: 30rpx;
      margin-bottom: 30rpx;
    }
    .button-sp-area{
      margin: 0 auto;
      width: 60%;
    }
    .mini-btn{
      margin-right: 10rpx;
    }
    e)
    2、checkbox
    a) .js
    Page({
      data: {
        items: [
          {value: 'USA', name: '美国'},
          {value: 'CHN', name: '中国', checked: 'true'},
          {value: 'BRA', name: '巴西'},
          {value: 'JPN', name: '日本'},
          {value: 'ENG', name: '英国'},
          {value: 'FRA', name: '法国'}
        ]
      },
      checkboxChange: function(e) {
        console.log('checkbox发生change事件,携带value值为:', e.detail.value)
    
        var items = this.data.items, values = e.detail.value;
        for (var i = 0, lenI = items.length; i < lenI; ++i) {
          items[i].checked = false;
    
          for (var j = 0, lenJ = values.length; j < lenJ; ++j) {
            if(items[i].value == values[j]){
              items[i].checked = true;
              break
            }
          }
        }
    
        this.setData({
          items: items
        })
      }
    })
    b) .json
    {
        "navigationBarTitleText": "checkbox"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'checkbox'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap">
          <view class="page-section-title">默认样式</view>
          <label class="checkbox">
            <checkbox value="cb" checked="true"/>选中
          </label>
          <label class="checkbox">
            <checkbox value="cb" />未选中
          </label>
        </view>
    
        <view class="page-section">
          <view class="page-section-title">推荐展示样式</view>
          <view class="weui-cells weui-cells_after-title">
            <checkbox-group bindchange="checkboxChange">
              <label class="weui-cell weui-check__label" wx:for="{{items}}" wx:key="{{item.value}}">
                <view class="weui-cell__hd">
                  <checkbox value="{{item.value}}" checked="{{item.checked}}"/>
                </view>
                <view class="weui-cell__bd">{{item.name}}</view>
              </label>
            </checkbox-group>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    
    .checkbox{
      margin-right: 20rpx;
    }
    e)
    3、form
    a) .js
    Page({
      data: {
        pickerHidden: true,
        chosen: ''
      },
      pickerConfirm: function (e) {
        this.setData({
          pickerHidden: true
        })
        this.setData({
          chosen: e.detail.value
        })
      },
      pickerCancel: function (e) {
        this.setData({
          pickerHidden: true
        })
      },
      pickerShow: function (e) {
        this.setData({
          pickerHidden: false
        })
      },
      formSubmit: function (e) {
        console.log('form发生了submit事件,携带数据为:', e.detail.value)
      },
      formReset: function (e) {
        console.log('form发生了reset事件,携带数据为:', e.detail.value)
        this.setData({
          chosen: ''
        })
      }
    })
    b) .json
    {
        "navigationBarTitleText": "form"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'form'}}"/>
    
      <view class="page-body">
        <form catchsubmit="formSubmit" catchreset="formReset">
          <view class="page-section page-section-gap">
            <view class="page-section-title">switch</view>
            <switch name="switch"/>
          </view>
    
          <view class="page-section page-section-gap">
            <view class="page-section-title">radio</view>
            <radio-group name="radio">
              <label><radio value="radio1"/>选项一</label>
              <label><radio value="radio2"/>选项二</label>
            </radio-group>
          </view>
    
          <view class="page-section page-section-gap">
            <view class="page-section-title">checkbox</view>
            <checkbox-group name="checkbox">
              <label><checkbox value="checkbox1"/>选项一</label>
              <label><checkbox value="checkbox2"/>选项二</label>
            </checkbox-group>
          </view>
    
          <view class="page-section page-section-gap">
            <view class="page-section-title">slider</view>
            <slider value="50" name="slider" show-value ></slider>
          </view>
    
          <view class="page-section">
            <view class="page-section-title">input</view>
            <view class="weui-cells weui-cells_after-title">
              <view class="weui-cell weui-cell_input">
                <view class="weui-cell__bd">
                  <input class="weui-input" name="input" placeholder="这是一个输入框" />
                </view>
              </view>
            </view>
          </view>
    
          <view class="btn-area">
            <button type="primary" formType="submit">Submit</button>
            <button formType="reset">Reset</button>
          </view>
        </form>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    
    label {
      display: inline-block;
      min-width: 270rpx;
      margin-right: 20rpx;
    }
    form{
      width: 100%;
    }
    .picker-text {
      margin-left: 20rpx;
      position: relative;
    }
    e)
    4、input
    a) .js
    Page({
      data: {
        focus: false,
        inputValue: ''
      },
      bindKeyInput: function (e) {
        this.setData({
          inputValue: e.detail.value
        })
      },
      bindReplaceInput: function (e) {
        var value = e.detail.value
        var pos = e.detail.cursor
        var left
        if (pos !== -1) {
          // 光标在中间
          left = e.detail.value.slice(0, pos)
          // 计算光标的位置
          pos = left.replace(/11/g, '2').length
        }
    
        // 直接返回对象,可以对输入进行过滤处理,同时可以控制光标的位置
        return {
          value: value.replace(/11/g, '2'),
          cursor: pos
        }
    
        // 或者直接返回字符串,光标在最后边
        // return value.replace(/11/g,'2'),
      },
      bindHideKeyboard: function (e) {
        if (e.detail.value === '123') {
          // 收起键盘
          wx.hideKeyboard()
        }
      }
    })
    b) .json
    {
        "navigationBarTitleText": "input"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'input'}}"/>
    
      <view class="page-body">
        <view class="page-section">
          <view class="weui-cells__title">可以自动聚焦的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input" auto-focus placeholder="将会获取焦点"/>
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">控制最大输入长度的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input" maxlength="10" placeholder="最大输入长度为10" />
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">实时获取输入值:{{inputValue}}</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input"  maxlength="10" bindinput="bindKeyInput" placeholder="输入同步到view中"/>
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">控制输入的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input"  bindinput="bindReplaceInput" placeholder="连续的两个1会变成2" />
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">控制键盘的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input"  bindinput="bindHideKeyboard" placeholder="输入123自动收起键盘" />
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">数字输入的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input" type="number" placeholder="这是一个数字输入框" />
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">密码输入的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input" password type="text" placeholder="这是一个密码输入框" />
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">带小数点的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input" type="digit" placeholder="带小数点的数字键盘"/>
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">身份证输入的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input" type="idcard" placeholder="身份证输入键盘" />
            </view>
          </view>
        </view>
        <view class="page-section">
          <view class="weui-cells__title">控制占位符颜色的input</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <input class="weui-input" placeholder-style="color:#F76260" placeholder="占位符字体是红色的" />
            </view>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    
    .page-section{
      margin-bottom: 20rpx;
    }
    e)
    5、label
    a) .js
    Page({
      data: {
        checkboxItems: [
          {name: 'USA', value: '美国'},
          {name: 'CHN', value: '中国', checked: 'true'}
        ],
        radioItems: [
          {name: 'USA', value: '美国'},
          {name: 'CHN', value: '中国', checked: 'true'}
        ],
        hidden: false
      },
      checkboxChange: function (e) {
        var checked = e.detail.value
        var changed = {}
        for (var i = 0; i < this.data.checkboxItems.length; i++) {
          if (checked.indexOf(this.data.checkboxItems[i].name) !== -1) {
            changed['checkboxItems[' + i + '].checked'] = true
          } else {
            changed['checkboxItems[' + i + '].checked'] = false
          }
        }
        this.setData(changed)
      },
      radioChange: function (e) {
        var checked = e.detail.value
        var changed = {}
        for (var i = 0; i < this.data.radioItems.length; i ++) {
          if (checked.indexOf(this.data.radioItems[i].name) !== -1) {
            changed['radioItems[' + i + '].checked'] = true
          } else {
            changed['radioItems[' + i + '].checked'] = false
          }
        }
        this.setData(changed)
      },
      tapEvent: function (e) {
        console.log('按钮被点击')
      }
    })
    b) .json
    {
        "navigationBarTitleText": "label"
    }
    c) .wxml  ?点击该label下的文字默认选中第一个checkbox
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'label'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap">
          <view class="page-section-title">表单组件在label内</view>
          <checkbox-group class="group" bindchange="checkboxChange">
            <view class="label-1" wx:for="{{checkboxItems}}">
              <label>
                <checkbox value="{{item.name}}" checked="{{item.checked}}"></checkbox>
                <text class="label-1-text">{{item.value}}</text>
              </label>
            </view>
          </checkbox-group>
        </view>
    
        <view class="page-section page-section-gap">
          <view class="page-section-title">label用for标识表单组件</view>
          <radio-group class="group" bindchange="radioChange">
            <view class="label-2" wx:for="{{radioItems}}">
              <radio id="{{item.name}}" value="{{item.name}}" checked="{{item.checked}}"></radio>
              <label class="label-2-text" for="{{item.name}}"><text>{{item.name}}</text></label>
            </view>
          </radio-group>
        </view>
    
        <view class="page-section page-section-gap">
          <view class="page-section-title">label内有多个时选中第一个</view>
          <label class="label-3">
            <checkbox class="checkbox-3">选项一</checkbox>
            <checkbox class="checkbox-3">选项二</checkbox>
            <view class="label-3-text">点击该label下的文字默认选中第一个checkbox</view>
          </label>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    .label-1, .label-2{
      margin: 30rpx 0;
    }
    .label-3-text{
      color: #576B95;
      font-size: 28rpx;
    }
    .checkbox-3{
      display: block;
      margin: 30rpx 0;
    }
    e)
    6、picker
    1、view
    a) .js
    Page({
      data: {
        array: ['中国', '美国', '巴西', '日本'],
        index: 0,
        date: '2016-09-01',
        time: '12:01'
      },
      bindPickerChange: function(e) {
        console.log('picker发送选择改变,携带值为', e.detail.value)
        this.setData({
          index: e.detail.value
        })
      },
      bindDateChange: function(e) {
        this.setData({
          date: e.detail.value
        })
      },
      bindTimeChange: function(e) {
        this.setData({
          time: e.detail.value
        })
      }
    })
    b) .json
    {
        "navigationBarTitleText": "picker"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'picker'}}"/>
    
      <view class="page-body">
        <view class="page-section">
          <view class="weui-cells__title">地区选择器</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <view class="weui-cell__hd">
                <view class="weui-label">当前选择</view>
              </view>
              <view class="weui-cell__bd">
                <picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
                  <view class="weui-input">{{array[index]}}</view>
                </picker>
              </view>
            </view>
          </view>
    
          <view class="weui-cells__title">时间选择器</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <view class="weui-cell__hd">
                <view class="weui-label">当前选择</view>
              </view>
              <view class="weui-cell__bd">
                <picker mode="time" value="{{time}}" start="09:01" end="21:01" bindchange="bindTimeChange">
                  <view class="weui-input">{{time}}</view>
                </picker>
              </view>
            </view>
          </view>
    
          <view class="weui-cells__title">日期选择器</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_input">
              <view class="weui-cell__hd">
                <view class="weui-label">当前选择</view>
              </view>
              <view class="weui-cell__bd">
                <picker mode="date" value="{{date}}" start="2015-09-01" end="2017-09-01" bindchange="bindDateChange">
                  <view class="weui-input">{{date}}</view>
                </picker>
              </view>
            </view>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    
    .picker{
      padding: 19rpx 26rpx;
      background-color: #FFFFFF;
    }
    e)
    7、radio
    a) .js
    Page({
      data: {
        items: [
          {value: 'USA', name: '美国'},
          {value: 'CHN', name: '中国', checked: 'true'},
          {value: 'BRA', name: '巴西'},
          {value: 'JPN', name: '日本'},
          {value: 'ENG', name: '英国'},
          {value: 'FRA', name: '法国'},
        ]
      },
      radioChange: function(e) {
        console.log('radio发生change事件,携带value值为:', e.detail.value)
    
        var items = this.data.items;
        for (var i = 0, len = items.length; i < len; ++i) {
          items[i].checked = items[i].value == e.detail.value
        }
    
        this.setData({
          items: items
        });
      }
    })
    b) .json
    {
        "navigationBarTitleText": "radio"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'radio'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap">
          <view class="page-section-title">默认样式</view>
          <label class="radio">
            <radio value="r1" checked="true"/>选中
          </label>
          <label class="radio">
            <radio value="r2" />未选中
          </label>
        </view>
    
    
        <view class="page-section">
          <view class="page-section-title">推荐展示样式</view>
          <view class="weui-cells weui-cells_after-title">
            <radio-group bindchange="radioChange">
              <label class="weui-cell weui-check__label" wx:for="{{items}}" wx:key="{{item.value}}">
    
                <view class="weui-cell__hd">
                  <radio value="{{item.value}}" checked="true"/>
                </view>
                <view class="weui-cell__bd">{{item.name}}</view>
              </label>
            </radio-group>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    
    .radio {
      margin-right: 20rpx;
    }
    e)
    8、slider
    a) .js
    var pageData = {}
    for (var i = 1; i < 5; ++i) {
      (function (index) {
        pageData['slider' + index + 'change'] = function(e) {
          console.log('slider' + index + '发生change事件,携带值为', e.detail.value)
        }
      })(i)
    }
    Page(pageData)
    b) .json
    {
        "navigationBarTitleText": "slider"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'slider'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap">
          <view class="page-section-title">设置step</view>
          <view class="body-view">
            <slider value="60" bindchange="slider2change" step="5"/>
          </view>
        </view>
    
        <view class="page-section page-section-gap">
          <view class="page-section-title">显示当前value</view>
          <view class="body-view">
            <slider value="50" bindchange="slider3change" show-value/>
          </view>
        </view>
    
        <view class="page-section page-section-gap">
          <view class="page-section-title">设置最小/最大值</view>
          <view class="body-view">
            <slider value="100" bindchange="slider4change" min="50" max="200" show-value/>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    
    button{
      margin-bottom: 30rpx;
    }
    button:last-child{
      margin-bottom: 0;
    }
    .page-section-title{
      padding: 0;
    }
    .swiper-item{
      display: block;
      height: 150px;
    }
    .page-section-title{
      margin-top: 60rpx;
      position: relative;
    }
    .info{
      position: absolute;
      right: 0;
      color: #353535;
      font-size: 30rpx;
    }
    .page-foot{
      margin-top: 50rpx;
    }
    e)
    9、switch
    a) .js
    Page({
      switch1Change: function (e){
        console.log('switch1 发生 change 事件,携带值为', e.detail.value)
      },
      switch2Change: function (e){
        console.log('switch2 发生 change 事件,携带值为', e.detail.value)
      }
    })
    b) .json
    {
        "navigationBarTitleText": "switch"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'switch'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap">
          <view class="page-section-title">默认样式</view>
          <view class="body-view">
            <switch checked bindchange="switch1Change"/>
            <switch bindchange="switch2Change"/>
          </view>
        </view>
    
        <view class="page-section">
          <view class="page-section-title">推荐展示样式</view>
          <view class="weui-cells weui-cells_after-title">
            <view class="weui-cell weui-cell_switch">
              <view class="weui-cell__bd">开启中</view>
              <view class="weui-cell__ft">
                <switch checked />
              </view>
            </view>
            <view class="weui-cell weui-cell_switch">
              <view class="weui-cell__bd">关闭</view>
              <view class="weui-cell__ft">
                <switch />
              </view>
            </view>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    e)
    10、textarea
    a) .js
    Page({
      data: {
        focus: false
      },
      bindTextAreaBlur: function(e) {
        console.log(e.detail.value)
      }
    })
    b) .json
    {
        "navigationBarTitleText": "textarea"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'textarea'}}"/>
    
      <view class="page-body">
        <view class="page-section">
          <view class="page-section-title">输入区域高度自适应,不会出现滚动条</view>
          <view class="textarea-wrp">
            <textarea bindblur="bindTextAreaBlur" auto-height />
          </view>
        </view>
    
        <view class="page-section">
          <view class="page-section-title">这是一个可以自动聚焦的textarea</view>
          <view class="textarea-wrp">
            <textarea auto-focus="true" style="height: 3em" />
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    textarea {
        width: 700rpx;
        padding: 25rpx 0;
    }
    .textarea-wrp {
        padding: 0 25rpx;
        background-color: #fff;
    }
    e)
    11、
    5. ./pages/nav 导航返回顶部
    0、
    1、navigator
    -navigate
    a) .js
    Page({
      onLoad: function(options) {
        console.log(options)
        this.setData({
          title: options.title
        })
      }
    })
    b) .json
    {
        "navigationBarTitleText": "navigatePage"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: '新建的页面'}}"/>
    </view>
    d) .wxss
    -navigator
    a) .js
    Page({})
    b) .json
    {
        "navigationBarTitleText": "navigator"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'navigator'}}"/>
    
      <view class="page-body">
        <view class="btn-area">
          <navigator url="navigate?title=navigate" hover-class="navigator-hover">
            <button type="default">跳转到新页面</button>
          </navigator>
          <navigator url="redirect?title=redirect" redirect hover-class="other-navigator-hover">
            <button type="default">在当前页打开</button>
          </navigator>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    .navigator-hover button{
      background-color: #DEDEDE;
    }
    .other-navigator-hover button{
      background-color: #DEDEDE;
    }
    -redirect
    a) .js
    Page({
      onLoad: function(options) {
        console.log(options)
        this.setData({
          title: options.title
        })
      }
    })
    b) .json
    {
        "navigationBarTitleText": "redirectPage"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: '当前页'}}"/>
    </view>
    d) .wxss
    e)
    12、
     
    6. ./pages/media 媒体组件返回顶部
    1、image
    a) .js
    Page({})
    b) .json
    {
        "navigationBarTitleText": "image"
    }
    c) .wxml
    <import src="../../../common/head.wxml"/>
    <import src="../../../common/foot.wxml"/>
    
    <view class="container">
      <template is="head" data="{{title: 'image'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap">
          <view class="page-section-title">Local Image</view>
          <view class="page-section-ctn">
            <image class="image" src="../../resources/pic/1.jpg"/>
          </view>
        </view>
        <view class="page-section page-section-gap">
          <view class="page-section-title">Internet Image</view>
          <view class="page-section-ctn">
            <image class="image" src="../../resources/pic/2.jpg"/>
          </view>
        </view>
      </view>
    
      <template is="foot"/>
    </view>
    d) .wxss
    .page-section-ctn {
      text-align: center;
    }
    
    .image {
      margin-top: 30rpx;
      width: 580rpx;
      height: 208rpx;
    }
    e)
    2、audio
    a) .js
    Page({
      data: {
        current: {
          poster: 'http://y.gtimg.cn/music/photo_new/T002R300x300M000003rsKF44GyaSk.jpg?max_age=2592000',
          name: '此时此刻',
          author: '许巍',
          src: 'http://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E06DCBDC9AB7C49FD713D632D313AC4858BACB8DDD29067D3C601481D36E62053BF8DFEAF74C0A5CCFADD6471160CAF3E6A&fromtag=46',
        },
        audioAction: {
          method: 'pause'
        }
      }
    })
    b) .json
    {
        "navigationBarTitleText": "audio"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'audio'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap" style="text-align: center;">
          <audio style="text-align: left" src="{{current.src}}" poster="{{current.poster}}" name="{{current.name}}" author="{{current.author}}" action="{{audioAction}}" controls></audio>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    e)
    3、video
    a) .js
    function getRandomColor () {
      const rgb = []
      for (let i = 0 ; i < 3; ++i){
        let color = Math.floor(Math.random() * 256).toString(16)
        color = color.length == 1 ? '0' + color : color
        rgb.push(color)
      }
      return '#' + rgb.join('')
    }
    
    Page({
      onReady: function (res) {
        this.videoContext = wx.createVideoContext('myVideo')
      },
      inputValue: '',
        data: {
        src: '',
        danmuList:
          [{
            text: '第 1s 出现的弹幕',
            color: '#ff0000',
            time: 1
          },
          {
            text: '第 3s 出现的弹幕',
            color: '#ff00ff',
            time: 3
          }]
        },
      bindInputBlur: function(e) {
        this.inputValue = e.detail.value
      },
      bindButtonTap: function() {
        var that = this
        wx.chooseVideo({
            sourceType: ['album', 'camera'],
            maxDuration: 60,
            camera: ['front','back'],
            success: function(res) {
                that.setData({
                    src: res.tempFilePath
                })
            }
        })
      },
      bindSendDanmu: function () {
        this.videoContext.sendDanmu({
          text: this.inputValue,
          color: getRandomColor()
        })
      },
      videoErrorCallback: function(e) {
        console.log('视频错误信息:')
        console.log(e.detail.errMsg)
      }
    })
    b) .json
    {
        "navigationBarTitleText": "video"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'video'}}"/>
    
      <view class="page-body">
        <view class="page-section tc">
          <video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400" binderror="videoErrorCallback" danmu-list="{{danmuList}}" enable-danmu danmu-btn controls></video>
    
          <view class="weui-cells">
            <view class="weui-cell weui-cell_input">
              <view class="weui-cell__hd">
                <view class="weui-label">弹幕内容</view>
              </view>
              <view class="weui-cell__bd">
                <input bindblur="bindInputBlur" class="weui-input" type="text" placeholder="在此处输入弹幕内容" />
              </view>
            </view>
          </view>
          <view class="btn-area">
            <button bindtap="bindSendDanmu" class="page-body-button" type="primary" formType="submit">发送弹幕</button>
          </view>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    @import "../../../common/lib/weui.wxss";
    
    .weui-cells{
      margin-top: 80rpx;
      text-align: left;
    }
    .weui-label{
      width: 5em;
    }
    e)
    4、
    7. ./pages/map 地图返回顶部
    1、map
    a) .js
    Page({
      data: {
        latitude: 23.099994,
        longitude: 113.324520,
        markers: [{
          latitude: 23.099994,
          longitude: 113.324520,
          name: 'T.I.T 创意园'
        }],
        covers: [{
          latitude: 23.099994,
          longitude: 113.344520,
          iconPath: '/image/location.png'
        }, {
          latitude: 23.099994,
          longitude: 113.304520,
          iconPath: '/image/location.png'
        }]
      }
    })
    b) .json
    {
        "navigationBarTitleText": "map"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'map'}}"/>
    
      <view class="page-body">
        <view class="page-section page-section-gap">
          <map
            style=" 100%; height: 300px;"
            latitude="{{latitude}}"
            longitude="{{longitude}}"
            markers="{{markers}}"
            covers="{{covers}}"
            >
          </map>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    e)
    2、
    8. ./pages/canvas 画布返回顶部
    1、canvas
    a) .js
    Page({
      onReady: function () {
        this.position = {
          x: 150,
          y: 150,
          vx: 2,
          vy: 2
        }
    
        this.drawBall()
        this.interval = setInterval(this.drawBall, 17)
      },
      drawBall: function () {
        var p = this.position
        p.x += p.vx
        p.y += p.vy
        if (p.x >= 300) {
          p.vx = -2
        }
        if (p.x <= 7) {
          p.vx = 2
        }
        if (p.y >= 300) {
          p.vy = -2
        }
        if (p.y <= 7) {
          p.vy = 2
        }
    
        var context = wx.createContext()
    
        function ball(x, y) {
          context.beginPath(0)
          context.arc(x, y, 5, 0, Math.PI * 2)
          context.setFillStyle('#1aad19')
          context.setStrokeStyle('rgba(1,1,1,0)')
          context.fill()
          context.stroke()
        }
    
        ball(p.x, 150)
        ball(150, p.y)
        ball(300 - p.x, 150)
        ball(150, 300 - p.y)
        ball(p.x, p.y)
        ball(300 - p.x, 300 - p.y)
        ball(p.x, 300 - p.y)
        ball(300 - p.x, p.y)
    
        wx.drawCanvas({
          canvasId: 'canvas',
          actions: context.getActions()
        })
      },
      onUnload: function () {
        clearInterval(this.interval)
      }
    })
    b) .json
    {
        "navigationBarTitleText": "canvas"
    }
    c) .wxml
    <import src="../../../common/head.wxml" />
    <import src="../../../common/foot.wxml" />
    
    <view class="container">
      <template is="head" data="{{title: 'canvas'}}"/>
    
      <view class="page-body">
        <view class="page-body-wrapper">
          <canvas canvas-id="canvas" class="canvas"></canvas>
        </view>
      </view>
    
      <template is="foot" />
    </view>
    d) .wxss
    .canvas {
      width: 305px;
      height: 305px;
      background-color: #fff;
    }
    e)
    2、
    9.返回顶部
     
    10.返回顶部
    0、
    1、
     
    11.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    团队项目-第一阶段冲刺7
    团队项目-第一阶段冲刺6
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(六) 消息队列篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(四) 配置文件篇
  • 原文地址:https://www.cnblogs.com/storebook/p/9518288.html
Copyright © 2011-2022 走看看