这就是苹果母公司下放的最新技术吗?

455 阅读1分钟

image.png

image.png

灵动岛没什么好说的 就是打磨css动画 主要是动画效果比较难模仿 具体可以看预览

这里 主要说动态的阴影效果是如何根据“光源所改变” 核心思路

如果使用css写过时钟动画的 应该都清楚 秒针是跟随钟盘转的 可以吧光源当成秒针理解 只是这里我们把钟盘透明 就好像一个光点围着屏幕转 模拟太阳 我们以 9点钟方向为 0度 也就是 rotate(0deg) 转动钟盘 就是不断的改变度数 rotate(0deg) -> 360deg 这里我们把 0-90deg 90-180deg 180-270deg 270-360deg 所涵盖的范围 分成4分 阴影 0-90 时 水平方向的阴影 是从元素最右侧 慢慢往中间靠
垂直方向的阴影 是从没有 到 元素底部 为了方便直观 看我灵魂画作

image.png

其他3份 自己总结一下吧 一样的逻辑 略有变化

我们接下来看实现 这里使用React jsx更改样式比较灵活直观

一 先画圆

point就是小黄点 css代码

image.png

二 用js控制圆动起来

组件代码 第二行是全局状态管理库recoil 上手简单

image.png

因为其他地方会用到 组件加载完成后 每0.3秒转1度 并记录当前度数

三 读取度数 计算阴影相关参数

这里直接写了个hook 主要根据光源所在的 4个象限来分别计算

脑补一下象限 方便理解 image.png

四 使用 hook 渲染ui

image.png

预览地址: wdppx.gitee.io/light/ 仓库地址: gitee.com/wdppx/light