微信小程序wxml和wxss样式

本文介绍微信小程序界面设计的基础知识,包括wxml布局组件与wxss样式设置。详细讲解了八大类基础组件的功能与应用场景,同时提供了wxss常用样式属性的说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于css不熟悉的android程序员来说,开发微信小程序面临的一个比较困难的问题就是界面的排版了。微信小程序的排版就跟wxml和wxss有关了,它们两者相当于android的布局文件,其中wxml指定了界面的框架结构,而wxss指定了界面的框架及元素的显示样式。

一、wxml

界面结构wxmL比较容易理解,主要是由八大类基础组件构成:

一、视图容器(View Container):二、基础内容(Basic Content)
组件名说明组件名说明
view视图容器icon 图标
scroll-view可滚动视图容器text文字
swiper可滑动的视图容器progress进度条
三、表单组件(Form)四、操作反馈组件(Interaction)
组件名说明组件名说明
button按钮action-sheet上拉菜单
form表单modal模态弹窗
input输入框progress进度条
checkbox多项选择器toast短通知
radio单项选择器五、导航(Navigation)
picker列表选择器组件名说明
slider滑动选择器navigator应用内跳转
switch开关选择器
label标签
六、多媒体(Media)七、地图(Map)
组件名说明组件名说明
audio音频map地图
image图片
video视频
八、画布(Canvas)
组件名说明
canvas画布

关于这八大类的属性和具体用法可参考以下参考文献链接:

http://www.w3cschool.cn/weixinapp/itz51q8o.html

https://mp.weixin.qq.com/debug/wxadoc/dev/component/

二、wxss

wxml理解起来容易,但光搭好了框架,并不能达到我们想要的界面效果,这就需要用到wxss样式了。

wxss样式决定了组件应该如何显示,并在css的基础上做了一些功能扩展,主要包括:

1.尺寸单位

rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。一般以iphone6屏幕做为视觉设计标准。

rpx 与 px单位换算如下:

设备rpx换算px (屏幕宽度/750)px换算rpx (750/屏幕宽度)
iPhone51rpx = 0.42px1px = 2.34rpx
iPhone61rpx = 0.5px1px = 2rpx
iPhone6s1rpx = 0.552px1px = 1.81rpx


2.样式导入

可以使用@import语句来导入外联样式表,其后面跟需要导入外联样式表的相对路径,并以分号结束。

例如:

/** other.wxss **/

.appText{

  margin:10px;

}

/** app.wxss **/

@import "other.wxss";

.content_text:{

  margin:15px;

}

app.wxss是全局样式,作用于每一个页面,而page下的每一个的wxss文件只作用于当前页面,并对全局样式中的相同属性会覆盖。


对于微信小程序wxss样式的使用来说,其实大部分都和css样式一致,下面简单的进行介绍一下:

wxss样式属性
一、wxss display(显示)
属性说明
flex多栏多列布局flex-direction:row/column
inline-block行内块元素
inline此元素会被显示为内联元素,元素前后没有换行符
inline-table作为内联表格来显示(类似 <table>),表格前后没有换行符
inline-flex将对象作为内联块级弹性伸缩盒显示
none此元素不会被显示
block此元素将显示为块级元素,此元素前后会带有换行符
list-item此元素会作为列表显示
table会作为块级表格来显示(类似 <table>),表格前后带有换行符
table-caption作为一个表格标题显示(类似 <caption>)
table-cell作为一个表格单元格显示(类似 <td> 和 <th>)
table-column作为一个单元格列显示(类似 <col>)
table-column-group作为一个或多个列的分组来显示(类似 <colgroup>)
table-row作为一个表格行显示(类似 <tr>)
table-row-group作为一个或多个行的分组来显示(类似 <tbody>)
table-header-group作为一个或多个行的分组来显示(类似 <thead>)
table-footer-group作为一个或多个行的分组来显示(类似 <tfoot>)
inherit从父元素继承 display 属性的值
flex:多栏多列布局 http://www.360doc.com/content/14/0811/01/2633_400926000.shtml

二、wxss position(定位)
属性说明
absolute生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
relative生成相对定位的元素,相对于其正常位置进行定位。
因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
fixed生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)
inherit规定应该从父元素继承 position 属性的值

三、wxss float(浮动)
属性说明
left元素向左浮动
right元素向右浮动
none默认值元素不浮动,并会显示在其在文本中出现的位置。
inherit规定应该从父元素继承 float 属性的值。

