Unlock the Power of CSS: 6 Golden Nuggets to Simplify Your Code
Smooth Scrolling: A One-Line Wonder
Gone are the days of relying on JavaScript implementations to achieve smooth scrolling. The scroll-behavior property allows us to handle smooth scrolling with just one line of CSS code!
html {
  scroll-behavior: smooth;
}Browser support is around 75%, and it’s coming to Edge 76 soon.
Dark Mode: A Clever Workaround
Implementing dark mode doesn’t have to be complicated. You can achieve a similar result using mix-blend-mode: difference, one of the blending modes supported on CSS.
body.dark-mode {
  filter: invert(100%);
  background-color: #333;
  mix-blend-mode: difference;
}This approach eliminates the need to specify inverted colors, and you can isolate the elements you don’t want to change.
Truncate Text: A Native Solution
Meet text-overflow and line-clamp, two CSS properties that can provide a native, easy-to-implement solution for truncating text.
.truncate-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.truncate-text multiline {
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}These properties can help you achieve a consistent design across different sizes or resolutions, without relying on JavaScript-based solutions.
Scroll Snapping: Locking the Viewport
CSS scroll snapping is another handy functionality that allows you to create interactions like fullscreen sections, locking the viewport on specific locations as you scroll.
.scroll-snap {
  scroll-snap-type: y mandatory;
  overflow-y: auto;
}
.snap-point {
  scroll-snap-align: center;
}With scroll-snap-type and scroll-snap-align, you can achieve this effect natively, without the need for math calculations and JavaScript.
Sticky Navigation: Simplifying Positioning
Sticky positioning is now easier than ever, thanks to the position: sticky property.
.sticky-nav {
  position: sticky;
  top: 0;
}An element with sticky positioning will behave as a relatively-positioned element until a given point on the viewport is reached, and then become a fixed-positioned element. Browser support is up to 92% with the -webkit prefix.
Bonus: @supports Media-Rule
Even though these CSS features are widely adopted and supported, you might still want to check if they are available on the browser before adding them.
@supports (scroll-behavior: smooth) {
  /* add styles here */
}The @supports feature query allows you to test if the browser supports a specific property: value pair before applying a set of styles.
By leveraging these CSS golden nuggets, you can simplify your code, reduce your JavaScript bundle, and create compelling UIs that delight your users.