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?













11















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?










share|improve this question



















  • 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












  • 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












  • @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















11















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?










share|improve this question



















  • 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












  • 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












  • @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













11












11








11


2






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?










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday







cronoklee

















asked 2 days ago









cronokleecronoklee

3,32953666




3,32953666







  • 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












  • 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












  • @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





    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












  • 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












2 Answers
2






active

oldest

votes


















8














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!








share|improve this answer

























  • 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











  • 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 use classList.toggle in order to avoid breaking other class use on the element?

    – wizzwizz4
    2 days ago


















2














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.






share|improve this answer























    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
    );



    );













    draft saved

    draft discarded


















    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









    8














    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!








    share|improve this answer

























    • 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











    • 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 use classList.toggle in order to avoid breaking other class use on the element?

      – wizzwizz4
      2 days ago















    8














    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!








    share|improve this answer

























    • 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











    • 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 use classList.toggle in order to avoid breaking other class use on the element?

      – wizzwizz4
      2 days ago













    8












    8








    8







    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!








    share|improve this answer















    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!






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 2 days ago

























    answered 2 days ago









    BoltClockBoltClock

    529k13011711208




    529k13011711208












    • 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











    • 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 use classList.toggle in 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












    • 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 use classList.toggle in 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













    2














    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.






    share|improve this answer



























      2














      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.






      share|improve this answer

























        2












        2








        2







        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.






        share|improve this answer













        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.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 2 days ago









        StyxStyx

        4,67562737




        4,67562737



























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221

            Creating closest line along the point''s azimuth using PostgreSQL Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Drawing line between points at specific distance in PostGIS?How to efficiently find the closest point over the dateline?How to find the nearest point by using PostGIS function?PostGIS nearest point with LATERAL JOIN in PostgreSQL 9.3+Creating a table and inserting selected streets using plpgsql functionsCreating a table that stores Distances and other columnSaving select query results (year wise) from PostgreSQL/PostGIS to text filesWhat is the information behind this geometry?How to give start and end vertex ids dynamically in pgr_dijkstra?Point to Polygon nearest distance DS_distance is not using geography index & knn <-> or <#> does not give result in orderLine to point conversion with start point and end point detection?

            Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given