当前位置: 首页 > news >正文

002微信小程序模板与配置

微信小程序模板与配置

  • 1.WXML 模版语法
    • 1.1 数据绑定
    • 1.2事件绑定
    • 1.3 条件渲染
    • 1.4 列表渲染
  • 2. WXSS 模版样式
    • 2.1 WXSS 和 CSS的关系
    • 2.2 rpx
    • 2.3 样式导入
    • 2.4 全局样式和局部样式
  • 3. 全局配置
    • 3.1 Window
    • 3.2 tabBar

1.WXML 模版语法

1.1 数据绑定

  • 数据绑定的基本原则

    • 在data中定义数据
    • 在WXML中使用的数据
  • 在data中定义页面的数据

    • 在页面对应的.js文件中,把数据定义到data对象中即可
    Page({data: {//字符串类型的数据info: 'inti data',//数组类型的数据msgList: [{msg: 'hello'}, {msg: 'world'}]}
    })
    
  • Mustache语法的格式

    • 把data中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量包起来即可
    <!-- 语法格式 -->
    <view>{{要绑定的数据名称}}</view>
    
  • Mustache语法的应用场景

    • 绑定内容
    • 绑定属性
    • 运算(三元运算、算数运算等)
  • 动态绑定内容

    Page({data: {//字符串类型的数据info: 'inti data'}
    })
    
    <view>{{ info }}</view>
    
  • 动态绑定属性

    Page({data: {imgSrc:'路径'}
    })
    
    <image src="{{imgSrc}}"></image>
    
  • 三元运算

    Page({data: {randomNumber: Math.random() * 10 //100以内的随机数}
    })
    
    <view>{{randomNumber >= 5 ? '随机数字大于或等于5' : '随机数小于5'}}</view>
    
  • 算数运算

    Page({data: {randomNumber: Math.random().toFixed(2) //生成一个带两位小数的随机数}
    })
    
    <view>生成100以内的随机数:{{randomNumber * 100}}</view>
    

1.2事件绑定

  • 事件:渲染层到逻辑层的通讯方式。通过时间可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。

在这里插入图片描述

  • 小程序常用的事件
类型绑定方式事件描述
tapbindtap或bind:tap手指触摸后马上离开
inputbindinput或bind:input文本块的输入事件
changebindchange或bind:change状态改变时触发
  • 事件对象的属性列表

    • 当事件回调触发的时候,会收到一个事件对象 event,它的属性为:

      属性类型说明
      typeString事件类型
      timeStampInteger页面打开到触发事件所经过的毫秒数
      targetObject触发事件的组件的一些属性值集合
      currentTargetObject当前组件的一些属性值集合
      detailObject额外信息
      touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组
      changedTouchesArray触摸事件,当前变化的触摸点信息的数组
  • target 和 currentTarget的区别

    • target 是触发该事件的源头组件,而currentTarget是当前事件所绑定的组件。
  • bindtap语法格式

    • 通过bindtap,可以为组件绑定tap触摸事件

      <button type="primary" bindta="btnTapHandler">按钮</button>
      
    • 在页面的.js文件中定义对应的事件处理函数,事件参数通过形参 event(简写 e)来接收:

      Page({binTapHandler(e){ //按钮的 tap 事件处理函数console.log(e) //事件参数对象 e}
      })
      
  • 事件在处理函数中为 data中的数据赋值

    • 通过调用 this.setData(dataObject) 方法,可以给页面 data中的数据重新赋值
    Page({data:{count: 0},//修改 count 的值changeCount(){this.setData({count: this.data.count +1})}
    })
    
  • 事件传参

    • 小程序不能在绑定事件的同时为事件处理函数传递参数

    • 而是使用 data-* 自定义属性传参, * 代表的是参数名字

      <button bidtap="btnHandler" data-info="{{2}}">事件传参</button>
      
    • 通过 event.target.dataset.参数名即可获取到具体参数值

      Page({binTapHandler(event){ //按钮的 tap 事件处理函数//dataset 是一个对象,包含 data-* 传递的参数项console.log(event.target.dataset) //通过 dataset 可以访问到具体参数的值console.log(event.target.dataset.info) }
      })
      
  • bindinput的语法格式

    • 通过bindinput,可以为文本框绑定输入事件:

      <input bindinput="inputHandler"></input>
      
    • .js 文件中定义事件处理函数:

      inputHandler(e){//e.detail.value 是变化过后,文本框最新的值console.log(e.detail.value)
      }
      
  • 文本框和data之间的数据同步

    • 定义数据

      Page({data:{msg: '你好'}
      })
      
    • 渲染结构

      <input value="{msg}" bindinput="iptHandler"></input>
      
    • 美化样式:

      input{/*添加 1 像素宽、实线、颜色为#ee(浅灰色)的边框*/border: 1px solid #eee;/*输入框内部内容与边框之间的距离为 5 像素*/padding: 5px;/*输入框与其他元素之间的外部间距为 5 像素*/margin: 5px;/*输入框的边框添加圆角效果,半径为3像素*/border-radius: 3px;
      }
      
    • 绑定input事件处理函数

      //文本框内容改变的事件
      iptHandler(e){this.setData({//通过 e.detail.value 获取文本框的最新数值msg: e.detail.valu})
      }
      

1.3 条件渲染

  • wx:if

    • 小程序中,使用 wx:if=“{condition}” 判断是否渲染该代码块

      <view wx:if="{{condition}}">True</view>
      
    • wx:elif 和 wx:else 来天剑 else 判断:

      <view wx:if="{{condition}}">True</view>
      <view wx:elif="{{condition}}">True</view>
      <view wx:else="{{condition}}">True</view>
      
  • 结合<block>使用 wx:if

    • 要一次性控制多个组件的展示与隐藏,可以使用一个 <block></block>标签将多个组件包装起来,在 <block>标签上使用 wx:if 控制属性

    • <block>不是一个组件,只是一个包裹性的容器,不会在页面中做任何渲染

      <block wx:if="{{condition}}"><view> view1 </view><view> view2 </view>
      </block>
      
  • hidden:在小程序中,直接使用 hidden=“{{condition}}” 也可以控制元素的显示与隐藏

    <vilew hidden="{{condition}}">条件为 true 隐藏,为false 显示</vilew>
    
  • wx:if 与 hidden 的对比

    • 运行方式不同
      • wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏
      • hidden以切换样式的方法(display:none/block;),控制元素的显示与隐藏
    • 使用建议
      • 频繁切换,用 hidden
      • 控制条件复杂,使用 wx:if 搭配 wx:elif、wx:else 进行展示与隐藏的切换

1.4 列表渲染

  • wx:for:通过wx:for可以根据指定的数组,循环渲染重复的组件结构

    • 默认的索引和当前循环项用, index与item
    <view wx:for="{{array}}">索引是:{{index}} 当前项是:{{item}}
    </view>
    
  • 手动指定索引与当前项的变量名*

    • 使用 wx:for-index 指定当前索引项的索引的变量名

    • 使用 wx:for-item 指定当前项的变量名

      <view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">索引是:{{idx}} 当前项是:{{itemName}}
      </view>
      
  • wx:key 的使用

    • 小程序在实现列表渲染时,为渲染出来的列表指定唯一的key值,从而提高渲染的效率

      //data数据
      data:{userList:[{id: 1, name: '小红'},{id: 2, name: '小黄'},{id: 3, name: '小白'}]
      }
      
      //wxml 结构
      <view wx:for="{{userList}}" wx:key="id">{{item.name}}</view>
      

2. WXSS 模版样式

​ WXSS(WeiXin StyleSheets)是一套样式语言,用于美化WXML的组件样式。

2.1 WXSS 和 CSS的关系

​ WXXSS具有CSS大部分特性(通用的选择器,通用的样式规则),同时还进行了扩充以及修

  • rpx 尺寸单位
  • @import样式导入

2.2 rpx

  • rpx 尺寸单位
    • rpx(responsive pixel):用来解决屏适配的尺寸单位
  • rpx的实现
    • rpx把所有设备的屏幕,在宽度上等分为 750 份
  • rpx 与 px 之间的单位换算
    • 在iPhone6上,屏幕宽度为 375px,共有 750个物理像素,等分为 750rpx
      • 750rpx = 375px = 750 物理像素
      • 1rpx = 0.5px = 1 物理像素

2.3 样式导入

​ 使用 WXSS提供的@import语法,可以导入外联的样式表

  • @import的语法格式: @import后跟需要导入的外联式表的相对路径,用 ; 表示语句结束。

    @improt "路径";
    .middle-p{padding:15px;
    }
    

2.4 全局样式和局部样式

  • 全局样式:定义在 app.wxss 中的样式为 全局样式,作用于每一个页面。

  • 局部样式:在页面的 .wxss文件中定义的样式为 局部样式,只作用与当前页面

    • 当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式
    • 当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局样式

3. 全局配置

小程序跟目录下的app.json文件是小程序的全局配置文件。常用的配置项:

  • pages:记录当前小程序所有页面的存放路径
  • window:全局设置小程序窗口的外观
  • tabBar:设置小程序底部的 tabBar效果
  • style:是否用新版的组件样式

3.1 Window

在这里插入图片描述

  • window 节点常用的配置项

    属性名类型默认值说明
    navigationBarTitleTextString字符串导航栏标题文字内容
    navigationBarBackgroundColorHexColor#000000导航栏背景颜色
    navigationBarTextStyleStringwhile导航栏标题颜色,仅支持 black/while
    backgroundColorHexColor#ffffff窗口的背景颜色
    backgroundColorStringdark下来 loading的样式,仅支持 dark/light
    enablePullDownRefreshBooleanfalse是否全局开启下来刷新
    onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离,单位为 px
  • 导航栏的标题

    • 步骤:app.json => window => navigationBarTitleText
  • 导航栏的背景色:

    • 步骤:app.json => window => navigationBarBackgroundColor
  • 导航栏的标题颜色

    • 步骤:app.json => window => navigationBarTextStyle
  • 全局开启下拉刷新功能:下拉刷新时移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重写加载页面数据的行为。

    • 步骤:app.json => window => enablePullDownRefresh 的值设置为 true
  • 下拉刷新时窗口的背景色

    • 步骤:app.json => window => backgroundColor 指定 16进制的颜色值
  • 下拉刷新时 loading 的样式:当全局开启下拉刷新功能之后,默认窗口的 loading样式为白色

    • 步骤:app.json => window => backgroundTextStyle 指定 dark 值
  • 上拉触底的距离:是移动端的专有名词,通过手指在屏幕上的上啦滑动操作,从而加载更多数据的行为,默认距离为 50px

    • 步骤:app.json => window => onReachBottomDistance 设置新的数组

3.2 tabBar

​ tabBar是移动端应用常见的页面效果,用于使用多页面的快速切换。小程序通常将其分为:底部 tabBar 顶部 tabBar;tabBar只能配置最少 2 个、最多5个tab页签,当渲染顶部 tabBar是,不延时 icon,只显示文本

tabBar的6个组成部分:

  • backgroundColor:tabBar 的背景色
  • selectedIconPath:选中时的图片路径
  • borderStyle:tabBar 上边框的颜色
  • iconPath:未选中时的图片路径
  • selectedColor:tab上的文字选中时的颜色
  • color:tab上文字的默认(未选中)颜色

在这里插入图片描述

tabBar 节点的配置项:

属性类型必填默认值描述
positionStringbottomtabBar的位置,仅支持 bottom/top
borderStyleStringblacktabBar上边框的颜色,仅支持 black/white
colorHexColortab上文字的默认(未选中)颜色
selectedColorHexColortab上的文字选中时的颜色
backgroundColorHexColortabBar的背景色
listArraytab页面的列表,最少2个,最多5个tab

tab项的配置选项:

属性类型必填描述
pagePathString页面路径,页面必须在pages中预先定义
textStringtab上显示的文字
iconPathString未选中时的图标路径;当postion为top时,不显示 icon
selectedIconPathString选中时的图标路径;当postion为top时,不显示 Icon
http://www.lryc.cn/news/570965.html

相关文章:

  • 国开电大 管理心理学 形考任务1-4
  • 电阻篇---上拉电阻
  • 解决安装程序无法初始化。请下载Adobe
  • 设置hosts文件,屏蔽百度和谷歌的网页广告。
  • 内含干货PPT下载|一站式数据管理DMS关键技术解读
  • 地质地貌卫星影像集锦(一 典型地貌篇)
  • 经典DOS怀旧游戏-《炎龙骑士团》系列
  • 《Java编程思想》读书笔记:第十二章
  • ABAP 格式与JSON和XML格式互转
  • 微信小程序—跳一跳,Android游戏助手(外挂)使用教程,【吐血整理】
  • 大学英语六级听力——016(American and European cultural courses)
  • C/C++编程工具及实用小软件推荐
  • 流媒体下载软件Streambox VCR
  • 雅慧教你ASP+ACCESS数据库网页基本操作
  • python 用正则在response.text中获取<title>标签的内容
  • Windows 8.1 preview 新功能发现(一)
  • ctf训练 ssh私钥泄露
  • 中国信息安全测评中心:从数据全生命周期看数据泄露防护问题
  • 【C++ Primer Plus学习记录】字符串——C++ string类
  • 机器学习笔记(5)——SMO优化算法(实现SVM)
  • 【模拟 贪心】B4207 [常州市赛 2021] 战士|普及+
  • 麻雀要革命2 第19节:风马牛不相及
  • 关于脉冲功率技术的认识
  • 优化网站设计(二十):使用多个主机来平衡负载
  • 命令模式Command Pattern
  • redis 中 Hash哈希介绍 及常用命令 (附有示例)
  • 目标检测总结:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
  • STC 89C52 单片机引脚对应的功能以及实例讲解
  • 第六章、6.2 ESP32低功耗模式详解:深度睡眠与轻度睡眠实战指南
  • [python爬虫之路day5]:实战之电影天堂2019精选电影爬取