微信小程序 - Unit02

381 阅读5分钟

本期主要内容

1.WXSS

2.组件

3.WXML

1.WXSS

WXSS(Weixin Style Sheets) 是一套样式语言,用于描述 WXML 的组件样式。

• 尺寸单位 -- rpx

rpx(ResponsivePixel),可以根据屏幕宽度进行自适应,规定屏幕尺寸为 750rpx

• 样式导入

样式导入的语法结构是:

@import "wxss样式文件的路径及名称";

2.组件

<image>组件

<image> 组件是图片组件,支持 GIF 、 JPG 、 PNG 、 WEB 、 SVG 格式的文件,语法结构如下:

<image 

       src="图像的URL地址" 

       lazy-load="是否懒加载"

       mode="图像的裁切、缩放的模式">
       
</image>
```<image>``` 组件默认的尺寸为 300X240 mode 常用的模式有:

scaleToFill ,缩放模式,不保持横纵比

aspectFit ,缩放模式,保持横纵比,使图像的长边显示出来

aspectFill ,缩放模式,保持横纵比,使图像的短边显示出来

<swiper>组件

<swiper> 组件用于实现滑块视图容器,其语法结构是:

<swiper

    autoplay="是否自动播放"

    indicator-dots="是否显示面板指示点"

    indicator-color="指示点正常显示的颜色"

    indicator-active-color="指示点被选定的颜色"

    circular="是否采用衔接滑动"

    interval="自动切换的时间间隔(5000ms)"

    duration="切换的时长(500ms)"

    easing-function="动画类型">

	<swiper-item>...</swiper-item>

    ...

</swiper>
autoplay 属性必须存在否则不会触发轮播图

动画类型包括:

linear :线性动画

easeInCubic ,缓入动画

easeOutCubic ,缓出动画

easeInOutCubic ,缓入和缓出动画

<text>组件

<text> 组件用于实现文本,语法结构是:

<text selectable="是否可选" decode="是否解码"></text>

示例代码如下:

<text selectable="true">我是可选定的文本(需在真机模式下调试)</text>

<text>A&gt;B,B&lt;A</text>

<text decode="true">A&gt;B,B&lt;A,Tom&amp;John</text>
微信小程序的解码只支持:&nbsp;、&gt;、&lt;、&amp;及&apos;
以上五个称为HTML实体(HTMLEntity)

<icon>组件

<icon> 组件用于实现图标,语法结构是:

<icon type="图标类型" size="图标尺寸" color="颜色"></icon>
图标类型包括:

success ,表示成功

warn ,表示警告

waitng 表示等待

clear 表示清除

info 表示信息

cancel 表示取消

download 表示下载

search 表示搜索

<progress>组件

<progress> 组件表示进度条,语法结构是:

<progress percent="百分比" show-info="是否显示百分比"

	font-size="字号大小"

    stroke-width="进条度线的宽度"

    activeColor="已完成的进度条颜色"

    backgroundColor="未完成的进度条颜色">

</progress>

<button>组件

<button> 组件用于实现按钮,其语法结构是:

<button type="按钮类型(primary|default|warn)"

        size="按钮尺寸(default|mini)"

        plain="是否镂空"

        loading="是否带有加载图标"

        disabled="是否禁用"

        open-type="开启的微信开放能力">

    ...

</button>

<navigator>组件

<navigator>组件为页面链接组件,语法结构是:

<navigator url="当前小程序内的跳转链接" open-type="跳转方式">

    ...

</navigator>
跳转方式有: switchTab -- 可以跳转到包含在 tabBar 属性内的页面

默认情况下 URL 属性只能跳转到没有包含在 app.json 的 tabBar 属性内的页面

<input>组件

<input>组件用于实现输入框,该组件为原生组件,语法结构是:

