更新记录
1.0.1(2025-04-14)
下载此版本
1.0.0(2025-04-11)
下载此版本
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 4.55,Android:支持,iOS:支持,HarmonyNext:不支持 |
× |
√ |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
× |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
kux-stylevalue-types
参考 style-value-types 实现的一个轻量级的 CSS
样式值处理库,支持解析、验证和转换常见类型(单位、颜色、复合值等)。适用于动画插值、样式动态计算等场景。
功能特性
- 类型验证:检测值是否为指定类型(如
px
,rgba
,complex
)
- 解析与转换:将字符串解析为结构化对象,或将对象转换为合法 CSS 值
- 支持类型:数值、百分比、角度、颜色(RGB/HSL/Hex)、复合值等
- 自定义扩展:通过工具函数创建新类型(如
vw
单位)
快速开始
1. 单位类型处理
import { px, percent } from '@/uni_modules/kux-stylevalue-types';
// 验证是否为 px 值
px.test('10px'); // -> true
// 解析字符串为数值
px.parse('20px'); // -> 20
// 转换数值为带单位字符串
px.transform!(30); // -> '30px'
2. 颜色处理
import { rgba, color } from '@/uni_modules/kux-stylevalue-types';
// 解析 RGBA 颜色
const red = rgba.parse('rgba(255,0,0,0.5)');
// -> { red: 255, green: 0, blue: 0, alpha: 0.5 }
// 自动识别颜色类型并转换
color.transform!({ hue: 180, saturation: 50, lightness: 50 });
// -> 'hsla(180, 50%, 50%, 1)'
3. 复合值处理
import { complex } from '@/uni_modules/kux-stylevalue-types';
// 解析多值字符串
complex.parse('10px 20px');
// -> { '0': 10, '1': 20 }
// 创建动态模版
const transform = complex.transform!('scale(0) translateX(1)');
transform({ '0': 2, '1': 100 });
// -> scale(2) translateX(100)'
完整API
单位类型
名称 |
实例值 |
方法 |
px |
'20px' |
test/parse/transform |
rpx |
'20rpx' |
同上 |
percent |
'50%' |
同上 |
degress |
'90deg' |
同上 |
percent.test('50%'); // → true
degrees.transform(180); // → '180deg'
基础类型
名称 |
描述 |
方法 |
number |
纯数值(如 0.5 ) |
同上 |
alpha |
数值且范围 [0, 1] |
同上 |
scale |
数值,默认值1 |
同上 |
alpha.transform(1.2); // → 1
scale.parse(2); // → 2
颜色类型
名称 |
支持格式 |
转换示例 |
方法 |
rgba |
rgba(255,0,0,0.5) |
→ { red: 255, ... } |
同上 |
hsla |
hsla(180,50%,50%,1) |
→ { hue: 180, ... } |
同上 |
hex |
#ff0000 或 #f00 |
→ RGBA 对象 |
同上 |
color |
自动识别上述所有格式 |
→ 对应颜色对象 |
同上 |
复合类型
处理多值组合(如 10px 20px、0 10px 5px 2px):
complex.test('1px solid #fff'); // → true
// 解析为键值对对象
complex.parse('10 20'); // → { '0': 10, '1': 20 }
// 动态模板
const template = complex.createTransformer('0px 1px');
template({ '0': 100, '1': 200 }); // → '100px 200px'
自定义类型
使用内置工具创建新单位类型:
import { createUnitType } from '@/uni_modules/kux-stylevalue-types';
const vw = createUnitType('vw');
vw.transform(50); // → '50vw'
结语
友情推荐