Theming with CSS variables.

In this article, I will talk about how to make theming with CSS variables. With this example, we will see again the importance of using variables.

Step 1: Define your variables.

/* Define your variables to the root. */
:root {
–black: #181818;…


This content originally appeared on DEV Community and was authored by Enes Kılıç

In this article, I will talk about how to make theming with CSS variables. With this example, we will see again the importance of using variables.

Step 1: Define your variables.

/* Define your variables to the root. */
:root {
  --black: #181818;
  --white: #f5f7f7;
  --fade:  150ms;
}

/*  
The variables of the tag with the data-theme="light" attribute.
We will then apply this property to the HTML tag with javascript,
but you can define it manually.
*/
[data-theme="light"]{
  --color-text: var(--black);
  --color-background: var(--white);
}

/* Change variables for dark theme. */
[data-theme="dark"]{
  --color-text: var(--white);
  --color-background: var(--black);
}

/* And apply styles to document root element. */
html {
  color: var(--color-text);
  background-color: var(--color-background);

  /* for smooth color transitions. */
  transition: var(--fade) color, var(--fade) background-color;
}

Step 2: Add functionality with javascript.

// Call theme value from browsers local storage.
var theme = localStorage.getItem("theme");
// Root element of the document.
const _root = document.documentElement;

// Check if local storage has no theme value, define the initial value.
!theme && localStorage.setItem("theme", "light");

// Update theme value.
theme = localStorage.getItem("theme");

// Apply theme value to document root element.
_root.setAttribute("data-theme", theme);

// Function for change theme.
// You can define this function to the a button or call this any way.
function changeTheme() {
  theme === "light"
    ? localStorage.setItem("theme", "dark")
    : localStorage.setItem("theme", "light");

  // Update theme value
  theme = localStorage.getItem("theme");

  // Apply theme to document root element
  _root.setAttribute("data-theme", theme);
}

Result


This content originally appeared on DEV Community and was authored by Enes Kılıç


Print Share Comment Cite Upload Translate Updates
APA

Enes Kılıç | Sciencx (2021-08-05T00:30:56+00:00) Theming with CSS variables.. Retrieved from https://www.scien.cx/2021/08/05/theming-with-css-variables/

MLA
" » Theming with CSS variables.." Enes Kılıç | Sciencx - Thursday August 5, 2021, https://www.scien.cx/2021/08/05/theming-with-css-variables/
HARVARD
Enes Kılıç | Sciencx Thursday August 5, 2021 » Theming with CSS variables.., viewed ,<https://www.scien.cx/2021/08/05/theming-with-css-variables/>
VANCOUVER
Enes Kılıç | Sciencx - » Theming with CSS variables.. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/08/05/theming-with-css-variables/
CHICAGO
" » Theming with CSS variables.." Enes Kılıç | Sciencx - Accessed . https://www.scien.cx/2021/08/05/theming-with-css-variables/
IEEE
" » Theming with CSS variables.." Enes Kılıç | Sciencx [Online]. Available: https://www.scien.cx/2021/08/05/theming-with-css-variables/. [Accessed: ]
rf:citation
» Theming with CSS variables. | Enes Kılıç | Sciencx | https://www.scien.cx/2021/08/05/theming-with-css-variables/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.