这是为了结合 jit引擎 , 来动态的调整所有颜色的透明度 。 有了它我们就能编写出以下的代码:
h1{ @apply text-header-text; // 等价于 // color: rgb(var(--color-header-text)) h2{ @apply text-header-text/70; // 等价于 // color: rgb(var(--color-header-text) / 0.7)
这也是我们要给根元素中的 css变量 赋值为 R G B 格式的原因了!
本质上讲 , 是我们在利用原生 css 中 rgb(rgba是rgb的别名) 构造方法来创建颜色变量:
/* rgb的函数Syntax */ rgb(255255255) /* white */ rgb(255255255.5) /* white with 50% opacity */ rgb(255 255 255) /* CSS Colors 4 space-separated values */ rgb(255 255 255 / .5); /* white with 50% opacity using CSS Colors 4 space-separated values */
从上面这段代码片段中 , 我们可以看到 , 列出的 rgb(R G B / A)就是现在使用的方案 。
当然我们也可以更改上述的 getRgbString 和 withOpacityValue 这2个方法 , 把 这个分隔符加入进去 , 再把 / 去除 , 从而使用它 rgb(RGBA) 这个构造方式 。
这样我们在使用时就可以生成出这样的样式:
.neutral{ background-color: rgb(var(--color-neutral-muted)); &:hover{ background-color: rgb(var(--color-neutral-muted) / 0.4);
是不是非常的灵活?
接下来只要把 extendColors.cjs 导入进 tailwind.config.js 配置中 , 就可以自动生成 class 和 vscode 的智能提示了:
// tailwind.config.js const extendColors = require('./client/theme/extendColors.cjs') const colors = require('tailwindcss/colors') module.exports = { // ... theme:{ extend:{ colors:{ ...extendColors.colors //... colors:{ transparent: 'transparent' current: 'currentColor' black: colors.black white: colors.white gray: colors.gray // ... // ...
这样 , 我们只需要把主题变更依赖的变量们 , 写进各种控件 , layout , 容器中去 , 所有的 css 变量就生效了 , 切换主题就非常的方便 。
5. 动态修改根节点变量
很多场景下我们的应用主题 , 不是从前端维护的几套预设方案中进行选择 , 而是由用户自定义配置 , 保存在数据库中 , 每次请求后端才能获取到 。
这种获取方式意味着前端这里 , 只保留一套默认的预设方案 。 所以我们通常会在获取到后端给的主题数据后 , 动态的修改 css变量 的值 。
具体怎么做呢?本质上就是调用 , 来设置 document.documentElement 的变量值 。
为了让它更好用 , 我们可以进行封装 , 并建立一套浏览器本地的缓存机制 , 这些在此不再叙述 , 条条大道通罗马 。
- 小米|小米最强影像旗舰!小米12S系列海报泄密:徕卡标变白了
- 徕卡|超大杯命名揭晓!卢伟冰换上小米12S Ultra
- ZOL科技早餐:华为千元手表官宣,腾讯QQ回应大规模盗号
- 苹果|美科技巨头每秒能赚多少钱?苹果11376元
- 科技入黔|“科技入黔”助力贵州高质量发展
- 领军企业|30个!中国科协发布2022年科技领域重大问题难题
- 小米|小米12S系列官宣7月4日正式发布:小米与徕卡联合研发
- 为何人类科技几乎停滞?谁影响了人类发展?又被科学家猜对了?
- 一加科技|618手机黑马清单:小米这次直接杀疯了
- 小米12T核心参数曝光:骁龙8+、120Hz AMOLED屏
