• This repository has been archived on 06/Jun/2022
  • Stars
    star
    131
  • Rank 275,867 (Top 6 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 10 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Use Custom Selectors in CSS
โš ๏ธ PostCSS Custom Selectors was moved to @csstools/postcss-plugins. โš ๏ธ
Read the announcement

PostCSS Custom Selectors PostCSS

NPM Version CSS Standard Status Build Status Support Chat

PostCSS Custom Selectors lets you use Custom Selectors in CSS, following the CSS Extensions specification.

@custom-selector :--heading h1, h2, h3;

article :--heading + p {
  margin-top: 0;
}

/* becomes */

article h1 + p, article h2 + p, article h3 + p {}

Usage

Add PostCSS Custom Selectors to your project:

npm install postcss-custom-selectors --save-dev

Use PostCSS Custom Selectors to process your CSS:

const postcssCustomSelectors = require('postcss-custom-selectors');

postcssCustomSelectors.process(YOUR_CSS /*, processOptions, pluginOptions */);

Or use it as a PostCSS plugin:

const postcss = require('postcss');
const postcssCustomSelectors = require('postcss-custom-selectors');

postcss([
  postcssCustomSelectors(/* pluginOptions */)
]).process(YOUR_CSS /*, processOptions */);

PostCSS Custom Selectors runs in all Node environments, with special instructions for:

Node PostCSS CLI Webpack Create React App Gulp Grunt

Options

preserve

The preserve option determines whether custom selectors and rules using custom selectors should be preserved in their original form.

@custom-selector :--heading h1, h2, h3;

article :--heading + p {
  margin-top: 0;
}

/* becomes */

article h1 + p, article h2 + p, article h3 + p {}

article :--heading + p {}

importFrom

The importFrom option specifies sources where custom selectors can be imported from, which might be CSS, JS, and JSON files, functions, and directly passed objects.

postcssCustomSelectors({
  importFrom: 'path/to/file.css' // => @custom-selector :--heading h1, h2, h3;
});
article :--heading + p {
  margin-top: 0;
}

/* becomes */

article h1 + p, article h2 + p, article h3 + p {}

Multiple sources can be passed into this option, and they will be parsed in the order they are received. JavaScript files, JSON files, functions, and objects will need to namespace custom selectors using the customProperties or custom-properties key.

postcssCustomSelectors({
  importFrom: [
    'path/to/file.css',
    'and/then/this.js',
    'and/then/that.json',
    {
      customSelectors: { ':--heading': 'h1, h2, h3' }
    },
    () => {
      const customProperties = { ':--heading': 'h1, h2, h3' };

      return { customProperties };
    }
  ]
});

exportTo

The exportTo option specifies destinations where custom selectors can be exported to, which might be CSS, JS, and JSON files, functions, and directly passed objects.

postcssCustomSelectors({
  exportTo: 'path/to/file.css' // @custom-selector :--heading h1, h2, h3;
});

Multiple destinations can be passed into this option, and they will be parsed in the order they are received. JavaScript files, JSON files, and objects will need to namespace custom selectors using the customProperties or custom-properties key.

const cachedObject = { customSelectors: {} };

postcssCustomSelectors({
  exportTo: [
    'path/to/file.css',   // @custom-selector :--heading h1, h2, h3;
    'and/then/this.js',   // module.exports = { customSelectors: { ':--heading': 'h1, h2, h3' } }
    'and/then/this.mjs',  // export const customSelectors = { ':--heading': 'h1, h2, h3' } }
    'and/then/that.json', // { "custom-selectors": { ":--heading": "h1, h2, h3" } }
    cachedObject,
    customProperties => {
      customProperties    // { ':--heading': 'h1, h2, h3' }
    }
  ]
});

More Repositories

1

sanitize.css

A best-practices CSS foundation
CSS
5,192
star
2

postcss-preset-env

Convert modern CSS into something browsers understand
CSS
2,219
star
3

precss

Use Sass-like markup in your CSS
CSS
1,609
star
4

postcss-font-magician

Magically generate all the @font-face rules
JavaScript
1,002
star
5

postcss-plugins

PostCSS Tools and Plugins
CSS
871
star
6

postcss-normalize

Use the parts of normalize.css (or sanitize.css) you need from your browserslist
CSS
816
star
7

postcss-write-svg

Write SVGs directly in CSS
JavaScript
755
star
8

mdcss

Easily create and maintain style guides using CSS comments
JavaScript
686
star
9

cssdb

A database of staged CSS features
JavaScript
522
star
10

system-font-css

Use the native system font of the OS running the browser
HTML
521
star
11

normalize.css

A cross-browser CSS foundation
HTML
473
star
12

postcss-nesting

Nest style rules inside each other
CSS
451
star
13

postcss-custom-media

Use Custom Media Queries in CSS, following the CSS Media Queries specification
JavaScript
438
star
14

postcss-short

Use advanced shorthand properties in CSS
JavaScript
189
star
15

oldie

Compile CSS compatible with old Internet Explorer
JavaScript
168
star
16

postcss-time-machine

Fix mistakes in the design of CSS itself
JavaScript
159
star
17

postcss-logical

Use logical properties and flow-relative values in CSS
JavaScript
137
star
18

postcss-sass

Use Sass as a PostCSS plugin
JavaScript
136
star
19

postcss-advanced-variables

Use Sass-like variables, conditionals, and iterators in CSS
JavaScript
126
star
20

react-app-rewire-postcss

Configure PostCSS in Create React App without ejecting
JavaScript
114
star
21

css-typed-om

Use CSS Typed Object Model in the browser
JavaScript
101
star
22

css-prefers-color-scheme

Use light or dark color themes in CSS
JavaScript
99
star
23

postcss-color-mod-function

Modify colors using the color-mod() function in CSS
JavaScript
96
star
24

postcss-language

Support for modern and experimental CSS within Visual Studio Code
77
star
25

postcss-partial-import

Inline sugary @import statements in CSS
JavaScript
72
star
26

tokenizer

Tokenize CSS according to the CSS Syntax
TypeScript
67
star
27

parser

CSS Parser
JavaScript
63
star
28

stylelint-value-no-unknown-custom-properties

A stylelint rule to catch usage of unknown custom properties
JavaScript
63
star
29

postcss-conic-gradient

Use conic gradients in your CSS files
JavaScript
60
star
30

postcss-wcag-contrast

Check CSS for WCAG color contrast compliance
JavaScript
59
star
31

postcss-env-function

Use env() variables in CSS
JavaScript
54
star
32

postcss-focus-visible

Use the :focus-visible pseudo-selector in CSS
CSS
53
star
33

postcss-extend-rule

Use the @extend at-rule and functional selectors in CSS
JavaScript
51
star
34

stylelint-use-logical

Enforce usage of logical properties and values in CSS
JavaScript
50
star
35

postcss-selector-not

PostCSS plugin to transform :not() W3C CSS level 4 pseudo class to more compatible CSS (multiple css3 :not() selectors)
JavaScript
48
star
36

postcss-transform-shortcut

Use shorthand transform properties in CSS
JavaScript
48
star
37

postcss-lab-function

Use lab() and lch() color functions in CSS
JavaScript
48
star
38

postcss-input-range

Use unprefixed input range selectors in CSS
JavaScript
42
star
39

stylelint-use-nesting

Enforce nesting when it is possible in CSS
JavaScript
40
star
40

postcss-unmq

Remove media queries from CSS while preserving rules that match a hard-coded viewport
JavaScript
37
star
41

css-has-pseudo

Style elements relative to other elements
JavaScript
35
star
42

postcss-image-set-function

Use image-set() in CSS
CSS
34
star
43

postcss-focus-within

Use the :focus-within pseudo-selector in CSS
CSS
30
star
44

postcss-pseudo-class-enter

Use the :enter pseudo-class in CSS
JavaScript
28
star
45

postcss-is-pseudo-class

Match elements by inner selectors in CSS
JavaScript
27
star
46

postcss-pseudo-class-any-link

Use the :any-link pseudo-class in CSS
JavaScript
24
star
47

postcss-short-size

Use size properties in CSS
JavaScript
21
star
48

postcss-gap-properties

Use the gap, column-gap, and row-gap shorthand properties in CSS
JavaScript
20
star
49

custom-units

Use Custom Units in CSS
JavaScript
18
star
50

postcss-dir-pseudo-class

Use the :dir() pseudo-class to style by directionality in CSS
JavaScript
16
star
51

postcss-media-fn

Use media() to assign responsive values to a property
JavaScript
15
star
52

postcss-font-weights

Use common font weights in CSS
CSS
15
star
53

create-postcss-plugin

Quickly create new PostCSS plugins
JavaScript
15
star
54

postcss-tape

Quickly test PostCSS plugins
JavaScript
15
star
55

super-postcss

Now youโ€™re playing with PostCSS โ€” Super PostCSS!
JavaScript
14
star
56

postcss-register-property

Register properties in CSS
JavaScript
14
star
57

postcss-inset

Use the inset property in CSS
JavaScript
13
star
58

postcss-trig

Use trigonometry functions in CSS
JavaScript
12
star
59

postcss-export-custom-variables

Export custom media queries, custom properties, custom property sets, and custom selectors from CSS to JS
JavaScript
12
star
60

stylelint-media-use-custom-media

Enforce usage of custom media queries in CSS
JavaScript
11
star
61

postcss-at-else

Use at-else inverted media queries in CSS
CSS
11
star
62

postcss-list-style-safari-fix

Remove list styles in CSS without preventing VoiceOver from announcing them in Safari
JavaScript
11
star
63

postcss-resolve-nested-selector

Resolve a nested selector in a PostCSS AST
JavaScript
10
star
64

postcss-place

place-* shorthand for align-* and justify-*
JavaScript
10
star
65

css-blank-pseudo

Style form elements when they are empty
JavaScript
10
star
66

postcss-short-spacing

Omit sides within margin and padding properties in CSS
JavaScript
10
star
67

js-custom-media

Use Custom Media Queries in JS
JavaScript
9
star
68

postcss-browser-comments

Keep only the CSS you need based on comments and your browserslist
CSS
9
star
69

babel-plugin-import-postcss

Import processed CSS files in JS
JavaScript
8
star
70

postcss-to-nest

Transform unnested CSS into nested CSS
JavaScript
8
star
71

css-import-resolve

An algorithm for resolving imports in CSS
JavaScript
8
star
72

postcss-color-functional-notation

Use space and slash separated color notation in CSS
JavaScript
8
star
73

postcss-attribute-case-insensitive

PostCSS plugin to support case insensitive attributes
JavaScript
8
star
74

postcss-custom-utils

Read, write, and transform Custom Media and Custom Properties from almost anywhere
JavaScript
7
star
75

postcss-preset-env-www

The official website for PostCSS Preset Env
HTML
7
star
76

postcss-short-data

Use shorthand data attribute selectors in CSS
JavaScript
7
star
77

postcss-sass-extend

Use @extend and placeholder classes as you would in Sass
JavaScript
6
star
78

postcss-module-import

Inline import statements as CSS Modules
JavaScript
6
star
79

postcss-visitor

Transform CSS with visitor-based plugins
JavaScript
6
star
80

postcss-infrared-filter

Use an infrared photography filter in CSS
JavaScript
6
star
81

postcss-short-position

Define sides within the position property in CSS
JavaScript
6
star
82

postcss-commas

Declare multiple, comma-separated properties
JavaScript
6
star
83

postcss-short-border

Define multiple sides on border properties in CSS
CSS
6
star
84

postcss-double-position-gradients

Use double-position gradients in CSS
JavaScript
6
star
85

stylelint-devtool-prop-order

Enforce CSS property ordering like Chrome DevTools
JavaScript
5
star
86

cccp

Compact Client-side Compatible PostCSS
JavaScript
5
star
87

postcss-short-color

Define background-color within the color property in CSS
JavaScript
5
star
88

postcss-bob-ross-palette

Bring Bob Ross to your CSS :)
JavaScript
5
star
89

postcss-overflow-shorthand

Use the overflow shorthand in CSS
JavaScript
5
star
90

postcss-vmax

Use vmax in Internet Explorer and Edge
JavaScript
5
star
91

postcss-number-functions

Use Sass Number Functions in CSS
JavaScript
5
star
92

postcss-short-font-size

Define line-height within the font-size property in CSS
CSS
4
star
93

create-stylelint-plugin

Quickly create new stylelint plugins
JavaScript
4
star
94

stylelint-color-control

Control color usage in CSS
JavaScript
4
star
95

postcss-unrgba

Convert rgba() values to hex
JavaScript
4
star
96

postcss-short-text

Use a shorthand text property in CSS
JavaScript
4
star
97

postcss-plugins-directory

JavaScript
4
star
98

parse

A tool to read CSS and do things with it in JavaScript
JavaScript
4
star
99

postcss-words

Transform CSS keywords into custom values in CSS
JavaScript
3
star
100

postcss-identifiers

Use identifiers in CSS to write intelligent shorthands
JavaScript
3
star