
No Comments Yet
Be the first to share your thoughts and start the conversation.
Be the first to share your thoughts and start the conversation.
By logging in, you'll unlock full access to this and other free tutorials on JSM Pro.
Why? Logging in lets us personalize your learning experience, track your progress, and keep you in the loop with new workshops, coding tips, and platform updates.
You'll also be the first to know about upcoming launches, events, and exclusive discounts.
No spam—just helpful content to level up your skills.
If that sounds fair, go ahead and log in to continue →
Enter your name and email to get instant access
In this lesson, we explore how to implement dark mode styling in web applications using Tailwind CSS, which supports dark themes natively. The discussion includes modifying styles based on user preferences and creating a toggle for manual theme switching.
dark
.00:00:02 Apparently, we developers love dark mode.
00:00:05 A recent study on medium.com reveals that more than 70% of software engineers decide to use the dark mode theme for their IDEs.
00:00:14 But it's not just the IDEs.
00:00:16 We love dark websites too.
00:00:18 So let me teach you how to apply styles for different themes like light and dark mode.
00:00:23 Tailwind supports dark mode natively.
00:00:25 You just have to add the dark keyword before a class.
00:00:28 Let me show you.
00:00:30 I'll create a div.
00:00:32 And this div will have a class equal to bg-white.
00:00:36 And in there, I can say something like dark mode disabled because it's white, right?
00:00:42 But now, the only thing I have to do is say on dark mode, apply a background of black.
00:00:49 And with that, we have technically enabled our dark mode.
00:00:53 But we cannot see the text.
00:00:54 So what do we have to do?
00:00:56 Well, by default, we can make the text black, but on dark mode, we can make it white by saying text-white.
00:01:04 And with that, our dark mode is working.
00:01:06 And the way it knows that I want to have my dark mode enabled is based on system or browser preferences.
00:01:12 So on your operating system or in your browser, you can try to switch to light mode.
00:01:16 My eyes hurt.
00:01:17 And immediately you'll see that this part also got changed to white.
00:01:21 Or if I decide to switch to dark mode, that's much better.
00:01:25 This has changed immediately.
00:01:28 just by prefixing the dark properties.
00:01:30 But now, often in our websites, you'll also have to create your own toggle to allow the weirdos to switch to the light mode.
00:01:37 Just kidding, I like using it sometimes too.
00:01:39 So, to make this work, we'll have to modify the configuration to include a special dark class.
00:01:44 There are two ways to toggle the dark mode manually.
00:01:47 You can use the PrefersColor scheme and override the dark variant to use your custom selector.
00:01:52 or you can use something known as a data attribute to automatically activate the theme.
00:01:57 For this demo, I'll go with the toggling dark mode manually approach that allows us to add custom directives in the CSS file just above the theme directive.
00:02:07 So let me copy this part right here.
00:02:09 And back in our playground, I'll head over to CSS and I'll add the at custom variant of dark where .dark and .dark everything turns on the dark mode.
00:02:22 If we don't specify this, the theme will automatically adapt based on the user's operating system.
00:02:27 Pretty cool, right?
00:02:28 You only need to mention this if you want to allow users to switch between the themes on their websites.
00:02:34 It's a choice you can give them.
00:02:35 So, whatever utilities or styles Tailwind provides, just add the dark before them, and you're all set.
00:02:41 Those utilities will only take effect when the theme is set to dark.
00:02:45 Otherwise, they won't have any impact.
00:02:47 Now, I prepared a very quick code example which I'll give access to somewhere below this lesson or within the GitHub Readme of this project where we have
00:02:55 a card and within that card we have an H3 and a P tag as well as a button.
00:03:00 This button has a manual JavaScript on-click handler, which simply adds a class of dark.
00:03:07 This then targets the DOM and applies that class of dark to the browser.
00:03:11 So now if you click it, you can see that we can toggle it on or off, and no longer is our theme based on the system preferences.
00:03:19 Rather, we now have an actual toggle that allows us to switch between the different themes.
00:03:24 Now, you can also notice there are some weird properties here, like Ring 1 or Ring Slate 900. Heck, there's also a shadow that we added to this element.
00:03:34 What are these properties?
00:03:35 Well, these are some special utility classes.
00:03:38 Shadows allow you to, well, very quickly add a shadow to a specific element.
00:03:43 And trust me, I don't want to teach you what each and every single property does.
00:03:47 This lesson would be too long and you wouldn't remember any of it.
00:03:50 Instead, if you head over to Tailwind CSS, press command K and search for any of these properties, you can immediately see what it does.
00:03:59 Just click right here, and there we go.
00:04:01 Drop Shadow MD, LG, and XL.
00:04:04 You can see it visually, and it'll even explain what it does and exactly how it works, alongside with a full reference guide to different possibilities
00:04:11 that you have with it.
00:04:12 Other than that, if you really want to learn how it works behind the scenes, you can head over to the generated CSS and find it right here.
00:04:20 Shadow XL basically applies a box shadow with predefined values.
00:04:25 So to recap, if you want to manually toggle on or off the dark theme mode, then you can add this custom variant dark, and then manually modify it using
00:04:35 JavaScript or React.
00:04:36 Or if you want to develop for both, but not allow the switch, rather take into the consideration their system preferences,
00:04:42 you can just normally say which values you want in the light mode, and then prefix the dark for the same values on the dark mode.
00:04:50 Pretty cool, right?
00:04:50 Hopefully now you know how we can implement dark themes to make the developers happy.