微信小程序学习第2天——模板语法与样式,全局配置与页面配置

news2025/1/6 17:57:20

文章目录

  • 一、WXML模板语法
    • 1、数据绑定
    • 2、事件绑定
    • 3、条件渲染
    • 4、列表渲染
  • 二、WXSS模板样式
    • rpx
    • @import语法导入样式
    • 全局和局部样式
  • 三、全局配置
    • 全局配置文件及常用配置项
    • window
    • tabBar
  • 四、页面配置

一、WXML模板语法

1、数据绑定

数据绑定的原则:①在data中定义数据 ②在WXML中使用数据

// .js文件中data中定义数据
Page({
  data: {
    message:'Hello',
  },
})

// .WXML文件夹中使用数据
<view>{{message}} </view>

Mustache语法(双大括号)应用场景:绑定内容、绑定属性、运算
注意:绑定属性不需要加冒号:eg

<images src="{{imgSrc}}"></images>

2、事件绑定

常用的事件

类型绑定方法事件描述
tapbindtap或bind:tap类似于click事件,手指触摸后马上离开
inputbindinput或bind:input文本框输入事件
changebindchange或bind:change状态改变时触发

当事件回调触发时,会收到一个事件对象event,它包括以下属性

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

target和currentTarget的区别
target是触发该事件的源头组件,而currentTarget是当前事件所绑定的组件。(用冒泡来理解)

《1》调用this.setData(dataObject) 方法可以给页面data中的数据重新赋值

// .WXML文件
<button bindtap="btn">按钮</button>
<text>数值为:{{count}}</text>

// .JS文件
pages({
 data:{
 	count:0
 }
 btn(event){
    this.setData({
    	count:this.data.count + 1
    })
  },
})

《2》使用data-*自定义属性传参
小程序不能在绑定事件的同时为事件处理函数传递参数,需要使用组件提供的data-*自定义属性传参,其中*表示参数的名字

<button bindtap="btn" data-num="{{2}}">按钮</button>

num会被解析为参数的名字,数值2会被解析为参数的值

《3》通过event,target.dataset.参数名即可获取具体参数的值

btn(event){
  console.log(event.target.dataset.num)
},

《4》通过event.detail.value获取input框的最新值

// .WXML
<input type="text" bindinput="ipt"/>

// .js
ipt(e){
  console.log(e.detail.value)
},

《5》案例总结
实现文本框与data之间的数据同步

// .WXML文件
<button bindtap="btn">点击按钮数字+1</button>
<text>数值为:{{num}}</text>
<input type="text" bindinput="ipt" value="{{num}}"/>

// .js文件
Page({
  data: {
    num:0
  },
  btn(){
    this.setData({
      num:this.data.num+1
    })
  },
  ipt(e){
    console.log(e.detail.value)
    this.setData({
      num:e.detail.value
    })
  },
})

在这里插入图片描述

3、条件渲染

使用wx:if="{{condition}}"来判断是否渲染代码,用wx:elifwx:else来添加else判断

// .WXML
<view wx:if="{{sex=='男'}}"></view>
<view wx:elif="{{sex=='女'}}"></view>
<view wx:else>保密</view>

//  .js文件
data: {
 sex:'男'
},

// 运行结果:页面显示男

《1》< blcok>< /block>标签
如果要一次性控制多个组件的展示与隐藏,可以使用一个<block></block>标签将多个组件包装起来,并在
< block> 标签上使用 wx:if 控制属性。
注意: < block> 并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染。
《2》hidden控制显示与隐藏
也可使用hidden="{{ condition }}" 也能控制元素的显示与隐藏

<view hidden="{{true}}">
  也可使用hidden来显示与隐藏.值为true为隐藏
</view>

《3》wx:if 与 hidden 的对比
wx:if为动态创建和移除元素,hidden以切换样式的方式显示与隐藏元素
频繁切换使用hidden,控制条件复杂时使用wx:if搭配wx:elif和wx:else进行展示与隐藏

