接触小程序开发一段时间的同学都会发现,同样一套WXML页面结构代码,导入不同的样式文件后,页面视觉效果会天差地别。有的页面排版整洁、色彩协调、适配手机屏幕,有的页面元素杂乱、字体错位、按钮大小不协调,造成这种差距的核心原因,就是开发者对CSS样式管控逻辑的掌握程度不一样。CSS是前端行业统一的样式描述语言,小程序端适配衍生出WXSS语法,底层管控逻辑和原生CSS完全一致,吃透这套管控逻辑,就能随心所欲把控小程序所有页面视觉效果。
首先大家要搞懂CSS最核心的底层管控逻辑:选择器定位+属性赋值+层级优先级,这三层逻辑贯穿小程序所有样式开发场景,小程序引擎就是按照这套顺序解析执行样式代码。第一层逻辑是选择器定位,CSS所有样式生效的前提,精准找到需要美化的页面标签元素。我们可以通过标签名、类名、id、后代元素、父级元素,精准锁定小程序里面任意一个view、按钮、图片、文字组件。比如单独修改底部导航栏按钮样式、只调整商品列表第一张图片样式,都是依靠CSS选择器精准定位目标元素,不会全局污染其他页面模块样式。
第二层核心逻辑是样式属性赋值,定位到元素之后,通过内置属性修改元素外观和布局形态。CSS把小程序页面样式分为两大管控板块:布局样式和视觉样式。布局样式管控页面整体结构排布,包括元素宽高、内外边距、浮动布局、弹性布局、网格布局、元素居中、横向纵向排列,小程序绝大部分页面排版结构,全部靠布局类CSS属性控制。视觉样式管控表层展示效果,包含字体、颜色、背景、圆角、边框、阴影、透明度、动画过渡效果,我们看到的渐变按钮、卡片阴影、页面滚动动画、圆角图片,都是视觉属性实现的效果。
第三层也是小程序开发最容易踩坑的逻辑:样式优先级层级规则。小程序同一个页面元素,可能会被全局样式、页面局部样式、行内样式多重CSS代码修饰,微信渲染引擎会按照固定优先级执行样式:行内样式优先级最高,页面内部样式次之,全局公共样式优先级最低。优先级低的样式会被高优先级样式覆盖,这也是很多新手遇到“样式代码写了不生效”的核心原因。很多新手调试半天样式没有变化,本质就是更高层级的样式代码覆盖了当前编写的属性,掌握优先级规则就能快速排查这类线上bug。
还要给大家讲清楚CSS在小程序里面的全局和局部管控逻辑。小程序支持全局CSS和页面私有CSS两种文件形态,全局样式作用于小程序全部页面,适合统一配置APP主题色、公共字体、通用按钮样式;页面私有CSS只作用于当前单个页面,专门定制个性化页面风格。这种分域管控逻辑,方便企业项目统一UI设计规范,整个小程序保持一套品牌视觉风格,特殊页面单独定制样式,不用重复编写大量重复代码。
另外小程序WXSS保留了CSS盒子模型核心逻辑,这是移动端适配的关键。小程序所有页面元素都可以看成标准矩形盒子,由内容区域、内边距、边框、外边距组成,手机屏幕适配、元素间距排版全部依托盒子模型实现。只需要注意小程序独有rpx自适应尺寸单位,替代网页端px单位适配多型号手机屏幕,其余盒子模型、动画、弹性布局逻辑和原生CSS完全一样。
直白来说,CSS就是小程序页面的美妆工具,管控着页面长什么样子、怎么排布、怎么适配手机屏幕。大家不用死记硬背全部属性,吃透精准定位、优先级层级、全局局部分域、盒子模型这四大核心管控逻辑,就能搞定全场景小程序样式开发。