javascript - 使用选择器感知将 CSS 解析为 JavaScript

标签 javascript css css-modules css-parsing glamorous

我想构建一些可以使用 .css 文件的东西,返回一个函数,该函数将采用类名数组并返回将应用于具有这些类名的元素的样式,作为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 package 允许您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']

我还看到 SCSS 在 import 处被解构,例如:

import {btn, primary} from './btn.scss';

但不幸的是,我不记得使用了哪些加载程序来执行此操作。

关于javascript - 使用选择器感知将 CSS 解析为 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46369157/

相关文章:

javascript - 使用webpack导入react错误: Cannot resolve module 'react'

html - 如何让我的网站自动调整以适应不同的屏幕尺寸?

javascript - 背景位置图像叠加(适用于 IE,不适用于 Mozilla/Chrome/Safari)

javascript - 仅通过客户端技术重用 HTML 代码

javascript - 如何在 webview 中获取我的图像的 'src' 属性并通过 Intent 传递它?

html - 仅使用 css 将框斜体的 Angular 设为圆 Angular

html - 多级悬停 CSS

reactjs - 使用 SCSS 和全局 Mixins 来响应 CSS 模块

html - 将 CSS 模块与 Bootstrap 相结合

css - 将全局 css 文件与 CSS 模块一起使用