四、wxss background(背景)
属性说明语法(属性值)
background简写属性,作用是将背景属性设置在一个声明中background: color position size repeat origin clip attachment image;
background-color指定要使用的背景颜色
background-position指定背景图像的位置background-position:center
background-size 指定背景图片的大小background-size:80px 60px;宽度 高度
background-repeat指定如何重复背景图像repeat,repeat-x,repeat-y,no-repeat,inherit
background-origin指定背景图像的定位区域padding-box 背景图像填充框的相对位置
border-box 背景图像边界框的相对位置
content-box 背景图像的相对位置的内容框
background-clip指定背景图像的绘画区域属性值,同上
background-attachment设置背景图像是否固定或者随着页面的其余部分滚动。scroll 背景图片随页面的其余部分滚动。这是默认
fixed 背景图像是固定的
inherit 指定background-attachment的设置应该从父元素继承
local 背景图片随滚动元素滚动
background-image指定要使用的一个或多个背景图像url('URL') 图像的URL
none 无图像背景会显示。这是默认
inherit 指定背景图像应该从父元素继承

五、wxss border(边框)
属性说明语法(属性值)
border简写属性,用于把针对四个边的属性设置在一个声明border:5px solid red;
border-width用于为元素的所有边框设置宽度,或者单独地为各边边框设置宽度border-top-width 上右下左边框厚度 属性值:thin medium thick length
border-style设置元素所有边框的样式,或者单独地为各边设置边框样式。border-top-width 上右下左边框样式 属性值:solid,dashed,dotted,double等
border-color元素的所有边框中可见部分的颜色,或为 4 个边分别设置颜色border-top-width 上右下左边框颜色

六、xss 轮廓(outline)
属性说明语法(属性值)
outline在一个声明中设置所有的外边框属性outline: outline-color, outline-style, outline-width
outline-color设置外边框的颜色
outline-style设置外边框的样式。属性值:solid,dashed,dotted,double等
outline-width设置外边框的宽度属性值:thin medium thick length

七、xss 文本属性(text)
属性说明语法(属性值)
color设置文本颜色
direction设置文本方向。ltr:文本方向从左到右;rtl:文本方向从右到左
letter-spacing设置字符间距
line-height设置行高
text-align对齐元素中的文本left:把文本排列到左边。默认值,由浏览器决定。
right:把文本排列到右边。
center:把文本排列到中间。
justify:实现两端对齐文本效果。
inherit: 规定应该从父元素继承 text-align 属性的值。
text-decoration向文本添加修饰underline 定义文本下的一条线。
overline 定义文本上的一条线。
line-through 定义穿过文本下的一条线。
blink 定义闪烁的文本。
text-indent缩进元素中文本的首行
text-shadow设置文本阴影text-shadow: h-shadow v-shadow blur color;
h-shadow:水平阴影的位置,允许负值;
v-shadow:垂直阴影的位置,允许负值;
blur:模糊的距离;
color:阴影的颜色
text-transform控制元素中的字母capitalize 文本中的每个单词以大写字母开头。
uppercase 定义仅有大写字母。
lowercase 定义无大写字母,仅有小写字母。
unicode-bidi设置或返回文本是否被重写 
vertical-align设置元素的垂直对齐
white-space设置元素中空白的处理方式
word-spacing设置字间距

八、xss 字体属性(font)
属性说明语法(属性值)
font在一个声明中设置所有字体属性font:font-style font-variant font-weight font-size/line-height font-family(按顺序)
font-style指定文本的字体样式normal 默认值。浏览器显示一个标准的字体样式。
italic 浏览器会显示一个斜体的字体样式。
oblique 浏览器会显示一个倾斜的字体样式。
inherit 规定应该从父元素继承字体样式。
font-variant以小型大写字体或者正常字体显示文本normal 默认值。浏览器会显示一个标准的字体。
small-caps 浏览器会显示小型大写字母的字体。
inherit 规定应该从父元素继承 font-variant 属性的值。
font-weight指定字体的粗细normal 默认值。定义标准的字符。
bold 定义粗体字符。
bolder 定义更粗的字符。
lighter 定义更细的字符。
inherit 规定应该从父元素继承字体的粗细。
font-size指定文本的字体大小smaller 把 font-size 设置为比父元素更小的尺寸。
larger 把 font-size 设置为比父元素更大的尺寸。
length 把 font-size 设置为一个固定的值。
% 把 font-size 设置为基于父元素的一个百分比值。
font-family指定文本的字体系列

