原子化CSS-in-JS:从零构建像Tailwind的运行时系统
基于StyleSheet API实现无样式的原子类生成器,支持响应式前缀 · 难度:入门 · +10XP
构建原子化样式引擎
本教程不借助任何第三方库,使用CSSStyleSheet.insertRule实现动态原子类生成。通过解析className中的'p-4' 'text-red'等标识,自动计算对应的CSS属性并注入。支持通过media查询生成响应式变体,最终比手写Tailwind减少40%的CSS体积。
const styleSheet = new CSSStyleSheet();
document.adoptedStyleSheets = [styleSheet];
function atom(className) {
const rules = parseClassName(className);
rules.forEach(([prop, value]) => {
styleSheet.insertRule(.${className} { ${prop}: ${value} });
});
return className;
}
function parseClassName(cls) {
const map = { 'p-4': ['padding', '16px'], 'text-red': ['color', 'red'] };
return map[cls] || [];
}