J'affiche des liens qui sont marqués comme lus dans une base de données lorsqu'un utilisateur clique dessus. Je veux styliser les liens cliqués et non cliqués en fonction des informations de la base de données et non de l'historique du navigateur de l'utilisateur. Jusqu'à présent, lorsque j'utilise:
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 }
et
<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>
et un lien a été visité, mais pas à partir de cette page (il est toujours marqué comme non lu dans la base de données), j'obtiens des résultats étranges. Par exemple, seule la couleur fonctionnera, mais pas le poids, etc.
Est-il possible qu'un style remplace un autre en cas de conflit?
Merci!
EDIT: code mis à jour pour clarifier
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 }
Tout d'abord, si vous ne voulez pas que l'historique des navigateurs interfère avec vos styles, utilisez la pseudo-classe: visité pour correspondre au style du lien non visité, puis appliquez simplement les classes manuellement en fonction de vos enregistrements de base de données.
En ce qui concerne les styles en conflit, tout dépend de la spécificité du sélecteur, et si deux avec les mêmes propriétés sont en conflit (ont la même spécificité), le dernier "gagne".
Procédez comme suit:
a:link,
a:visited {
font-weight: bold;
color: black;
}
a.read {
color: #444;
}
Vous pouvez utiliser la directive! Important. par exemple.
.myClass
{
color:red !important;
background-color:white !important;
}
Placez! Important après chaque style comme indiqué ci-dessus lorsque vous devez remplacer tout autre style également appliqué.
Essayer:
a.unread, a:visited.unread {style 1}
a.read, a:visited.read {style 2}
Premièrement, vérifiez votre code HTML pour vous assurer que class="read"
et class="unread"
sont ajoutés à vos liens.
Deuxièmement, essayez d'ajouter a
dans votre .read
et .unread
Règles CSS:
a.read { /* ... */ }
a.unread { /* ... */ }
Si cela ne fonctionne pas, essayez d'ajouter un espace avant !important
. Je ne pense pas que cela soit nécessaire, mais la plupart des exemples que j'ai vus l'inclure.
Vous pouvez définir la spécificité de vos sélecteurs CSS.
a { /* style 1 */ }
serait remplacé par
div a { /* style 2 */ }
où div
est un élément parent de a
Plus de détails peuvent être trouvés sur Selectutorial .