Modern CSS Techniques

CSS features that make responsive layouts easier: Grid, Custom Properties, Container Queries.

CSS has evolved significantly. Here are features I use regularly.

CSS Custom Properties

:root {
  --color-primary: #171717;
  --spacing: 1rem;
}

.button {
  background: var(--color-primary);
  padding: var(--spacing);
}

[data-theme="dark"] {
  --color-primary: #fafafa;
}

CSS Grid

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1rem;
}

Container Queries

.card-container {
  container-type: inline-size;
}

@container (min-width: 400px) {
  .card {
    display: flex;
  }
}

:has() Selector

/* Style parent based on child */
.card:has(img) {
  padding: 0;
}

.form:has(input:invalid) {
  border-color: red;
}

Logical Properties

.element {
  margin-inline: auto;
  padding-block: 1rem;
  border-inline-start: 2px solid;
}