九、xss margin(外边距)(margin)
属性说明语法(属性值)
margin在一个声明中设置所有外边距属性。margin:10px 5px 15px 20px;(上边距,右边距,下边距,左边距)
margin-top设置元素的上外边距。
margin-right设置元素的右外边距。
margin-bottom设置元素的下外边距。
margin-left设置元素的左外边距

十、xss padding(填充)(padding)
属性说明语法(属性值)
padding使用缩写属性设置在一个声明中的所有填充属性padding:10px 5px 15px 20px;(上填充,右填充,下填充,左填充)
padding-top设置元素的顶部填充。
padding-right设置元素的右部填充
padding-bottom设置元素的底部填充
padding-left设置元素的左部填充

十一、xss 选择器
选择器样例样例描述
.class(类选择器).intro选择所有拥有class="intro"的组件
#id(id选择器)#firstname选择拥有id="firstname"的组件
elementview选择所有view组件
element, elementview checkbox选择所有文档的view组件和所有的checkbox组件
::afterview::after在view组件后边插入内容
::beforeview::before在view组件前边插入内容

有一些属性值太多且实际应用的比较少 可以参考w3cschool的css文档:

http://www.w3cschool.cn/css/css-tutorial.html

对于微信小程序的文档手册可参考以下链接:

http://www.w3cschool.cn/weixinapp/9wou1q8j.html








### WXSS 样式手册与完整列表 #### 什么是 WXSSWXSS微信小程序中的样式语言,类似于 CSS,用于描述小程序界面的外观布局。它支持大部分标准 CSS 的语法,并在此基础上进行了扩展[^1]。 --- #### WXSS 支持的选择器 WXSS 提供了丰富的选择器来满足不同的需求,以下是常见的选择器及其功能: - **类选择器**:通过 `.class` 来指定特定类别的样式。 - **ID 选择器**:通过 `#id` 来唯一标识某个元素并为其设置样式。 - **标签选择器**:直接使用 HTML 或 WXML 中的标签名称作为选择器。 - **属性选择器**:例如 `[type="submit"]` 可以针对具有特定属性的元素应用样式。 - **后代选择器**:如 `.parent .child` 表示父级内的子级元素会继承该样式。 - **伪类选择器**:如 `:hover`, `:active` 等可以动态改变交互状态下的表现形式。 这些选择器使得开发者能够更加灵活地控制页面上的每一个细节。 --- #### WXSS 的优先级规则 当多个样式作用于同一个元素时,遵循以下优先级顺序(从低到高): 1. 浏览器默认样式; 2. 外部样式表(即全局 app.wxss 文件中定义的内容); 3. 页面内部局部样式(page.wxss 文件里的声明覆盖前者); 4. 内联样式(直接写在 wxml 属性 style="" 上面的部分拥有最高权值)。 注意,在实际编码过程中应尽量减少冲突情况的发生以免增加调试难度。 --- #### 尺寸单位 rpx 为了适应不同屏幕分辨率设备之间的差异问题,微信团队引入了一种新的相对长度单位——rpx (responsive pixel),其含义是在 iPhone6 设备上每像素等于真实物理像素点数除以750的结果。因此如果某宽度设定为375rpx,则对应iPhone6屏幕上正好占据一半区域大小;而对于其他型号手机则自动调整至最接近比例呈现效果最佳视觉体验。 ```css /* 示例 */ .container { width: 750rpx; height: 100vh; /* 使用 vh 单位也可以实现响应式设计 */ } ``` --- #### 常见组件样式举例 根据官方文档提供的基础内容组件列表[^5],下面列举几个常用控件对应的典型样式配置方法: ##### Text 文字显示 ```html <text class="title">标题</text> ``` ```css .title { font-size: 48rpx; color: #ff5722; text-align: center; } ``` ##### Button 按钮点击反馈 ```html <button class="btn-primary">提交</button> ``` ```css .btn-primary { background-color: #00aaff; border-radius: 10rpx; padding: 20rpx 40rpx; } .btn-primary:hover { opacity: 0.8; } ``` ##### ScrollView 滚动视图 ```html <scroll-view scroll-y class="list"> <!-- 列表项 --> </scroll-view> ``` ```css .list { max-height: 500rpx; overflow-y: auto; } ``` --- #### 微信小程序项目结构概述 了解如何组织代码对于有效利用 WXSS 至关重要。通常情况下,一个完整的微信小程序由以下几个部分构成[^2]: - 全局配置文件 (`app.json`) 样式表(`app.wxss`); - 各个独立页面目录下分别包含 json, wxml, wxss以及 js 四种类型文件用来管理各自特有的逻辑行为及UI展示特性. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值