使用选择器感知将 CSS 解析为 JavaScript
Parse CSS into JavaScript with selector awareness
我想构建一些可以使用 .css
文件的东西 return 一个函数,该函数将采用 class 名称数组和 return 将应用的样式到具有这些 class 名称的元素,作为 JavaScript 对象。 (这样的工具适合与 Glamour、Fela 或其他 CSS-in-JS 技术一起使用。)
例如,如果您有此 CSS 文件:
.btn {
border: 1px solid gray;
}
.btn.primary {
background: blue;
border-color: blue;
}
.btn-group {
display: inline-block;
}
那么你可以这样做:
import css from "./btn.css";
import applicableStyles from "applicable-styles"; // what I want to build
const btnStyles = applicableStyles(css, ['btn', 'primary']);
// Expected value:
{
border: "1px solid gray"
background: "blue";
border-color: "blue";
}
在此示例中,.btn-group
被忽略,因为我们只询问了哪种样式适用于 .btn.primary
。
这对我来说是新领域,但我知道有一些工具可以解析 CSS。哪些图书馆最有希望去看看? (或者,这样的东西已经存在了吗?)
这应该可以使用各种 npm
软件包中的一些。
例如,css-object-loader
包允许您 require
一个 .css
文件,该文件被转换为一个对象,其键对应于选择器,然后您可以访问该对象。
p {
font-size: 14px;
}
h1 {
text-indent: 20px;
}
.centered {
width: 100%;
margin: 0 auto;
}
var selectors = require('./rules.css');
// Get the
selectors['.centered']
我也在 import
看到 SCSS 被解构,比如:
import {btn, primary} from './btn.scss';
但不幸的是,我不记得使用什么加载程序来执行此操作。
我想构建一些可以使用 .css
文件的东西 return 一个函数,该函数将采用 class 名称数组和 return 将应用的样式到具有这些 class 名称的元素,作为 JavaScript 对象。 (这样的工具适合与 Glamour、Fela 或其他 CSS-in-JS 技术一起使用。)
例如,如果您有此 CSS 文件:
.btn {
border: 1px solid gray;
}
.btn.primary {
background: blue;
border-color: blue;
}
.btn-group {
display: inline-block;
}
那么你可以这样做:
import css from "./btn.css";
import applicableStyles from "applicable-styles"; // what I want to build
const btnStyles = applicableStyles(css, ['btn', 'primary']);
// Expected value:
{
border: "1px solid gray"
background: "blue";
border-color: "blue";
}
在此示例中,.btn-group
被忽略,因为我们只询问了哪种样式适用于 .btn.primary
。
这对我来说是新领域,但我知道有一些工具可以解析 CSS。哪些图书馆最有希望去看看? (或者,这样的东西已经存在了吗?)
这应该可以使用各种 npm
软件包中的一些。
例如,css-object-loader
包允许您 require
一个 .css
文件,该文件被转换为一个对象,其键对应于选择器,然后您可以访问该对象。
p {
font-size: 14px;
}
h1 {
text-indent: 20px;
}
.centered {
width: 100%;
margin: 0 auto;
}
var selectors = require('./rules.css');
// Get the
selectors['.centered']
我也在 import
看到 SCSS 被解构,比如:
import {btn, primary} from './btn.scss';
但不幸的是,我不记得使用什么加载程序来执行此操作。