loading...

JavaScript 30 - CSS Variables

varunbarad profile image Varun Barad Originally published at varunbarad.com on ・3 min read

On my day 3 of JS30 challenge I got introduced primarily to CSS variables but also to many other things.

The key concepts I learned from today’s challenge were:

  • CSS variables
  • dataset property on DOM elements
  • Image blur
  • Color input

CSS variables

CSS variables work very similar to how we use variables in JS or any other programming language. They let us define their value at one place and then just use that same value anywhere we refer to that variable.

For example, we can define at one place that we want text on our website to be white then we can define it like this

:root {
    --text-color: white;
}

Here we define this text-color variable at the root element. Now any place that we need to use this value we need to do something like

.content {
    color: var(--text-color);
}

CSS variables can be used for more than just colors. In today’s project we used these variables for storing the border thickness and color of an image and also for storing the blur amount for that image.

Note: One fun idea I have with CSS variables is that I can define the color palette of my website at one place and then provide the user with a night-mode switch. I can change colors across the whole website by changing them at just one place.

To modify their value via JS a simple method call does the trick.

<dom-element>.style.setProperty('--text-color', 'red');

The above snippet will change the value associated with --text-color at any point in the dom-element and any of dom-element.

dataset property on DOM elements

In HTML whenever we want to write a custom-property on an element we make use of what are called data attributes. A sample can be like

<input id="blur" type="range" name="blur" min="0" max="25" value="5" data-sizing="px" data-purpose="A slider input to select blur amount">

Here we have defined 2 data attributes, namely data-sizing and data-purpose.

Now when we need to use these in JS we can simply do

console.log(inputElement.dataset.sizing); // Used to access the data-sizing attribute.
console.log(inputElement.dataset.purpose); // Used to access the data-purpose attribute.

dataset is a very simple property on DOM elements which lists all the data attributes defined on that element.

Image blur

Today I learnt a nifty simple trick to blur an image using only CSS.

img {
    filter: blur(5px);
}

We can just specify a blur CSS filter and our work is done. There are lots of other functions available which can be used as filter, do make sure to take a look at that list.

Color input

Standardisation of HTML and CSS has made it easy to create a simple and functional color-picker. The only thing that needs to be done is

    <input id="base" type="color" name="base" value="#43bc46">

Here we have just declared an input tag which then takes care of displaying a color picker and also shows the user with a tiny sample of the color they have picked.

Conclusion

That’s all folks, that was it for today. If you have anything unclear in this article or want to discuss anything else, hit me up on twitter @varun_barad.

Discussion

pic
Editor guide