<input 

       type="输入框的类型"

       password="是否为密码"

       placeholder="占位符"

       maxlength="最大长度"

       focus="是否自动获得焦点"

       bindinput="输入时触发的函数"

       bindfocus="获取焦点时触发的函数"

       bindblur="失去焦点时触发的函数"

       bindconfirm="点击完成按钮时触发的函数">

</input>
输入框类型包括:

text ,文本输入键盘

number ,数字输入键盘

idcard ,身份证号输入键盘

digit ,带小数点的数字输入键盘

3.WXML

3.1 数据绑定

page.wxml 中的动态数据来源于 page.js 中的 data

• 内容绑定

<component>{{variable}}</component>

示例代码如下:

• 属性绑定

<component 属性名称="{{variable}}"></component>

示例代码如下:

<!--page.wxml-->

<icon type="{{type}}" size="{{size}}"></icon>
//page.js



Page({

    data:{

        type:'success',

        size:50

    }

})

• 样式绑定

<component class="{{variable}}">...</component>

<component style="{{variable}}">...</component>
<!--page.wxml-->

<text class="{{class}}">CSS样式类的绑定</text>
//page.js



Page({

    data:{

        class:'text'

    }

})
<!--page.wxml-->

<view style="{{inline}}">行内样式的绑定</view>
//page.js



Page({

    data:{

        color:'#00f',

        size:'26px'

    }

})

3.2 列表渲染

<component 

           wx:for="{{variable}}" wx:key="index"

		   wx:for-index="索引变量名称" wx:for-item="成员变量名称">

</component>
默认的成员变量名称为item,默认的成员下标变量为index

示例代码如下:

//page.js



Page({

    data:{

        array:['关羽','赵云','刘备','曹操']

    }

})
<!--page.wxml-->



<view wx:for="{{array}}" wx:key="index">

    索引值:{{index}}--姓名:{{item}}

</view>

<view wx:for="{{array}}" 

      wx:for-item="user" 

      wx:for-index="key" 

      wx:key="key">

    姓名:{{user}}, 索引值:{{key}}

</view>

3.3 条件渲染

<component wx:if="{{condition}}">

...

</component>



<component wx:if="{{condition}}">

...

</component>

<component wx:else>

...

</component>



<component wx:if="{{condition}}">

...

</component>

<component wx:elif="{{condition}}">

...

</component>

...

<component wx:else>

...

</component>

示例代码如下:

<!--page.wxml-->

<view wx:if="{{week == 0 || week == 6}}">休息</view>

<view wx:else>去上班</view>



<view wx:if="{{week == 0}}">星期日</view>

<view wx:elif="{{week == 1}}">星期一</view>

<view wx:elif="{{week == 2}}">星期二</view>

<view wx:elif="{{week == 3}}">星期三</view>

<view wx:elif="{{week == 4}}">星期四</view>

<view wx:elif="{{week == 5}}">星期五</view>

<view wx:else>星期六</view>
//page.js



Page({

    data:{

    	//表示星期的第几天,0表示星期日,依次类推

        week:0

    }

})

示例代码如下:

<!--page.wxml-->



<view wx:for="{{users}}" wx:for-item="user" wx:key="index">

    <text>

        姓名:{{user.username}}

        性别:{{user.sex ? '男' : '女'}}      

        <block wx:if="{{user.education==1}}">专科</block>

        <block wx:elif="{{user.education==2}}">本科</block>

        <block wx:else>研究生</block>

    </text>

</view>
//page.js

Page({

    data:{

        users:[

            {

                username:'关羽',

                //true表示男,false表示女

                sex:true,

                //1表示专科,2表示本科,3表示研究生,4表示硕士,5表示博士

                education:1

            },

            {

                username:'莫小贝',

                sex:false,

                education:2

            },

            {

                username:'吕秀才',

                sex:true,

                education:3

            },

            {

                username:'刘备',

                sex:true,

                education:3

            }

        ]

    }    

})
```<block></block> ```组件用于保证正常的流程控制语句的使用,但不会出现多余的、无用的节点。