June 26, 2021

Как перезаписать встроенные стили с помощью CSS

Изучая CSS, часто люди думают что встроенные стили - это самая сильная форма стилей, которую нельзя изменить с помощью простого CSS.

Что ж, на самом деле есть довольно простой трюк, чтобы нарушить это правило!

Допустим, мы хотим изменить цвет текста для этого div:

<div style="color: red;">
    This text is red!
</div>

Это можно сделать, используя следующий синтаксис:

div[style] {
  color: blue !important;
}

И вуаля!

Но подождите, что произойдет, если во встроенном стиле будет указано !important?

div[style] {
    color: blue !important;
}
<div style="color: red !important;">
    This text is red!
</div>

На самом деле, для этого есть еще один необычный трюк:

@keyframes forceColor {
    from {
        color: blue;
    }
    to {
        color: blue;
    }
}

div {
    animation: 1s linear infinite forceColor;
}

Использование анимации дает необычные результаты. Похоже, браузеры отдают предпочтение результатам кадров анимации над встроенными стилями и даже в соответствии с жестким правилом !important.

Очевидно, что использование встроенных стилей и !important не рекомендуется, но иногда мы используем сторонние инструменты, которые мы не всегда можем контролировать. Эти уловки - выход из таких сложных ситуаций.