• 第5章 小程序的样式
    • 内联样式
    • 选择器
    • 尺寸单位
    • 全局样式与局部样式
    • 样式导入

    第5章 小程序的样式

    WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式。

    WXSS 用来决定 WXML 的组件应该怎么显示。

    为了适应广大的前端开发者,WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。

    1. 新增了尺寸单位。在写 CSS 样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位。WXSS 在底层支持新的尺寸单位 rpx ,开发者可以免去换算的烦恼,只要交给小程序底层来换算即可,由于换算采用的浮点数运算,所以运算结果会和预期结果有一点点偏差。
    2. 提供了全局的样式和局部样式。和前边 app.json, page.json 的概念相同,你可以写一个 app.wxss 作为全局样式,会作用于当前小程序的所有页面,局部页面样式 page.wxss 仅对当前页面生效。
    3. 此外 WXSS 仅支持部分 CSS 选择器

    内联样式

    框架组件上支持使用 style、class 属性来控制组件的样式。

    • style:静态的样式统一写到 class 中。style 接收动态的样式,在运行时会进行解析,请尽量避免将静态的样式写进 style 中,以免影响渲染速度。
    1. <view style="color:{{color}};" />
    • class:用于指定样式规则,其属性值是样式规则中类选择器名(样式类名)的集合,样式类名不需要带上.,样式类名之间用空格分隔。
    1. <view class="normal_view" />

    选择器

    目前支持的选择器有:

    选择器 样例 样例描述
    .class .intro 选择所有拥有 class=”intro” 的组件
    #id #firstname 选择拥有 id=”firstname” 的组件
    element view 选择所有 view 组件
    element, element view, checkbox 选择所有文档的 view 组件和所有的 checkbox 组件
    ::after view::after 在 view 组件后边插入内容
    ::before view::before 在 view 组件前边插入内容

    Tips:

    • 经过测试我们发现小程序也支持其他选择器,例如后代选择器、直接子代选择器等,但是建议不要使用官方文档中未声明的选择器,因为小程序中的 CSS 不是纯 CSS,可能会造成在其它设备不支持的情况,其次由于小程序都是移动网页,不需要我们 PC 端那么复杂的网页布局,所以也就不需要那么多复杂的选择器了。

    尺寸单位

    rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

    设备 rpx换算px (屏幕宽度/750) px换算rpx (750/屏幕宽度)
    iPhone5 1rpx = 0.42px 1px = 2.34rpx
    iPhone6 1rpx = 0.5px 1px = 2rpx
    iPhone6 Plus 1rpx = 0.552px 1px = 1.81rpx

    建议: 开发微信小程序时设计师可以用 iPhone6 作为视觉稿的标准。

    注意: 在较小的屏幕上不可避免的会有一些毛刺,请在开发时尽量避免这种情况。

    全局样式与局部样式

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

    在 page 的 wxss 文件中定义的样式为局部样式,只作用在对应的页面,并会覆盖 app.wxss 中相同的选择器。

    Tips:

    • 建议把所有页面公共的样式写到 app.wxss 中,把页面自己的写到 页面.wxss 中。

    样式导入

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

    示例代码:

    1. /** common.wxss **/
    2. .small-p {
    3. padding:5px;
    4. }
    5. /** app.wxss **/
    6. @import "common.wxss";
    7. .middle-p {
    8. padding:15px;
    9. }

    Tips:

    • 建议把某几个页面公共的样式提取到单独的文件中,然后在 页面.wxss 中使用 @import 语法单独引入。