Shadow 阴影体系:多层级阴影提升视觉层次

前言

阴影是 UI 设计中提升视觉层次感的重要手段。"海风日记"在 Color.ets 中定义了完整的阴影颜色令牌体系,并在多个组件中使用了不同层级的阴影效果。

本文将从源码出发,深入讲解阴影属性配置、颜色令牌设计以及多层级阴影的最佳实践。


一、阴影属性

1.1 基本语法

typescript 复制代码
.shadow({
  radius: 12,                              // 模糊半径
  color: 'rgba(160,120,60,0.10)',          // 阴影颜色
  offsetX: 0,                              // 水平偏移
  offsetY: 2                               // 垂直偏移
})

1.2 参数说明

参数 类型 说明 默认值
radius number 模糊半径,值越大阴影越模糊 0
color string 阴影颜色,支持透明度 黑色
offsetX number 水平偏移,正数向右 0
offsetY number 垂直偏移,正数向下 0

二、阴影颜色令牌

2.1 颜色常量

typescript 复制代码
// 卡片阴影颜色
export const COLOR_CARD_SHADOW = '#19A0783C'

// 阴影颜色 - 不同透明度
export const COLOR_SHADOW_PRIMARY_LIGHT = 'rgba(245,166,35,0.25)'
export const COLOR_SHADOW_PRIMARY_MID = 'rgba(245,166,35,0.30)'
export const COLOR_SHADOW_PRIMARY_DEEP = 'rgba(245,166,35,0.40)'
export const COLOR_SHADOW_AMBER = 'rgba(160,120,60,0.08)'
export const COLOR_SHADOW_LIGHT = 'rgba(160,120,60,0.06)'

2.2 阴影层级

层级 颜色常量 效果 使用场景
COLOR_SHADOW_LIGHT 极淡阴影 设置菜单卡片
COLOR_SHADOW_AMBER 柔和阴影 正文卡片
中高 COLOR_CARD_SHADOW 标准阴影 日记卡片
COLOR_SHADOW_PRIMARY_MID 橙色高亮阴影 按钮、浮动按钮

三、不同场景的阴影配置

3.1 日记卡片

typescript 复制代码
.shadow({ radius: 12, color: 'rgba(160,120,60,0.10)', offsetY: 2 })

3.2 浮动按钮

typescript 复制代码
.shadow({ radius: 16, color: 'rgba(245,166,35,0.40)', offsetX: 0, offsetY: 4 })

3.3 渐变卡片

typescript 复制代码
.shadow({ radius: 20, color: 'rgba(245,166,35,0.30)', offsetY: 6 })

3.4 登录按钮

typescript 复制代码
.shadow({ radius: 16, color: 'rgba(245,166,35,0.35)', offsetY: 4 })

3.5 设置菜单卡片

typescript 复制代码
.shadow({ radius: 8, color: 'rgba(160,120,60,0.06)', offsetY: 2 })

四、阴影对比

场景 radius color offsetY 视觉强度
设置卡片 8 极淡 2 最弱
日记卡片 12 2
正文卡片 12 柔和 2
渐变卡片 20 橙色 6
浮动按钮 16 亮橙 4 最强

五、常见问题

5.1 阴影不显示

问题:设置了 shadow 属性但阴影不显示。

原因 :shadow 需要配合 background 使用,且背景不能是透明。

解决方案:确保组件有非透明的背景色。


总结

本文通过"海风日记"的阴影体系,深入讲解了 shadow 属性的配置:

  1. shadow 属性:radius、color、offsetX、offsetY
  2. 颜色令牌:5 个阴影颜色常量
  3. 多层级阴影:从浅到强的 5 个层级
  4. 场景配置:不同组件的阴影参数

下一篇文章将深入讲解 aboutToAppear 生命周期,敬请期待。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

相关推荐
IT_陈寒6 小时前
JavaScript的异步地狱里,我的Promise掉进了微任务陷阱
前端·人工智能·后端
xianjixiance_6 小时前
Swiper 轮播组件实现 3 页新用户引导
后端
CaffeinePro6 小时前
FastAPI高并发实战:缓存、分布式限流、链路日志三位一体架构
后端·fastapi
fengxinzi_zack6 小时前
年统计与最长连续天数:数据聚合可视化
后端
全堆鸿蒙6 小时前
aboutToAppear 生命周期:路由参数获取与数据初始化
后端
2501_931803756 小时前
Go 反射:原理、核心机制与实践指南
开发语言·后端·golang
程序员爱钓鱼7 小时前
Rust if let 与 while let 详解:简化模式匹配
前端·后端·rust
爸爸6197 小时前
UIAbility 生命周期在日记 App 中的实践
后端·华为·harmonyos·鸿蒙系统
大阳光男孩16 小时前
Spring Boot 整合 Debezium 实现 MySQL 增量数据监听(嵌入式版)
spring boot·后端·mysql