Что делать, если не работает CSS-класс?

303
15 мая 2022, 21:50

Я пишу css-правило

.nav-users {
  color: red;
}

но на странице ничего не меняется: цвет остаётся серым.

Answer 1

Браузеры предоставляют отличные инструменты для отладки css. Не надо ждать, пока кто-то угадает, в чём проблема. Надо просто взять и посмотреть, что же происходит. Покажу на примере Хрома.

Сначала надо обновить страницу со сбросом кэша.
В большинстве браузеров это Ctrl + F5.

Если не помогло, то по исследуем по следующему плану:

  1. Щёлкнуть проблемный элемент правой кнопкой и выбрать пункт Исследовать элемент:

  2. Появится панель отладки, на которой на вкладке Elements выделен кликнутый элемент. Если нужен другой, можно перейти к нему. Затем следует обратить внимание на вкладки Styles и Computed:

  3. Если в element.style есть интересующее свойство, то

    • если в html-разметке прописан стиль в атрибуте style, удаляем оттуда лишнее
    • если нет, кончаем читать этот ответ и переходим к отладке скриптов, которые этот стиль выставляют (либо перебиваем !importantом, что делать крайне не рекомендуется)

  4. На вкладке Styles надо найти свой селектор.
    Если его там нет, то проблема в опечатке или подключении css-файла.

  5. Как видим, свойство зачёркнуто, но восклицательного знака (говорящего о неверном значении) нет. Это означает, что есть другое правило, имеющее больший приоритет. В простых случаях достаточно посмотреть на вышестоящие правила и понять, что там надо. В более запутанных стоит заглянуть на вкладку Computed и посмотреть, какие вообще значения влияют:

  6. Здесь видно, что селектор .so-header .navigation .-link перебивает наше правило.
    Кликом по стрелочке можно перейти к самому правилу, но нам это сейчас не нужно.

  7. Теперь мы знаем, что приоритет используемого правила 0 id, 3 класса, 0 тегов.
    Если мы уверены, что наше правило идёт после переопределяемого, то нам достаточно той же силы. Если нет, то надо побольше.

    Самый простой способ - это сделать так:

    .nav-users.nav-users.nav-users.nav-users {
      color: red;
    }
    

    Но руководствуясь здравым смыслом, стоит всё-таки сделать так:

    .so-header .navigation .nav-users {
      color: red;
    }
    

    или так:

    .so-header .navigation .-link.nav-users {
      color: red;
    }
    

    Должно заработать:

  8. Если всё равно не работает.

    На шаге 6 стоило заглянуть в переопределяющий стиль - возможно, в нём есть !important:

    В таком случаем нам тоже придётся его использовать:

    .so-header .navigation .-link.nav-users {
      color: red !important;
    }
    

Если проблемы возникают только при печати, надо включить эмуляцию @media print. Для этого надо нажать в девтулах Ctrl+Sift+P и в появившемся окне написать media:

после чего выбрать строчку Emulate CSS print media.

READ ALSO
Изменить кодировку cmd при старте jar

Изменить кодировку cmd при старте jar

Делаю консольное приложение, которое получает на вход стороку и фильит, а затем выводит по заданному фильтру соответствующие словаПри двойном...

226
вывод в лог русские буквы

вывод в лог русские буквы

Хочу проверить правильность заполнения из проперти и вывожу в логНо там абракадабра непонятная

310
Преобразование Map с помощью Stream API

Преобразование Map с помощью Stream API

Имеется структура типа Map<String, List<MyClass>>Как с помощью Stream API преобразовать ее к типу Map<String, List<MyClass

298
Как впихнуть в SQL запрос переменную?

Как впихнуть в SQL запрос переменную?

Есть postgres DB, пользователь вводит почту и пароль, по этим данным нужно вывести ему из другой таблицы его счетаКак в запросе в Java закинуть эту...

279