![微信小程序开发实战](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=1739290732-OCkndTHaS3bFL2aOMyYIApNEZ8gu0Tqp-0-ce551210fb27744777f6deaebdddf3bd)
通过表2-5列举的尺寸单位可以精准地控制组件的渲染尺寸,如修改index.wxml代码,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/55_2.jpg?sign=1739290732-g5UGHNsC9NfPDMjl1PaCEPHXO5JvQ2kF-0-1000028bf1db80139998b21a206cde7b)
在index.wxss中编写样式,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/55_3.jpg?sign=1739290732-3KtbranIBIrINE3spNVtcFJUOtmBvLmO-0-6570953da017ed63c3e96f3a3ee40ab9)
运行代码,效果如图2-8所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/55_4.jpg?sign=1739290732-0VDFV0BGrMdgHyIZLN1ivuuQoK48fY0X-0-1890adb983873c1b804d6b08431f7eab)
图2-8 定义组件尺寸
上面的display属性设置组件的展示模式,默认text组件为行内元素,将其更改为块级元素使尺寸设置生效。
关于样式表的导入其实非常简单,组件的导入也一样,我们可以将一些通过的样式定义在公共样式表文件中,在需要使用的页面进行导入即可。例如,在common文件夹下,新建一个命名为common.wxss的文件,编写如下代码:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_1.jpg?sign=1739290732-ry4ZbuQstrkQgFwCfXyFdvr0tf1vECyX-0-51c2cb6f763c7f8fd21b62ddd2bb9f06)
在index.wxss中直接进行引用即可,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_2.jpg?sign=1739290732-Zt7DFVBbzTcIBG6OAFZ5zx8laqykZAv7-0-53a5df246a5dea50f501ba6c91e79ecb)
在引用时需要注意路径的正确性。
2.3.2 WXSS选择器
选择器的作用是匹配文档中的元素,最简单的选择器是元素选择器,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_3.jpg?sign=1739290732-grIDIM9DPy0FSYWxwMF6zI12KDQcp1tC-0-45e9ef7475ea1a9d6e43d317bca1ea5c)
上面WXSS代码设置页面中所有text组件文字颜色为绿色。在选择元素时,也可以进行组合选择,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_4.jpg?sign=1739290732-l65GhFToxl4tLTTIybX8VVnft9I6iN7h-0-7317774aad54bfddcb2892e570bf6911)
上面的代码设置页面中所有text组件和button组件的文本颜色为绿色。
类选择器会匹配元素的class属性,如下面的text组件设置其class属性为label:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_5.jpg?sign=1739290732-Ru9cfAkvL4mf9JWCXOT66KYCJKSjzVsM-0-cdd6169e9e052142e0ca53ef2df71e0f)
使用符号“.”加上class名可以选中这个元素,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_6.jpg?sign=1739290732-LkKazw6ycdR2OYd0AZ2PozB2Y00UnA5v-0-e85eb46846289316a1643d2ecc5f3918)
id选择器会匹配元素的id属性,如下面的text组件设置其id属性为label:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_7.jpg?sign=1739290732-L7Iv03MUi2yLBJshs5juVTTatRw99rsb-0-3147ba7d2ca2b3da131331018ca87803)
使用符号“#”加上id名可以选中这个元素,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_8.jpg?sign=1739290732-DrQaQuSHAP4O2s9ScZhSgcXQ0FnkxDax-0-c2893de25bbbf8ae95ed88e0ad9a7e23)
也可以通过标签的任意一个属性选中元素,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/56_9.jpg?sign=1739290732-LhYZQOqBHkCJcStZ8prRLMu7EVzKNfu5-0-b670436117b2253b3d2c8f24b35791ab)
上述代码的作用是选中所有设置id属性值的元素,也可以根据属性值进行精准选择,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_1.jpg?sign=1739290732-xJnzK1HJ6IcI7oSU3ttTasFz8O1JvCp3-0-f5cb11727397c27a1bf45b8bcc428a9a)
后代选择器可以精准地选中某个父标签下的子标签,修改index.wxml文件,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_2.jpg?sign=1739290732-CDgSBHakrNEsfOWPXqEOYu81XT1HGqYT-0-f4fd453e5d02e08f865c33aa5a4c234b)
上面的代码创建了两个text标签,其中一个包裹在view标签内,要选中它,可以使用后代选择器,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_3.jpg?sign=1739290732-G7S3Vu1XFGB96cuWXSCMNKzghqTJ6YQX-0-3edd805be70a7bf3dd16dc4ca73da0a4)
与后代选择器对应的还有子选择器,后代选择器会选中父标签内所有的指定元素,无论层级结构如何;而子选择器只会选择父标签中的子元素,子元素的子元素不会被选择。示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_4.jpg?sign=1739290732-k3pSw7jq0gc2Bqu4NfeblcG7lYdivQro-0-462beb1829257eab0803055a688c3bea)
兄弟选择器用在同级元素的选择中,修改index.wxml文件,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_5.jpg?sign=1739290732-CQL312nKd6NEvhuP2MR4CCzJarhXPmWu-0-96a00904a54b2851262ddbf8bc206d62)
使用如下选择器可以选中紧跟view组件后面的text组件元素:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/57_6.jpg?sign=1739290732-68Ml2slJjKdhAsfetprLqYgVOUA8f8R3-0-ab414b32883f2b213efdcdf1bea92d2d)
2.3.3 WXSS背景相关属性
WXSS中提供了许多背景属性,开发者可以对组件的背景进行自定义。常用背景设置相关属性如表2-6所示。
表2-6 常用背景设置相关属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/58_1.jpg?sign=1739290732-EIFIpRogFpc2HHS6HgT5B30IBjjOEdbf-0-e3965b9f3ffd210d9a943feb47c506fd)
2.3.4 WXSS文本相关属性
文本相关属性用来对元素中的文字进行设置,其可以对文字的字体、字号、颜色、对齐方式、缩进等属性进行配置。文本相关属性如表2-7所示。
表2-7 文本相关属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/58_2.jpg?sign=1739290732-YGWycBvmD648nVR25REaa4GGSwjAMPxb-0-ffea1fe261843d0b9687b8e74c15b0c2)
2.3.5 WXSS边距与边框相关属性
边距用来控制组件与组件之间、组件与组件内部子组件之间的布局效果。边框相关属性用来设置组件的边界显示效果,如表2-8所示。
表2-8 边框相关属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/59_2.jpg?sign=1739290732-S6rXoq73uNdXpO2AguC2JTHA3J0Ha7q7-0-eec9330c639819e5d833618d0caad5ee)
续表
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/60_1.jpg?sign=1739290732-ubNdpiEw7e4qIrVkYS7P0fDZkk85sOLh-0-ce770d1f62eb40381f75d8b01ab998a4)
2.3.6 WXSS元素定位相关属性
在默认情况下,小程序的页面布局和网页一样,是从上到下流式布局的。与CSS不同的是,WXSS提供了一套弹性盒的布局方式,关于弹性盒布局,后面在介绍小程序页面布局技术时会详细介绍,本节仅列举设置元素显示和元素定位方式的相关属性,如表2-9所示。
表2-9 设置元素显示和元素定位方式的相关属性
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/61_1.jpg?sign=1739290732-Y3GgSrHhloyg2BXV136940SUigO2ugQi-0-ecb9ecf8592796c1a8072f4f7cca86d0)
相对定位可以使元素相对于其当前位置进行调整,通过设置left、right、top、bottom属性分别进行左、右、上、下的调整,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/61_2.jpg?sign=1739290732-IFWbASjcUkDpVCX2w7GyPbnBRwfAeNHq-0-87f4fc36ea3102c3ee07200ef5893dcc)
运行代码,效果如图2-9所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/62_1.jpg?sign=1739290732-iMKGlcAHAewPRKC9qNdjsaBf3wG4wqNy-0-b6e36422fb080a21077ca7a35274fdde)
图2-9 进行相对定位
fixed绝对定位相对于页面窗口进行定位,不会占据流式布局的空间,使用它可以将组件固定在页面窗口的某个位置,并且不会随页面的滚动而滚动。通过设置left、right、top、bottom属性分别进行相对页面窗口左、右、上、下距离的调整,示例代码如下:
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/61_3.jpg?sign=1739290732-LiRA5tmv0epwTyWZHz7xxPmG4tMN9VuI-0-92dccf46137b01ce67b96b80a1f7a1dc)
运行代码,效果如图2-10所示。
![](https://epubservercos.yuewen.com/DC4D25/16793576504227606/epubprivate/OEBPS/Images/62_2.jpg?sign=1739290732-qdkhNEkz43CAGjleXGZLGSGmAMvjKeiU-0-b7db2ebe336c4b3fb342b523b96450e4)
图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=1739290732-LGOqQqz7KLrgkzm4qWSpHEyM78zGhc3j-0-449938a0367cf4eabac3589118d1dbfc)