Mastering Modern CSS: Tips and Tricks for Dynamic Styling

Nishanth Mekala
3 min readJan 18, 2025

--

As web developers, we often encounter CSS nuances that can make or break our designs. From understanding shorthand properties to leveraging modern viewport units, CSS offers a treasure trove of tools to enhance layouts. Let’s dive into some key concepts that can elevate your CSS game.

1. The Child Combinator (>)

CSS gives us powerful selectors to target elements efficiently. The > symbol, known as the child combinator, is used to select direct children of an element.

For instance:

body > button {
color: red;
}

or

body {
> button {
color:red;
}
}

This rule applies only to <button> elements that are direct children of <body>. Nested <button> elements inside other tags won’t be affected. This is a great way to keep your styles scoped and precise.

2. Attribute Selectors ([attribute])

The attribute selector lets you style elements based on the presence (or value) of an attribute. For example:

[popover] {
background-color: yellow;
}

This rule targets any element with the popover attribute, regardless of its value. You can also refine this:

  • Exact match: [popover="tooltip"]
  • Starts with: [popover^="tool"]
  • Ends with: [popover$="tip"]
  • Substring match: [popover*="ool"]

This flexibility is invaluable when working with custom attributes in frameworks.

3. Understanding inset

The inset property is a shorthand for positioning an element, combining top, right, bottom, and left into a single declaration:

.box {
position: absolute;
inset: auto;
}

Here, inset: auto; resets all four offsets to their default values (auto), meaning the element’s position is dictated by other factors, such as margins or layout context. You can also mix specific values:

inset: 10px auto auto 20px;

This translates to:

top: 10px;
right: auto;
bottom: auto;
left: 20px;

4. Introducing Modern Viewport Units (svh, lvh, dvh)

Traditional vh units measure 1% of the viewport height, including areas obscured by on-screen elements like mobile keyboards. Enter the new viewport units:

  • (Small Viewport Height): Measures the visible height of the viewport, ignoring obscured areas.
  • (Large Viewport Height): Includes the full viewport height, even behind UI elements.
  • (Dynamic Viewport Height): Adapts in real-time to UI changes.

Example:

div {
height: 100svh; /* Always fills the visible viewport */
}

These units are essential for responsive design, especially on mobile devices.

5. Smooth Transitions with transition

Adding animations is as simple as using the transition property:

button {
transition: 0.2s ease-in-out;
}

This shorthand combines:

  • Duration: 0.2s (200 milliseconds)
  • Timing function: ease-in-out (starts slow, speeds up, then slows down)

When paired with hover effects:

button:hover {
background-color: darkblue;
color: white;
}

You’ll achieve smooth, polished animations effortlessly.

6. Exploring Pseudo-Classes like :popover-open

In some frameworks, pseudo-classes like :popover-open provide state-based styling. For example:

.popover {
&:popover-open {
transform: translate(0, 0);
transition: transform 0.3s ease-in-out;
}
}

The & refers to the current selector, appending :popover-open to .popover. This style applies when the element enters the popover-open state. Such pseudo-classes are often part of libraries or custom setups.

7. Attribute vs. Property: Understanding the Difference

In web development, attributes and properties are often used interchangeably, but they serve different purposes:

  • Attributes: These are defined in the HTML markup and are part of the DOM element’s initial state. For example, <input value="Hello"> sets the attribute value to Hello.
  • Properties: These exist on the DOM element object in JavaScript and can change dynamically. For instance, document.querySelector('input').value = 'World'; updates the property value to World, but the original attribute in the HTML remains unchanged.

Understanding this distinction is crucial when manipulating elements programmatically. Refer to this to know more.

Wrapping Up

CSS is constantly evolving, giving us new tools to tackle design challenges. Whether it’s understanding how inset works, using svh for responsive layouts, or mastering transitions, these tips will help you write cleaner, more efficient styles.

Stay curious, and keep experimenting with CSS to discover its full potential!

--

--

No responses yet