4、列表渲染

通过wx:for可以根据指定的数组,循环渲染重复的组件结构,索引用 index 表示;当前循环项用 item 表示

// .WXML文件
<view wx:for="{{array}}">
  索引号为{{index}},值为{{item}}
</view>

//  .js文件
data: {
   array:['憨瓜','波妞','德文']
 },

《1》使用wx:key为列表项指定唯一的key值,从而提高渲染的效率
id不用加mustache语法

<view wx:for="{{array}}" wx:key="id">
  索引号为{{index}},值为{{item}}
</view>

二、WXSS模板样式

rpx

rpx(responsive pixel)是微信小程序独有的,用来解决屏适配的尺寸单位
《1》实现原理
rpx把所有设备的屏幕,在宽度上等分为750份,小程序在不同的设备上运行时,会自动把rpx单位的样式换算成对应的像素单位来渲染,从而实现屏幕的适配
eg:在iPhone6上,屏幕宽度为375px,共有750个物理像素,等分为750rpx,则750rpx = 375px = 750物理像素
在开发小程序中,建议使用iPhone6作为视觉稿的标准

@import语法导入样式

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

@import "common.wxss";

全局和局部样式

定义在 app.wxss 中的样式为全局样式,在页面的 .wxss 文件中定义的样式为局部样式,只作用于当前页面。
当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式

三、全局配置

全局配置文件及常用配置项

根目录下的app.json文件是全局配置文件
常见的全局配置项

