#css #material-table
Вопрос:
У меня есть CSS, который окрашивает строку в моей таблице при наведении курсора.
tr:hover {
background: gray !important;
}
Однако он также выделяет строку фильтра в таблице. Поэтому я осмотрел его и обнаружил, что он имеет <tr class="MuiTableRow-root MuiTableRow-hover"...etc
Итак, мой вопрос в том, как я могу изменить приведенный выше код, чтобы он применялся только к тому классу, который показан выше?
Правка: Первая попытка применить класс.
.MuiTableRow-root MuiTableRow-hover {
tr:hover {
background: gray !important;
}
}
Комментарии:
1. это может помочь вам: developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors
2. Я предполагаю, что вы используете пользовательский интерфейс Material, судя по именам классов, но я не совсем уверен, что вы подразумеваете под «строкой фильтра» — если это верхняя строка с именами столбцов, разве в ней также не должны быть эти классы? Можете ли вы применить пользовательский класс к строкам, на которые хотите навести курсор? Немного больше контекста помогло бы нам дать полезный ответ.
3. Я использую таблицу материалов. В строке фильтры используется другой класс. Поэтому мне нужно только знать, как применить вышеупомянутый tr:наведите курсор на конкретный класс, о котором я упоминал.
4. @Lety Я пытался применить класс, но, похоже, есть вложенные классы. Я отредактировал конец исходного поста, чтобы показать, что я сейчас пытаюсь, но это не работает. Есть какие-нибудь идеи о моей ошибке?
5. @Jon взгляните на правильные ответы. «tr.<имя класса>» получает каждый элемент tr с именем класса, но если селекторы разделены пробелом, он ищет дочерний элемент селектора с этим классом…
Ответ №1:
Как указано в комментариях, пожалуйста, ознакомьтесь с документацией по селекторам классов.
У вас возникли проблемы с объединением класса с тегом элемента.
В этом случае они написаны вместе следующим образом:
tr.MuiTableRow-hover:hover {
background: gray !important;
}
- Когда HTML — тег содержит класс: Напишите тег,
.
а затем класс - Когда HTML — тег содержит внутри какой-либо элемент с определенным классом, разделите их
- Сделайте себе одолжение и найдите учебники по CSS, которые научат вас основам. Это не очень трудно узнать, если у вас есть свободное время
Немного продвинутый-это доверять специфике CSS и не обращать внимания !important
. Если ваш селектор более специфичен (или ваш CSS был загружен позже), ваш стиль будет применен даже без использования !important
.
tr.MuiTableRow-hover:hover {
background: gray;
}
Комментарии:
1. Спасибо, это сработало идеально. Я уже проходил некоторые учебные пособия раньше, но что меня сбило с толку, так это вся вложенность, множество применяемых стилей, и мне следовало убрать tr из { }.
2. Конечно, это понятно. Это сбивает с толку, когда пытаешься объединить все уроки сразу. CSS допускает только один для
{}
каждого применяемого стиля. Но есть инструменты, которые позволяют использовать вложенный синтаксис и писать его как CSS для вас (например, SASS/SCSS ). Рад помочь.
Ответ №2:
Правило css должно выглядеть следующим образом:
tr.MuiTableRow-hover:hover {
background: gray !important;
}
Обратите внимание, что использование !important
не является лучшей практикой, поэтому лучше, если вы попытаетесь избежать этого, если это возможно