DEV Community

Stas Melnikov
Stas Melnikov

Posted on • Edited on

CSS tips to avoid bad UX

I believe CSS is a powerful tool to make perfect UX. I'm here to share my tips for unfortunate mistakes.

Please, stop using resize: none

We used to use resize: none to disable textarea resizing. We end up textareas are terrible for typing data πŸ˜’

The vertical value and limit to the heights makes the same without discomfort πŸ’‘

A wrong code

.textarea {
  resize: none;
}
Enter fullscreen mode Exit fullscreen mode

A correct code

.textarea {
  resize: vertical;
  min-height: 5rem;
  max-height: 15rem;
}
Enter fullscreen mode Exit fullscreen mode

Leave the content property empty to avoid unexpected voicing

Pay attention, screen readers voice a text that's defined with the content property. It might lead to unexpected voicing. It's why we shouldn't use CSS to add text to a web page πŸ˜‰

A wrong code

.parent::before {
  content: "I am text";
}
Enter fullscreen mode Exit fullscreen mode

A correct code

.parent::before {
  content: "";
}
Enter fullscreen mode Exit fullscreen mode

aspect-ratio is a page jump pill

Page jumps after loading pictures is a pain. It's well, aspect-ratio help to avoid it. For example if the picture has the 600x400px size we should set aspect-ration: 1.5 (600px / 400xp = 1.5) 😊

A wrong code

img {
  display: block;
  max-width: 100%;
}
Enter fullscreen mode Exit fullscreen mode

A correct code

img {
  display: block;
  max-width: 100%;
  aspect-ratio: 1.5;
}
Enter fullscreen mode Exit fullscreen mode

animation without prefers-reduced-motion might lead to dizziness or headache

Motion animation might lead users with vestibular disorders to experience dizziness 😩

So we should wrap it in prefers-reduced-motion to avoid problems if users disable animations in OS settings πŸ‘

A wrong code

.example {
  animation: zoomIn 1s;
}
Enter fullscreen mode Exit fullscreen mode

A correct code

@media (prefers-reduced-motion: no-preference) {
  .example {
    animation: zoomIn 1s;
  }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)