In this lesson, we demonstrate how leveraging the power of scoped CSS variables in combination with the HSL color space can be used to quickly prototype UI variants. In this demonstration, we create some button variants.
We create four different variants where new variants can be created with only a few lines of CSS!
Jhey Thompkins: [0:00] We have a basic button with some basic styling. Let's add some color to our button. Let's go with #e74c3c. While we're there, let's change the text color. Now, we have a button with this red color. What if we want to color change on hover or active states?
[0:24] We could use a color picker to find different variance of our color for the different state. An alternate approach might be to change the color space we use to hsl. Now on hover, we can darken our color by adjusting the lightness of our hsl. Now when we hover, we should see a change. We can update the active color to be even darker.
[0:57] Now, we have free background color state based off of changing the lightness, and we didn't need to use a color picker to go and find the extra colors.
[1:04] Let's update our transition so that the background color also transitions. Now, we have a button whose background color changes through the different states. We adjust the lightness to our needs and added benefit of using the HSL color space, is that we can take that lightness and turn it into a CSS variable, and then we can use scoped variables for the different button states.
[1:31] We can see here, our buttons still behaves the same, but taking that combination of the HSL color space and CSS variables, we can take it a little further. Now, we can change the hue variable and get a similar result without having to go and find those colors. Then we might set and take this further by creating variants of our button. Maybe, we have a confirm button, a delete button, and a warning button.
[2:04] We can update our button styles to use the new button class and set our default hue to 190, and then for each variant, set scope too. Maybe, confirm is 90, warning is 45, and delete is 10. Now, we have four button variants. They all work in a similar way using the HSL color space and scope CSS variables.
[2:38] In review, we can leverage the HSL color space in combination with scoped CSS variables to quickly prototype different variants of our UI. In this case, buttons.
Member comments are a way for members to communicate, interact, and ask questions about a lesson.
The instructor or someone from the community might respond to your question Here are a few basic guidelines to commenting on egghead.io
Be on-Topic
Comments are for discussing a lesson. If you're having a general issue with the website functionality, please contact us at support@egghead.io.
Avoid meta-discussion
Code Problems?
Should be accompanied by code! Codesandbox or Stackblitz provide a way to share code and discuss it in context
Details and Context
Vague question? Vague answer. Any details and context you can provide will lure more interesting answers!