美文网首页
微信小程序____视图层 View

微信小程序____视图层 View

作者: OzanShareing | 来源:发表于2018-12-31 11:41 被阅读0次

    引言

    框架的视图层由 WXMLWXSS 编写,由组件来进行展示。

    将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。

    WXML(WeiXin Markup language) 用于描述页面的结构。

    WXS(WeiXin Script) 是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。

    WXSS(WeiXin Style Sheet) 用于描述页面的样式。

    组件(Component)是视图的基本组成单元。


    一、WXML

    WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件事件系统,可以构建出页面的结构。

    用以下一些简单的例子来看看 WXML 具有什么能力:

    数据绑定

    <!--wxml-->
    <view>{{message}}</view>
    
    // page.js
    Page({
      data: {
        message: 'Hello MINA!'
      }
    })
    
    

    列表渲染

    <!--wxml-->
    <view wx:for="{{array}}">{{item}}</view>
    
    
    // page.js
    Page({
      data: {
        array: [1, 2, 3, 4, 5]
      }
    })
    
    

    条件渲染

    <!--wxml-->
    <view wx:if="{{view == 'WEBVIEW'}}">WEBVIEW</view>
    <view wx:elif="{{view == 'APP'}}">APP</view>
    <view wx:else="{{view == 'MINA'}}">MINA</view>
    
    
    // page.js
    Page({
      data: {
        view: 'MINA'
      }
    })
    
    

    模板

    <!--wxml-->
    <template name="staffName">
      <view>FirstName: {{firstName}}, LastName: {{lastName}}</view>
    </template>
    
    <template is="staffName" data="{{...staffA}}"></template>
    <template is="staffName" data="{{...staffB}}"></template>
    <template is="staffName" data="{{...staffC}}"></template>
    
    
    // page.js
    Page({
      data: {
        staffA: {firstName: 'Hulk', lastName: 'Hu'},
        staffB: {firstName: 'Shang', lastName: 'You'},
        staffC: {firstName: 'Gideon', lastName: 'Lin'}
      }
    })
    
    

    事件

    <view bindtap="add">{{count}}</view>
    
    
    Page({
      data: {
        count: 1
      },
      add(e) {
        this.setData({
          count: this.data.count + 1
        })
      }
    })
    
    

    具体的能力以及使用方式在以下章节查看:

    数据绑定列表渲染条件渲染模板事件引用

    WXSS


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

    WXSS 用来决定 WXML 的组件应该怎么显示。

    为了适应广大的前端开发者,WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSSCSS进行了扩充以及修改。

    与 CSS 相比,WXSS 扩展的特性有:

    • 尺寸单位
    • 样式导入

    尺寸单位

    rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素1rpx = 0.5px = 1物理像素

    设备 rpx换算px (屏幕宽度/750) px换算rpx (750/屏幕宽度)
    iPhone5 1rpx = 0.42px 1px = 2.34rpx
    iPhone6 1rpx = 0.5px 1px = 2rpx
    iPhone6 Plus 1rpx = 0.552px 1px = 1.81rpx

    建议: 开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准。

    注意: 在较小的屏幕上不可避免的会有一些毛刺,请在开发时尽量避免这种情况。

    样式导入

    使用@import语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束。

    示例代码:

    /** common.wxss **/
    .small-p {
      padding:5px;
    }
    
    /** app.wxss **/
    @import "common.wxss";
    .middle-p {
      padding:15px;
    }
    

    内联样式

    框架组件上支持使用 styleclass 属性来控制组件的样式。

    style:静态的样式统一写到 class 中。style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style中,以免影响渲染速度。

    <view style="color:{{color}};" />
    

    class:用于指定样式规则,其属性值是样式规则中类选择器名(样式类名)的集合,样式类名不需要带上.样式类名之间用空格分隔

    <view class="normal_view" />
    

    选择器

    目前支持的选择器有:

    选择器 样例 样例描述
    .class .intro 选择所有拥有 class="intro" 的组件
    #id #firstname 选择拥有 id="firstname" 的组件
    element view 选择所有 view 组件
    element, element view, checkbox 选择所有文档的 view 组件和所有的 checkbox 组件
    ::after view::after 在 view 组件后边插入内容
    ::before view::before 在 view 组件前边插入内容

    全局样式与局部样式

    定义在 app.wxss 中的样式为全局样式,作用于每一个页面。在 pagewxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。

    二、基础组件

    框架为开发者提供了一系列基础组件,开发者可以通过组合这些基础组件进行快速开发。详细介绍请参考组件文档

    什么是组件:

    • 组件是视图层的基本组成单元。
    • 组件自带一些功能与微信风格一致的样式。
    • 一个组件通常包括 开始标签结束标签属性 用来修饰这个组件,内容 在两个标签之内。
    <tagname property="value">Content goes here ...</tagname>
    

    注意:所有组件与属性都是小写,以连字符-连接

    属性类型

    类型 描述 注解
    Boolean 布尔值 组件写上该属性,不管是什么值都被当作 true;只有组件上没有该属性时,属性值才为false。如果属性值为变量,变量的值会被转换为Boolean类型
    Number 数字 1, 2.5
    String 字符串 "string"
    Array 数组 [ 1, "string" ]
    Object 对象 { key: value }
    EventHandler 事件处理函数名 "handlerName"Page 中定义的事件处理函数名
    Any 任意属性

    公共属性

    所有组件都有以下属性:

    属性名 类型 描述 注解
    id String 组件的唯一标示 保持整个页面唯一
    class String 组件的样式类 在对应的 WXSS 中定义的样式类
    style String 组件的内联样式 可以动态设置的内联样式
    hidden Boolean 组件是否显示 所有组件默认显示
    data-* Any 自定义属性 组件上触发的事件时,会发送给事件处理函数
    bind* / catch* EventHandler 组件的事件 详见事件

    特殊属性

    几乎所有组件都有各自定义的属性,可以对该组件的功能或样式进行修饰,请参考各个组件的定义。

    相关文章

      网友评论

          本文标题:微信小程序____视图层 View

          本文链接:https://www.haomeiwen.com/subject/bcublqtx.html