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 is it a bad idea to hire a hitman to eliminate most corrupt politicians?
What do you call someone who asks many questions?
Is it possible to create a QR code using text?
Why was Sir Cadogan fired?
Does int main() need a declaration on C++?
Pact of Blade Warlock with Dancing Blade
how do we prove that a sum of two periods is still a period?
How can saying a song's name be a copyright violation?
What is the most common color to indicate the input-field is disabled?
Is it possible to map the firing of neurons in the human brain so as to stimulate artificial memories in someone else?
Why are UK visa biometrics appointments suspended at USCIS Application Support Centers?
Are British MPs missing the point, with these 'Indicative Votes'?
Did 'Cinema Songs' exist during Hiranyakshipu's time?
How badly should I try to prevent a user from XSSing themselves?
files created then deleted at every second in tmp directory
Avoiding the "not like other girls" trope?
Can I hook these wires up to find the connection to a dead outlet?
How to stretch the corners of this image so that it looks like a perfect rectangle?
GFCI outlets - can they be repaired? Are they really needed at the end of a circuit?
How exploitable/balanced is this homebrew spell: Spell Permanency?
Can a virus destroy the BIOS of a modern computer?
OP Amp not amplifying audio signal
What's the meaning of "Sollensaussagen"?
How do I exit BASH while loop using modulus operator?
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 2 days ago
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