{
// pages :记录当前小程序所有页面的存放路径
  "pages":[
    "pages/index/index",
    "pages/list/list",
  ],
// window:全局设置小程序窗口的外观
  "window":{
    "navigationBarTitleText": "背心", 
  },
// tabBar:设置小程序底部的tabBar效果
  "tabBar": {
  	"position": "bottom", 
    "borderStyle": "black", 
    "color": "#000000", 
    "selectedColor":"#ccc", 
    "backgroundColor": "#fff", 
    "list": [...]
  },
// style:是否使用新版的组件样式
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

window

window常用的配置项

// window:全局设置小程序窗口的外观
"window":{
  "backgroundTextStyle":"light", // 下拉loading样式,仅支持dark/light
  "navigationBarBackgroundColor": "#fff", // 导航栏背景颜色
  "navigationBarTitleText": "背心", // 导航栏标题文字内容
  "navigationBarTextStyle":"black", // 导航栏标题颜色,仅支持black / white
  "backgroundColor":"#FFFFFF", // 窗口的背景色
  "enablePullDownRefresh": true, // 是否全局开启下拉刷新
  "onReachBottomDistance":"50" // 页面上拉触底事件触发时距页面底部距离,单位为px
},

注意:设置上拉触底的距离,默认距离为50px,如果没有特殊需求,建议使用默认值即可

tabBar

tabBar 是移动端应用常见的页面效果,用于实现多页面 的快速切换

// tabBar:设置小程序底部的tabBar效果
 "tabBar": {
  	"position": "bottom", // tabBar的位置,仅支持bottom/top
    "borderStyle": "black", // tabBar 上边框的颜色,仅支持 black/white
    "color": "#000000", // tab 上文字的默认(未选中)颜色
    "selectedColor":"#ccc", // tab 上的文字选中时的颜色
    "backgroundColor": "#fff", // tabBar 的背景色
    
    "list": [{ // tab 页签的列表,最少2个、最多个 tab
      "pagePath": "pages/home/home", // 页面路径,页面必须在pages中预先定义
      "text": "主页", // tab显示的文字
      "iconPath": "images/tabs/home.png",// 未选中时的图片路径
      "selectedIconPath": "images/tabs/home-active.png"  // 选中时的图片路径
    },{......},{ ......}
    ]
  },

注意:
① tabBar中只能配置最少 2 个、最多5 个tab 页签
② 当渲染顶部 tabBar 时,不显示 icon,只显示文本

四、页面配置

每个页面都有自己的.json配置文件,用来对当前页面的窗口外观、页面效果等进行配置
当页面配置与全局配置冲突时,根据就近原则,最终的效果以页面配置为准
页面配置中常用的配置项与全局window配置项一样

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚信安慧携AntDB数据库入选信通院软件供应链厂商和产品名录

日前&#xff0c;中国信息通讯研究院&#xff08;简称&#xff1a;中国信通院&#xff09;在其主办的3SCON软件供应链安全大会上&#xff0c;发布了软件供应链厂商和产品名录。中国信通院云计算与大数据研究所副所长栗蔚表示&#xff0c;我国软件供应链安全发展面临制度体系待完…

微服务组件(高并发带来的问题 服务器雪崩效应 Sentinel入门)

高并发带来的问题 服务器雪崩效应 Sentinel入门高并发带来的问题模拟高并发服务器雪崩效应常见容错方案Sentinel入门(常见的容错组件)什么是Sentinel?订单服务集成Sentinel流控规则预热流控等待流控关联流控链路流控降级(提供一个兜底方案)慢调用比例异常比例异常数案例高并发…

显著图(Saliency map)

这里写目录标题概念应用算法传统算法静态显著性算法&#xff1a;对数光谱&#xff08;SpectralResidual&#xff09;&#xff1a;静态显著性算法&#xff1a;细粒方法&#xff08;FineGrained&#xff09;&#xff1a;人工智能算法基于眼动仪预测显著性区域方法积分梯度方法对比…

jsp学生宿舍管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 学生宿舍管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;使…

【Vue】Vue的简介和特性

一、Vue简介Vue.js可以说是MVVM架构的最佳实践&#xff0c;是一个JavaScript MVVM库&#xff0c;是一套构建用户界面的渐进式前端框架。专注于MVVM中的ViewModel&#xff0c;不仅做到了数据双向绑定&#xff0c;而且也是一款相对比较轻量级的JS 库&#xff0c;API简洁。1. 构建…

Day 15 SpringBoot Condition

1 Condition作用&#xff1a;该功能可以选择性的创建Bean1.1 验证在Spring的IOC容器中有一个User的 Bean&#xff0c;现要求导入Jedis坐标后&#xff0c;加载该Bean&#xff0c;没导入&#xff0c;则不加载。【第一步】创建User对象Repository Conditional(ClassCondition.clas…

【yolov5系列】yolov5-onnxruntime在Ubuntu和RK芯片上运行

前言 这里yolov5的onnx模型的推理&#xff0c;分别在 x64上 和 移动端上运行&#xff0c;前者在自己本地Ubuntu系统上运行&#xff0c;后者在瑞芯微的rk3566上运行。 要完成如上工作我们需要一下步骤&#xff1a; 1 下载onnxruntime编译好的库2 下载opencv库并安装3 下载交叉编…

88E1548P大流量传输插拔网线导致网络不通

1、测试环境硬件&#xff1a;NXP LS1046A ARM64平台 88E1548P 软件&#xff1a;linux 4.19.26 linux 5.10.35环境说明&#xff1a;88E1548P 是一个QSGMII 的 phy 芯片&#xff0c;LS1046A CPU 提供4个GMAC 与 88E1548P 连接&#xff0c;就是4个千兆网口。2、具体现象eth7发包…

OFDM系统架构梳理(1)

1、ofdm简介OFDM是一种特殊的多载波传输方案&#xff0c;它可以被看作是一种调制技术&#xff0c;也可以被当作一种复用技术。多载波传输把数据流分解成若干子比特流&#xff0c;这样每个子数据流将具有低得多的比特速率&#xff0c;用这样的低比特率形成的低速率多状态符号再去…

Spring Batch 批处理-步骤Step与Tasklet

引言 接着上篇&#xff1a;Spring Batch 批处理-执行上下文&#xff0c;了解作业执行上下文后&#xff0c;本篇就来了解一下Spring Batch批处理步骤Step对象与任务处理对象Tasklet&#xff0c;看下Spring Batch 如何运作的。 步骤介绍 一般认为步骤是一个独立功能组件&#…

密码学大咖DavidWong历经数年创作编写而成的这本书

从我开始写本书到图书出版已经有几年了。最初&#xff0c;我打算将本书作为介绍现实世界常用密码原语的图书。但是&#xff0c;这显然是一件不可能完成的事情。任何一个领域都不可能用一本书来总 结清楚。出于这个原因&#xff0c;我必须在知识的深度和广度之间找到平衡。我希望…

3.6双端口RAM和多模块存储器

文章目录关键词正文一、存取周期二、引子三、双端口RAM四、多体并行存储器&#xff08;1&#xff09;高位交叉编址方式&#xff08;2&#xff09;低位交叉编址方式&#xff08;3&#xff09;编址&#xff08;4&#xff09;特性举例<1> 高位交叉编址<2> 低位交叉编址…

word实用技巧:拼音指南用法及注意事项

如果你是一位语文老师&#xff0c;在为学生准备试卷时&#xff0c;时常会用到Word拼音指南功能&#xff1b;如果你是一位职场白领&#xff0c;在为领导准备发言稿、颁奖名单时&#xff0c;以防领导读错音&#xff0c;也会用到Word拼音指南功能对生僻字&#xff0c;多音字进行单…

RabbitMQ 获取消息(Ack Mode)

在服务器端的客户端页面从队列中获取消息是一个危险的动作&#xff0c;生产环境一定要了解业务之后再做操作。 Act Mode Nack message requeue true 接收消息但不做确认&#xff0c;消息会重新加入队列 Automatic ack 获取消息&#xff0c;应答确认&#xff0c;消息不…

C#,编程语言的基本概念与知识点

本文归纳整理C#的一些知识点&#xff0c;便于快速浏览与掌握C#语言的一些基本概念。本文并没有很好地层次与组织&#xff0c;抄了不少&#xff0c;写了不少&#xff0c;想到什么&#xff0c;就写什么。01 类 class类是C#等面向对象编程语言&#xff08;Object-oriented program…

分享152个ASP源码,总有一款适合您

ASP源码 分享152个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 152个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1fOOs06p6YghEzceqJ4twaA?pwd0p4z 提取码&#x…

Vue-透传Attributes使用解析

透传是vue中一种特性&#xff0c;官方的解释是&#xff1a;“透传 attribute”指的是传递给一个组件&#xff0c;却没有被该组件声明为 props 或 emits 的 attribute 或者 v-on 事件监听器。最常见的例子就是 class、style 和 id。这句话解释过来就是一些不被prop定义的属性直接…

面对层出不穷的问题,延迟开学的原因就是取消延时服务?

面对层出不穷的问题&#xff0c;延迟开学的原因就是取消延时服务&#xff1f; #延迟开学#请问为什么要延迟&#xff1f;疫情期间说要回家可以理解&#xff0c; 这两天都传着说郑州市的中小学、幼儿园推迟开学了&#xff0c;到底有没有这种情况&#xff1f;我们现在又来到了郑…

零基础入行软件测试怎么学习~

随着近几年软件测试行业的异军突起&#xff0c;加之这又是个进入门槛相对较低的行业&#xff0c;导致不少人都想从事这个岗位。那么&#xff0c;许多初学者在一开始都会想知道&#xff0c;零基础入门软件测试要学什么?希望本文可以对大家的软件测试学习之路有一定的指导意义&a…

Vue实现考勤记录删除-自定义右击删除菜单

一、定义和使用oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单。注意&#xff1a;所有浏览器都支持 oncontextmenu 事件&#xff0c; contextmenu 元素只有 Firefox 浏览器支持。二、语法HTML 中:<element oncontextmenu"myScript">JavaScript…