Can I add a classname to a CSS variable?Add table row in jQuerySet cellpadding and cellspacing in CSS?Is there a CSS parent selector?When to use margin vs padding in CSSChange an HTML5 input's placeholder color with CSSHow can I transition height: 0; to height: auto; using CSS?How do CSS triangles work?How do I vertically center text with CSS?Sass Variable in CSS calc() functionIs it possible to apply CSS to half of a character?
Why didn't Boeing produce its own regional jet?
How to compactly explain secondary and tertiary characters without resorting to stereotypes?
Do Iron Man suits sport waste management systems?
Are British MPs missing the point, with these 'Indicative Votes'?
Why is it a bad idea to hire a hitman to eliminate most corrupt politicians?
Is it possible to map the firing of neurons in the human brain so as to stimulate artificial memories in someone else?
How to install cross-compiler on Ubuntu 18.04?
How does a dynamic QR code work?
What's the meaning of "Sollensaussagen"?
Knowledge-based authentication using Domain-driven Design in C#
A hang glider, sudden unexpected lift to 25,000 feet altitude, what could do this?
How do I exit BASH while loop using modulus operator?
My ex-girlfriend uses my Apple ID to login to her iPad, do I have to give her my Apple ID password to reset it?
Could the museum Saturn V's be refitted for one more flight?
How can I prove that a state of equilibrium is unstable?
What is the fastest integer factorization to break RSA?
Avoiding the "not like other girls" trope?
files created then deleted at every second in tmp directory
Rotate ASCII Art by 45 Degrees
Why was the shrink from 8″ made only to 5.25″ and not smaller (4″ or less)
Placement of More Information/Help Icon button for Radio Buttons
Different meanings of こわい
What does the same-ish mean?
How to calculate the right interval for a timelapse on a boat
Can I add a classname to a CSS variable?
Add table row in jQuerySet cellpadding and cellspacing in CSS?Is there a CSS parent selector?When to use margin vs padding in CSSChange an HTML5 input's placeholder color with CSSHow can I transition height: 0; to height: auto; using CSS?How do CSS triangles work?How do I vertically center text with CSS?Sass Variable in CSS calc() functionIs it possible to apply CSS to half of a character?
Is it possible to add a classname to a CSS variable or is there some other way to set it up so that I don't have to manipulate each individual variable directly via javascript? I'd like to keep all my styles in CSS and simply turn on relevant classes with JS. For example, If something like this was possible in CSS:
:root.white --bgcol:#FFF; --col:#000;
:root.black --bgcol:#000; --col:#FFF;
Then I could then just toggle the .black or .white class from javascript to trigger all vars to change. What's the best approach for this type of setup?
javascript css css3 css-variables
|
show 2 more comments
Is it possible to add a classname to a CSS variable or is there some other way to set it up so that I don't have to manipulate each individual variable directly via javascript? I'd like to keep all my styles in CSS and simply turn on relevant classes with JS. For example, If something like this was possible in CSS:
:root.white --bgcol:#FFF; --col:#000;
:root.black --bgcol:#000; --col:#FFF;
Then I could then just toggle the .black or .white class from javascript to trigger all vars to change. What's the best approach for this type of setup?
javascript css css3 css-variables
1
apply this to thebodyinstead of the root element and your done. CSS variable doesn't need to be defined in root
– Temani Afif
2 days ago
appy tobodyor some wrappping div instead of:root...
– kukkuz
2 days ago
The convention has always been to define global custom properties in :root, even if nobody knows or has ever questioned why. Deviating from convention presents no benefits whatsoever.
– BoltClock♦
2 days ago
@BoltClock true, but in this case where we need to consider class switching better target body or html where it's easy to manipulate with JS.
– Temani Afif
2 days ago
3
@Temani Afif: Not understanding :root is not a reason to avoid using it or to break convention in ways that could potentially break stylesheets (specificity, inheritance, etc). It is a reason to learn about it so you can make the most out of it.
– BoltClock♦
2 days ago
|
show 2 more comments
Is it possible to add a classname to a CSS variable or is there some other way to set it up so that I don't have to manipulate each individual variable directly via javascript? I'd like to keep all my styles in CSS and simply turn on relevant classes with JS. For example, If something like this was possible in CSS:
:root.white --bgcol:#FFF; --col:#000;
:root.black --bgcol:#000; --col:#FFF;
Then I could then just toggle the .black or .white class from javascript to trigger all vars to change. What's the best approach for this type of setup?
javascript css css3 css-variables
Is it possible to add a classname to a CSS variable or is there some other way to set it up so that I don't have to manipulate each individual variable directly via javascript? I'd like to keep all my styles in CSS and simply turn on relevant classes with JS. For example, If something like this was possible in CSS:
:root.white --bgcol:#FFF; --col:#000;
:root.black --bgcol:#000; --col:#FFF;
Then I could then just toggle the .black or .white class from javascript to trigger all vars to change. What's the best approach for this type of setup?
javascript css css3 css-variables
javascript css css3 css-variables
edited yesterday
cronoklee
asked 2 days ago
cronokleecronoklee
3,32953666
3,32953666
1
apply this to thebodyinstead of the root element and your done. CSS variable doesn't need to be defined in root
– Temani Afif
2 days ago
appy tobodyor some wrappping div instead of:root...
– kukkuz
2 days ago
The convention has always been to define global custom properties in :root, even if nobody knows or has ever questioned why. Deviating from convention presents no benefits whatsoever.
– BoltClock♦
2 days ago
@BoltClock true, but in this case where we need to consider class switching better target body or html where it's easy to manipulate with JS.
– Temani Afif
2 days ago
3
@Temani Afif: Not understanding :root is not a reason to avoid using it or to break convention in ways that could potentially break stylesheets (specificity, inheritance, etc). It is a reason to learn about it so you can make the most out of it.
– BoltClock♦
2 days ago
|
show 2 more comments
1
apply this to thebodyinstead of the root element and your done. CSS variable doesn't need to be defined in root
– Temani Afif
2 days ago
appy tobodyor some wrappping div instead of:root...
– kukkuz
2 days ago
The convention has always been to define global custom properties in :root, even if nobody knows or has ever questioned why. Deviating from convention presents no benefits whatsoever.
– BoltClock♦
2 days ago
@BoltClock true, but in this case where we need to consider class switching better target body or html where it's easy to manipulate with JS.
– Temani Afif
2 days ago
3
@Temani Afif: Not understanding :root is not a reason to avoid using it or to break convention in ways that could potentially break stylesheets (specificity, inheritance, etc). It is a reason to learn about it so you can make the most out of it.
– BoltClock♦
2 days ago
1
1
apply this to the
body instead of the root element and your done. CSS variable doesn't need to be defined in root– Temani Afif
2 days ago
apply this to the
body instead of the root element and your done. CSS variable doesn't need to be defined in root– Temani Afif
2 days ago
appy to
body or some wrappping div instead of :root...– kukkuz
2 days ago
appy to
body or some wrappping div instead of :root...– kukkuz
2 days ago
The convention has always been to define global custom properties in :root, even if nobody knows or has ever questioned why. Deviating from convention presents no benefits whatsoever.
– BoltClock♦
2 days ago
The convention has always been to define global custom properties in :root, even if nobody knows or has ever questioned why. Deviating from convention presents no benefits whatsoever.
– BoltClock♦
2 days ago
@BoltClock true, but in this case where we need to consider class switching better target body or html where it's easy to manipulate with JS.
– Temani Afif
2 days ago
@BoltClock true, but in this case where we need to consider class switching better target body or html where it's easy to manipulate with JS.
– Temani Afif
2 days ago
3
3
@Temani Afif: Not understanding :root is not a reason to avoid using it or to break convention in ways that could potentially break stylesheets (specificity, inheritance, etc). It is a reason to learn about it so you can make the most out of it.
– BoltClock♦
2 days ago
@Temani Afif: Not understanding :root is not a reason to avoid using it or to break convention in ways that could potentially break stylesheets (specificity, inheritance, etc). It is a reason to learn about it so you can make the most out of it.
– BoltClock♦
2 days ago
|
show 2 more comments
2 Answers
2
active
oldest
votes
That's frankly the best (as in most idiomatic) approach — the use of class names, if not altogether separate stylesheets (as has been tradition for many, many years), to theme entire layouts via custom properties. It's the most "fundamentally CSS" approach with JavaScript merely being the glue that makes the theme switching work. You really can't do much better than that.
For those unaware what :root means and wondering where exactly the class names are being applied, it's the html element (the parent of body). So there is nothing special going on here — you're simply switching class names on the html element. It just happens that global custom properties are conventionally defined for the document root element since it's at the top level of the inheritance chain.
If you have any theme-agnostic custom properties, as well as style properties (i.e. not custom properties) that apply to the root element, keep them in their own unqualified :root rule, separate from your themed custom properties, so they won't be affected by theme switching. Here's an example:
const root = document.documentElement;
// Default theme - should assign declaratively in markup, not JS
// For a classless default theme, move its custom properties to unqualified :root
// Again, keep it separate from the other :root rule that contains non-theme props
// Remember, the cascade is your friend, not the enemy
root.classList.add('white');
document.querySelector('button').addEventListener('click', function()
root.classList.toggle('white');
root.classList.toggle('black');
);:root
--spacing: 1rem;
color: var(--col);
background-color: var(--bgcol);
:root.white
--bgcol: #FFF;
--col: #000;
:root.black
--bgcol: #000;
--col: #FFF;
p
margin: var(--spacing);
border: thin dashed;
padding: var(--spacing);
<button>Switch themes</button>
<p>Hello world!
Very cool and exactly what I wanted. It's funny I was so close with my hypothetical. I had no idea:rootwas just thehtmltag. Thanks!
– cronoklee
2 days ago
I considered that after the conversation under your question, so I figured it wouldn't hurt to add a primer. I'm glad I did now, and glad you learned something new.
– BoltClock♦
2 days ago
Did you design the unicorn for today
– Sombrero Chicken
2 days ago
I damn right knew it.
– Sombrero Chicken
2 days ago
@BoltClock Shouldn't you useclassList.togglein order to avoid breaking other class use on the element?
– wizzwizz4
2 days ago
|
show 1 more comment
Using :root selector is identical to using html, except its specifity is higher, thus there is no issues in using this approach.
For example:
:root
--bg: red;
:root.blue
--bg: blue;
// ...
div
background: var(--bg);
Later, you should just change html's class and variables will change.
You can see an example in this fiddle.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55439391%2fcan-i-add-a-classname-to-a-css-variable%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
That's frankly the best (as in most idiomatic) approach — the use of class names, if not altogether separate stylesheets (as has been tradition for many, many years), to theme entire layouts via custom properties. It's the most "fundamentally CSS" approach with JavaScript merely being the glue that makes the theme switching work. You really can't do much better than that.
For those unaware what :root means and wondering where exactly the class names are being applied, it's the html element (the parent of body). So there is nothing special going on here — you're simply switching class names on the html element. It just happens that global custom properties are conventionally defined for the document root element since it's at the top level of the inheritance chain.
If you have any theme-agnostic custom properties, as well as style properties (i.e. not custom properties) that apply to the root element, keep them in their own unqualified :root rule, separate from your themed custom properties, so they won't be affected by theme switching. Here's an example:
const root = document.documentElement;
// Default theme - should assign declaratively in markup, not JS
// For a classless default theme, move its custom properties to unqualified :root
// Again, keep it separate from the other :root rule that contains non-theme props
// Remember, the cascade is your friend, not the enemy
root.classList.add('white');
document.querySelector('button').addEventListener('click', function()
root.classList.toggle('white');
root.classList.toggle('black');
);:root
--spacing: 1rem;
color: var(--col);
background-color: var(--bgcol);
:root.white
--bgcol: #FFF;
--col: #000;
:root.black
--bgcol: #000;
--col: #FFF;
p
margin: var(--spacing);
border: thin dashed;
padding: var(--spacing);
<button>Switch themes</button>
<p>Hello world!
Very cool and exactly what I wanted. It's funny I was so close with my hypothetical. I had no idea:rootwas just thehtmltag. Thanks!
– cronoklee
2 days ago
I considered that after the conversation under your question, so I figured it wouldn't hurt to add a primer. I'm glad I did now, and glad you learned something new.
– BoltClock♦
2 days ago
Did you design the unicorn for today
– Sombrero Chicken
2 days ago
I damn right knew it.
– Sombrero Chicken
2 days ago
@BoltClock Shouldn't you useclassList.togglein order to avoid breaking other class use on the element?
– wizzwizz4
2 days ago
|
show 1 more comment
That's frankly the best (as in most idiomatic) approach — the use of class names, if not altogether separate stylesheets (as has been tradition for many, many years), to theme entire layouts via custom properties. It's the most "fundamentally CSS" approach with JavaScript merely being the glue that makes the theme switching work. You really can't do much better than that.
For those unaware what :root means and wondering where exactly the class names are being applied, it's the html element (the parent of body). So there is nothing special going on here — you're simply switching class names on the html element. It just happens that global custom properties are conventionally defined for the document root element since it's at the top level of the inheritance chain.
If you have any theme-agnostic custom properties, as well as style properties (i.e. not custom properties) that apply to the root element, keep them in their own unqualified :root rule, separate from your themed custom properties, so they won't be affected by theme switching. Here's an example:
const root = document.documentElement;
// Default theme - should assign declaratively in markup, not JS
// For a classless default theme, move its custom properties to unqualified :root
// Again, keep it separate from the other :root rule that contains non-theme props
// Remember, the cascade is your friend, not the enemy
root.classList.add('white');
document.querySelector('button').addEventListener('click', function()
root.classList.toggle('white');
root.classList.toggle('black');
);:root
--spacing: 1rem;
color: var(--col);
background-color: var(--bgcol);
:root.white
--bgcol: #FFF;
--col: #000;
:root.black
--bgcol: #000;
--col: #FFF;
p
margin: var(--spacing);
border: thin dashed;
padding: var(--spacing);
<button>Switch themes</button>
<p>Hello world!
Very cool and exactly what I wanted. It's funny I was so close with my hypothetical. I had no idea:rootwas just thehtmltag. Thanks!
– cronoklee
2 days ago
I considered that after the conversation under your question, so I figured it wouldn't hurt to add a primer. I'm glad I did now, and glad you learned something new.
– BoltClock♦
2 days ago
Did you design the unicorn for today
– Sombrero Chicken
2 days ago
I damn right knew it.
– Sombrero Chicken
2 days ago
@BoltClock Shouldn't you useclassList.togglein order to avoid breaking other class use on the element?
– wizzwizz4
2 days ago
|
show 1 more comment
That's frankly the best (as in most idiomatic) approach — the use of class names, if not altogether separate stylesheets (as has been tradition for many, many years), to theme entire layouts via custom properties. It's the most "fundamentally CSS" approach with JavaScript merely being the glue that makes the theme switching work. You really can't do much better than that.
For those unaware what :root means and wondering where exactly the class names are being applied, it's the html element (the parent of body). So there is nothing special going on here — you're simply switching class names on the html element. It just happens that global custom properties are conventionally defined for the document root element since it's at the top level of the inheritance chain.
If you have any theme-agnostic custom properties, as well as style properties (i.e. not custom properties) that apply to the root element, keep them in their own unqualified :root rule, separate from your themed custom properties, so they won't be affected by theme switching. Here's an example:
const root = document.documentElement;
// Default theme - should assign declaratively in markup, not JS
// For a classless default theme, move its custom properties to unqualified :root
// Again, keep it separate from the other :root rule that contains non-theme props
// Remember, the cascade is your friend, not the enemy
root.classList.add('white');
document.querySelector('button').addEventListener('click', function()
root.classList.toggle('white');
root.classList.toggle('black');
);:root
--spacing: 1rem;
color: var(--col);
background-color: var(--bgcol);
:root.white
--bgcol: #FFF;
--col: #000;
:root.black
--bgcol: #000;
--col: #FFF;
p
margin: var(--spacing);
border: thin dashed;
padding: var(--spacing);
<button>Switch themes</button>
<p>Hello world!That's frankly the best (as in most idiomatic) approach — the use of class names, if not altogether separate stylesheets (as has been tradition for many, many years), to theme entire layouts via custom properties. It's the most "fundamentally CSS" approach with JavaScript merely being the glue that makes the theme switching work. You really can't do much better than that.
For those unaware what :root means and wondering where exactly the class names are being applied, it's the html element (the parent of body). So there is nothing special going on here — you're simply switching class names on the html element. It just happens that global custom properties are conventionally defined for the document root element since it's at the top level of the inheritance chain.
If you have any theme-agnostic custom properties, as well as style properties (i.e. not custom properties) that apply to the root element, keep them in their own unqualified :root rule, separate from your themed custom properties, so they won't be affected by theme switching. Here's an example:
const root = document.documentElement;
// Default theme - should assign declaratively in markup, not JS
// For a classless default theme, move its custom properties to unqualified :root
// Again, keep it separate from the other :root rule that contains non-theme props
// Remember, the cascade is your friend, not the enemy
root.classList.add('white');
document.querySelector('button').addEventListener('click', function()
root.classList.toggle('white');
root.classList.toggle('black');
);:root
--spacing: 1rem;
color: var(--col);
background-color: var(--bgcol);
:root.white
--bgcol: #FFF;
--col: #000;
:root.black
--bgcol: #000;
--col: #FFF;
p
margin: var(--spacing);
border: thin dashed;
padding: var(--spacing);
<button>Switch themes</button>
<p>Hello world!const root = document.documentElement;
// Default theme - should assign declaratively in markup, not JS
// For a classless default theme, move its custom properties to unqualified :root
// Again, keep it separate from the other :root rule that contains non-theme props
// Remember, the cascade is your friend, not the enemy
root.classList.add('white');
document.querySelector('button').addEventListener('click', function()
root.classList.toggle('white');
root.classList.toggle('black');
);:root
--spacing: 1rem;
color: var(--col);
background-color: var(--bgcol);
:root.white
--bgcol: #FFF;
--col: #000;
:root.black
--bgcol: #000;
--col: #FFF;
p
margin: var(--spacing);
border: thin dashed;
padding: var(--spacing);
<button>Switch themes</button>
<p>Hello world!const root = document.documentElement;
// Default theme - should assign declaratively in markup, not JS
// For a classless default theme, move its custom properties to unqualified :root
// Again, keep it separate from the other :root rule that contains non-theme props
// Remember, the cascade is your friend, not the enemy
root.classList.add('white');
document.querySelector('button').addEventListener('click', function()
root.classList.toggle('white');
root.classList.toggle('black');
);:root
--spacing: 1rem;
color: var(--col);
background-color: var(--bgcol);
:root.white
--bgcol: #FFF;
--col: #000;
:root.black
--bgcol: #000;
--col: #FFF;
p
margin: var(--spacing);
border: thin dashed;
padding: var(--spacing);
<button>Switch themes</button>
<p>Hello world!edited 2 days ago
answered 2 days ago
BoltClock♦BoltClock
529k13011711208
529k13011711208
Very cool and exactly what I wanted. It's funny I was so close with my hypothetical. I had no idea:rootwas just thehtmltag. Thanks!
– cronoklee
2 days ago
I considered that after the conversation under your question, so I figured it wouldn't hurt to add a primer. I'm glad I did now, and glad you learned something new.
– BoltClock♦
2 days ago
Did you design the unicorn for today
– Sombrero Chicken
2 days ago
I damn right knew it.
– Sombrero Chicken
2 days ago
@BoltClock Shouldn't you useclassList.togglein order to avoid breaking other class use on the element?
– wizzwizz4
2 days ago
|
show 1 more comment
Very cool and exactly what I wanted. It's funny I was so close with my hypothetical. I had no idea:rootwas just thehtmltag. Thanks!
– cronoklee
2 days ago
I considered that after the conversation under your question, so I figured it wouldn't hurt to add a primer. I'm glad I did now, and glad you learned something new.
– BoltClock♦
2 days ago
Did you design the unicorn for today
– Sombrero Chicken
2 days ago
I damn right knew it.
– Sombrero Chicken
2 days ago
@BoltClock Shouldn't you useclassList.togglein order to avoid breaking other class use on the element?
– wizzwizz4
2 days ago
Very cool and exactly what I wanted. It's funny I was so close with my hypothetical. I had no idea
:root was just the html tag. Thanks!– cronoklee
2 days ago
Very cool and exactly what I wanted. It's funny I was so close with my hypothetical. I had no idea
:root was just the html tag. Thanks!– cronoklee
2 days ago
I considered that after the conversation under your question, so I figured it wouldn't hurt to add a primer. I'm glad I did now, and glad you learned something new.
– BoltClock♦
2 days ago
I considered that after the conversation under your question, so I figured it wouldn't hurt to add a primer. I'm glad I did now, and glad you learned something new.
– BoltClock♦
2 days ago
Did you design the unicorn for today
– Sombrero Chicken
2 days ago
Did you design the unicorn for today
– Sombrero Chicken
2 days ago
I damn right knew it.
– Sombrero Chicken
2 days ago
I damn right knew it.
– Sombrero Chicken
2 days ago
@BoltClock Shouldn't you use
classList.toggle in order to avoid breaking other class use on the element?– wizzwizz4
2 days ago
@BoltClock Shouldn't you use
classList.toggle in order to avoid breaking other class use on the element?– wizzwizz4
2 days ago
|
show 1 more comment
Using :root selector is identical to using html, except its specifity is higher, thus there is no issues in using this approach.
For example:
:root
--bg: red;
:root.blue
--bg: blue;
// ...
div
background: var(--bg);
Later, you should just change html's class and variables will change.
You can see an example in this fiddle.
add a comment |
Using :root selector is identical to using html, except its specifity is higher, thus there is no issues in using this approach.
For example:
:root
--bg: red;
:root.blue
--bg: blue;
// ...
div
background: var(--bg);
Later, you should just change html's class and variables will change.
You can see an example in this fiddle.
add a comment |
Using :root selector is identical to using html, except its specifity is higher, thus there is no issues in using this approach.
For example:
:root
--bg: red;
:root.blue
--bg: blue;
// ...
div
background: var(--bg);
Later, you should just change html's class and variables will change.
You can see an example in this fiddle.
Using :root selector is identical to using html, except its specifity is higher, thus there is no issues in using this approach.
For example:
:root
--bg: red;
:root.blue
--bg: blue;
// ...
div
background: var(--bg);
Later, you should just change html's class and variables will change.
You can see an example in this fiddle.
answered 2 days ago
StyxStyx
4,67562737
4,67562737
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55439391%2fcan-i-add-a-classname-to-a-css-variable%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
apply this to the
bodyinstead of the root element and your done. CSS variable doesn't need to be defined in root– Temani Afif
2 days ago
appy to
bodyor some wrappping div instead of:root...– kukkuz
2 days ago
The convention has always been to define global custom properties in :root, even if nobody knows or has ever questioned why. Deviating from convention presents no benefits whatsoever.
– BoltClock♦
2 days ago
@BoltClock true, but in this case where we need to consider class switching better target body or html where it's easy to manipulate with JS.
– Temani Afif
2 days ago
3
@Temani Afif: Not understanding :root is not a reason to avoid using it or to break convention in ways that could potentially break stylesheets (specificity, inheritance, etc). It is a reason to learn about it so you can make the most out of it.
– BoltClock♦
2 days ago