Что такое пользовательский агентный стиль (user agent stylesheet)?
У меня проблема с веб-страницей в Google Chrome. Она отображается корректно с использованием следующих стилей:
table {
display: table;
border-collapse: separate;
border-spacing: 2px;
border-color: gray;
}
Важно отметить, что я не определял эти стили. В инструментах разработчика Chrome указано user agent stylesheet вместо названия CSS-файла.
Однако, если я отправляю форму и происходит ошибка валидации, я получаю следующие стили:
table {
white-space: normal;
line-height: normal;
font-weight: normal;
font-size: medium;
font-variant: normal;
font-style: normal;
color: -webkit-text;
text-align: -webkit-auto;
}
table {
display: table;
border-collapse: separate;
border-spacing: 2px;
border-color: gray;
}
Свойство font-size
из этих новых стилей нарушает мой дизайн. Есть ли способ заставить работать мои стили и, если возможно, полностью перезаписать стандартный стиль Chrome?
5 ответ(ов)
Если в вашем HTML-коде отсутствует <!DOCTYPE>
, вы можете столкнуться с тем, что браузер отдает предпочтение "стилям пользовательского агента" вместо ваших собственных стилей. Добавление <!DOCTYPE>
решает эту проблему.
Отметка документа как HTML5 с помощью правильного doctype на первой строке решила мою проблему.
<!DOCTYPE html>
<html>...
Отвечая на вопрос в заголовке, что такое пользовательская таблица стилей (user agent stylesheet), это набор стилей по умолчанию в браузере. Вот некоторые из них:
- Chromium (Chrome): html.css
- WebKit (Safari): html.css
- Gecko (Firefox): html.css
- Ladybird: Default.css
- Mozilla Servo: user-agent.css
Личное мнение: Не стоит бороться с этими стилями. У них хорошие значения по умолчанию, например, в случаях с правосторонним письмом (rtl/bidi), и они сейчас достаточно последовательные. Сбрасывайте только те стили, которые вам не подходят, а не все сразу.
Чтобы определить значения, которые вы не хотите использовать в своем CSS-контенте из стилей пользовательского агента Chrome, вы можете воспользоваться свойством all
в CSS. Это свойство позволяет управлять всеми свойствами элемента, включая унаследованные и стандартные свойства.
Примерно так это может выглядеть:
.selector {
all: unset; /* Убирает все стили по умолчанию */
/* Ваши собственные стили */
color: black;
font-size: 16px;
/* Другие стили */
}
Использование all: unset;
сбрасывает все стили, которые применяются к элементу, позволяя вам затем задать только те стили, которые вам нужны. Однако, стоит отметить, что это свойство имеет ограниченную поддержку, поэтому убедитесь, что оно соответствует вашим требованиям к кроссбраузерной совместимости.
Дополнительно, вы можете также вручную переопределить специфические свойства, которые вас не устраивают, например:
.selector {
color: inherit; /* Переопределяем цвет для использования унаследованного значения */
font-size: 14px; /* Задаем свой размер шрифта */
}
Таким образом, вы можете гибко управлять внешним видом вашего контента, устраняя нежелательные стили из пользовательского агента Chrome.
Некоторые браузеры обрабатывают .css файлы по-своему. Чтобы обойти это, вы можете вставить CSS-код непосредственно в HTML-документ. Это позволит вам явно указать браузеру, что ему делать, и он проигнорирует команды из .css файла.
Имейте в виду, что стили, заданные непосредственно в HTML, имеют приоритет над стилями из .css файлов. Таким образом, вы можете гарантировать, что ваши стили будут применены корректно.
Скрыть полосу прокрутки, но сохранить возможность прокрутки
Просмотр состояния :hover в средствах разработчика Chrome
Заморозить экран в отладчике Chrome / панели DevTools для инспекции поповера?
Как сделать выпадающее меню Twitter Bootstrap по наведению, а не по клику
Установить фиксированную ширину столбца таблицы независимо от количества текста в ячейках?