Skip to content

Instantly share code, notes, and snippets.

View vviikk's full-sized avatar
🙃

Vik Ramanujam vviikk

🙃
View GitHub Profile
@vviikk
vviikk / index.pug
Last active March 27, 2023 09:46
A Simple CSS custom properties naming convention
h1 A simple CSS Custom properties naming convention
p.large Discussed in detail in my article on medium.com.
p
a.button View on Medium
<script src="https://gist.github.com/vviikk/fde0fced50ee27780189dd7bc028e63d.js?file=style.css"></script>
:root {
/* Calculated properties in --kebab-case
Prefix the property name what it's affecting. i.e. `font-size`.
|
| Add some context of what it is.
| |
↓ ↓ */
--font-size-min-px: calc(var(--FONT-SIZE-MIN) * 1px);
--font-size-max-px: calc(var(--FONT-SIZE-MAX) * 1px);
/* ^ suffix with the unit type (i.e. px, rem) */
* { --[property-it-is-used-in-later]-[context(min|max)]-[unit]--[?modifier]: 2rem; }

e.g.

--font-size-min-px: calc(var(--FONT-SIZE-MIN) * 1px);
  /* Below value affects font-size, is computed and is in pixels
/* Increase specificity by specifying the selector twice. */
:root:root { /* makes the properties immutable, cant be reassigned */
--COLOR-PRIMARY: palevioletred;
--COLOR-SECONDARY: mediumseagreen;
}
:root {
--COLOR-PRIMARY: blue; /* WON't work as `:root:root` has higher specificity. :)
}
:root {
/* CONSTANTS, --UPPER-KEBAB-CASE */
--COLOR-PRIMARY: palevioletred;
  --COLOR-GRAY: silver;
/* VARIABLES, mutated later (line 10), so --lower-kebab-case */
  --heading-color: var(--COLOR-GRAY);
}
h1 {
 --heading-color: var(--COLOR-PRIMARY); /* Value is overridden */
:element {
--[?specificity]-[context]-[?unit]--[?modifier]: 2rem;
/* Examples */
/* constants: */
--PADDING-REM: 1rem;
--COLOR-PRIMARY: palevioletred;
--COLOR-SECONDARY: papayawhip;
--COLOR-FOREGROUND: darkgray;
--COLOR-BACKGROUND: snow;
:root {
--bg-color: black;
--fontSize: 1rem;
--bg_color_light: ....;
--highlightColor: rebeccapurple;
}
/* SCSS Variables only used for media queries. All else is custom properties. Overlook it's usage. */
$--browser-width-min: 300;
$--browser-width-max: 1600;
$--browser-width-min-px: $--browser-width-min * 1px;
$--browser-width-max-px: $--browser-width-max * 1px;
/* ^^
Since I'm only using SCSS for the bare minimum,
I'll not try to use a convention.
I think the regular $--kebab-case is just fine.
However, I just find it consistent to be prefixed with a --
html {
font-size: calc(
14px + (26 - 14) *
((100vw - 300px) / (1600 - 300))
);
}
@vviikk
vviikk / nicely-named-fluid-typography-with-custom-properties.css
Last active January 17, 2020 21:08
Better Fluid type with custom properties
:root {
/* CONSTANTS */
--FONT-SIZE-MIN: 16;
--FONT-SIZE-MAX: 26;
/* Notice, no calcs used yet */
--FONT-SIZE-MIN-PX: (var(--FONT-SIZE-MIN) * 1px);
--FONT-SIZE-MAX-PX: (var(--FONT-SIZE-MAX) * 1px);
--BROWSER-WIDTH-MIN: 300;