Как установить один стиль для переопределения другого конфликтующего стиля в CSS?
Я показываю ссылки, которые помечаются как прочитанные в базе данных, когда пользователь нажимает на них. Я хочу, чтобы стиль кликов и незакрепленных ссылок основывался на информации базы данных, а не истории браузера пользователя. Пока я использую:
10 a:visited {
11 color: #444;
12 }
13
14 a:link {
15 font-weight: bold;
16 color:black;
17 }
18
19 .read {
20 color: #444!important;
21 }
22
23 .unread {
24 font-weight: bold!important;
25 color:black!important;
26 }
и
<tr class="even">
<td><a class="read" href="example.com">blah</a></td>
</tr>
<tr class="odd">
<td><a class="unread" href="example.org">foo</a></td>
</tr>
и ссылка была посещена, но не с этой страницы (она по-прежнему отмечена как непрочитанная в базе данных), я получаю странные результаты. Например, только цвет будет работать, но вес не будет и т.д.
Возможно ли, чтобы один стиль переопределял другой, когда они конфликтуют?
Спасибо!
EDIT: обновленный код для уточнения
Решение
10 a:link,
11 a:visited {
12 font-weight: bold;
13 color: black;
14 }
15
16 a.read {
17 color: #444;
18 font-weight: lighter !important; /* omission or even "normal" didn't work here. */
19 }
20
21 a.unread {
22 font-weight: bold !important;
23 color: black !important;
24 }
Ответы
Ответ 1
Прежде всего, если вы не хотите, чтобы браузеры имели историю, чтобы вмешиваться в ваши стили, используйте псевдокурс: visited для соответствия стилю не посещаемой ссылки, а затем просто применяйте классы вручную на основе вашей базы данных записи.
Что касается конфликтующих стилей, то все о specificity селектора, и если конфликтуют два с теми же свойствами (имеют одинаковую специфичность ) последний "побеждает".
Сделайте это:
a:link,
a:visited {
font-weight: bold;
color: black;
}
a.read {
color: #444;
}
Ответ 2
Вы можете использовать важную директиву. например.
.myClass
{
color:red !important;
background-color:white !important;
}
Поместите! важно после каждого стиля, как показано выше, когда вам нужно переопределить любые другие стили, которые также применяются.
Ответ 3
Try:
a.unread, a:visited.unread {style 1}
a.read, a:visited.read {style 2}
Ответ 4
Один, проверьте свой HTML, чтобы убедиться, что class="read"
и class="unread"
добавлены в ваши ссылки.
Два, попробуйте добавить a
в правила CSS .read
и .unread
:
a.read { /* ... */ }
a.unread { /* ... */ }
Если это не сработает, попробуйте добавить пробел до !important
. Я не думаю, что это требуется, но большинство примеров, которые я видел, включают его.
Ответ 5
Вы можете определить специфику ваших селекторов CSS.
a { /* style 1 */ }
будет переопределено
div a { /* style 2 */ }
где div
является родительским элементом a
Более подробную информацию можно найти на Selectutorial.