![微信小程序开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/512/30918512/b_30918512.jpg)
2.3 装裱与布局——WXSS基础
使用JavaScript可以进行界面数据和交互逻辑的处理,使用WXML可以进行页面结构的搭建,使用WXSS可以进行页面布局和样式的细化调整。WXSS是专供小程序使用的一套样式表语言,与网页开发中的CSS语法基本一致,只是针对小程序做了一些补充和修改。
2.3.1 WXSS与CSS
对于编写CSS代码来说,最重要的是掌握选择器的用法及熟悉样式属性的用法。WXSS与CSS的选择器和属性基本一致,相较于CSS,WXSS优化了尺寸单位,新增了样式导入。
关于尺寸,WXSS除支持CSS定义的全部尺寸单位外,还额外定义了一个自适应像素单位(rpx),可使用的尺寸单位如表2-5所示。
表2-5 可使用的尺寸单位
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/55_1.jpg?sign=1739362737-T1vGM4ypX0oEdZgSZvaI2Y9qPkAIzI97-0-07f03d4b3f676e473325221892d5df3e)
通过表2-5列举的尺寸单位可以精准地控制组件的渲染尺寸,如修改index.wxml代码,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/55_2.jpg?sign=1739362737-vv6RjpJd5QNjafZMY2B9Hy1XvD1hgake-0-54a91100cf95df260ca4ee3fc972cc9f)
在index.wxss中编写样式,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/55_3.jpg?sign=1739362737-XNR2NyzRVo7KfT58ANaCn4Z8DihfuM1U-0-21fa3a6577f11c4b5b9112e2ca175587)
运行代码,效果如图2-8所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/55_4.jpg?sign=1739362737-JFTT4pHfQBoPr2QhlZE9zT30QsfToA3W-0-f8ab30372bc9cc416877f4c0df907109)
图2-8 定义组件尺寸
上面的display属性设置组件的展示模式,默认text组件为行内元素,将其更改为块级元素使尺寸设置生效。
关于样式表的导入其实非常简单,组件的导入也一样,我们可以将一些通过的样式定义在公共样式表文件中,在需要使用的页面进行导入即可。例如,在common文件夹下,新建一个命名为common.wxss的文件,编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_1.jpg?sign=1739362737-UCLx7DGSsS8Qh34D8FVoV0YX1xb4lL2k-0-91cea7375a3a6ffdad52a428ef25509a)
在index.wxss中直接进行引用即可,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_2.jpg?sign=1739362737-JYbpYigvuqZz7XFkGKFIJxS92PRsPAWF-0-dedb5a923eafa944be2df60cbb8c9566)
在引用时需要注意路径的正确性。
2.3.2 WXSS选择器
选择器的作用是匹配文档中的元素,最简单的选择器是元素选择器,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_3.jpg?sign=1739362737-Xkv1yCEWa1qAc3678rZpEYXagT44hTZa-0-6124c09ecbef68db1c7cd6705859becf)
上面WXSS代码设置页面中所有text组件文字颜色为绿色。在选择元素时,也可以进行组合选择,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_4.jpg?sign=1739362737-sWXjbwuxk9ca1h6QlOWQWi9299ht8NGb-0-da6b53fc348a85d7028b7f29531471f3)
上面的代码设置页面中所有text组件和button组件的文本颜色为绿色。
类选择器会匹配元素的class属性,如下面的text组件设置其class属性为label:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_5.jpg?sign=1739362737-0pGEkbvmFLqQcEmYuRuADL5kWBgiUmWh-0-288fc87fc8ea1de629957b760a1b344d)
使用符号“.”加上class名可以选中这个元素,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_6.jpg?sign=1739362737-u7qDvrKZOWH9fdMH20o9h0ZxyCGq5bB4-0-ee3831173081dec277bfccb8077a4fb0)
id选择器会匹配元素的id属性,如下面的text组件设置其id属性为label:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_7.jpg?sign=1739362737-XKCSYHe7WRN6X8q5fwe8NbuhSSYtBP7V-0-3c7fd63c8c0d9208e1f7b78a6533feb0)
使用符号“#”加上id名可以选中这个元素,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_8.jpg?sign=1739362737-vGrbdSV0O6BE5QCINlK4UQttvfObWMXf-0-a06e4df7c6b6e868c29485b511e45492)
也可以通过标签的任意一个属性选中元素,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_9.jpg?sign=1739362737-ZQUO4LJzvgwiQsHgwVCfcFU4ASsTfNCi-0-074a004cff4fe92179e43caeeb97f468)
上述代码的作用是选中所有设置id属性值的元素,也可以根据属性值进行精准选择,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_1.jpg?sign=1739362737-BkHIrlONUxik8anDJgaKnwb7z6V6czC9-0-f68c354177a2f17f8a6369566441c22e)
后代选择器可以精准地选中某个父标签下的子标签,修改index.wxml文件,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_2.jpg?sign=1739362737-Lnydd3bx82ujeDAzx56Ugf49UfA8EOhv-0-ce917862fa2e5f3a30ec13e6968040f5)
上面的代码创建了两个text标签,其中一个包裹在view标签内,要选中它,可以使用后代选择器,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_3.jpg?sign=1739362737-e8V6FchpZJavEmQMEYydSZK0dNhKhERR-0-2974f19092c33db06befbec77534c64f)
与后代选择器对应的还有子选择器,后代选择器会选中父标签内所有的指定元素,无论层级结构如何;而子选择器只会选择父标签中的子元素,子元素的子元素不会被选择。示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_4.jpg?sign=1739362737-7BaU7gIYSxG6HR0YgNng4fEX411mXnKH-0-289a3820542d8e4f834d8585817ed9b2)
兄弟选择器用在同级元素的选择中,修改index.wxml文件,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_5.jpg?sign=1739362737-hrLOHpsArB4k8hLw9uiJbhSFM8Sf1NLW-0-229642f73e0e0edc4deb151701f31eb6)
使用如下选择器可以选中紧跟view组件后面的text组件元素:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_6.jpg?sign=1739362737-xoi95orbJQwC5ZTncT4k5Jqg2CDx1mNB-0-69cdd49704a0e4f89d4fa26fffc52ab8)
2.3.3 WXSS背景相关属性
WXSS中提供了许多背景属性,开发者可以对组件的背景进行自定义。常用背景设置相关属性如表2-6所示。
表2-6 常用背景设置相关属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/58_1.jpg?sign=1739362737-xyrwf1ULQE55rvG4jg4Pa3KJHW4FJ16D-0-a7f264a990424ab2d69c91f2a549a020)
2.3.4 WXSS文本相关属性
文本相关属性用来对元素中的文字进行设置,其可以对文字的字体、字号、颜色、对齐方式、缩进等属性进行配置。文本相关属性如表2-7所示。
表2-7 文本相关属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/58_2.jpg?sign=1739362737-MPIasvlJbgH16jmOgIDXpw1qN4a8PKor-0-f8db51c66596630ebb745d5ed2be177f)
2.3.5 WXSS边距与边框相关属性
边距用来控制组件与组件之间、组件与组件内部子组件之间的布局效果。边框相关属性用来设置组件的边界显示效果,如表2-8所示。
表2-8 边框相关属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/59_2.jpg?sign=1739362737-Fj0eCjhVQsb9p7JPiTcBJrLdXXMbiemV-0-b8705f01a24f89b6e95d0e7bacd0a7a2)
续表
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/60_1.jpg?sign=1739362737-yhK3xzFWc5gQjoWIw3fmDVp9IQuI6QHa-0-a2cef36fe48382d7af448e532d28622b)
2.3.6 WXSS元素定位相关属性
在默认情况下,小程序的页面布局和网页一样,是从上到下流式布局的。与CSS不同的是,WXSS提供了一套弹性盒的布局方式,关于弹性盒布局,后面在介绍小程序页面布局技术时会详细介绍,本节仅列举设置元素显示和元素定位方式的相关属性,如表2-9所示。
表2-9 设置元素显示和元素定位方式的相关属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/61_1.jpg?sign=1739362737-DBtKP15ohokmiBpzW32Q0Iwso2oac433-0-92c591257a697c8f76cff0ef4eb14eba)
相对定位可以使元素相对于其当前位置进行调整,通过设置left、right、top、bottom属性分别进行左、右、上、下的调整,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/61_2.jpg?sign=1739362737-mvrWdCH0dl4d1My8v3gPulKnqMW118du-0-824020276dab18ed2713eafe897a439f)
运行代码,效果如图2-9所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/62_1.jpg?sign=1739362737-CoMMhDfLS3tJTgFAPSeH0ricwpKyYyXy-0-5fb35f3e48e4f408bc7d82e2554c956e)
图2-9 进行相对定位
fixed绝对定位相对于页面窗口进行定位,不会占据流式布局的空间,使用它可以将组件固定在页面窗口的某个位置,并且不会随页面的滚动而滚动。通过设置left、right、top、bottom属性分别进行相对页面窗口左、右、上、下距离的调整,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/61_3.jpg?sign=1739362737-gjOFc97qtdHwfVODGpxGJSwvuC1GMQLQ-0-ebc729d71b9a31f8abf4c7cb8c119461)
运行代码,效果如图2-10所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/62_2.jpg?sign=1739362737-XXDKYDfNFjOHiDozIZ5uyvRcx06xGuMD-0-8820314f865f907699053619641ae44b)
图2-10 相对于页面窗口的绝对定位
absolute绝对定位和fixed绝对定位类似,只是absolute是相对父容器的绝对定位,会跟随父容器滚动。
2.3.7 其他显示效果相关属性
WXSS中还定义了许多元素的尺寸设置、透明度设置等属性,如表2-10所示。
表2-10 元素的尺寸设置、透明度设置等属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/62_3.jpg?sign=1739362737-zUiwD9MXLeLVpAUGkcKPIXbtEmHJAmRL-0-e495cce122b7dc51887fea6a06972a80)