CSS et sa légendaire facilité

CSS et sa légendaire facilité (le 6 avril 2016)

Des fois, CSS a l’art de m’amuser. La difficulté n’est pas toujours là où l’on croit.

Je travaille actuellement sur un template monstrueusement compliqué, et au milieu de plein de trucs bien retors, j’ai une chose simple à faire. Faire un lien précédé d’un « > ». Enfin, je dis « simple », à vous de juger.

Le site en question a supprimé le soulignement des liens par défaut et l’active quand on les survole ou quand on a le focus clavier dessus. Rien de bien extraordinaire.

Je me dis qu’un pseudo-élément before suffira. Très logiquement, je fais ainsi :

.arrow-left:before {
content: '>\a0';
speak: none;
}

Petit souci, quand on survole le lien, le soulignement apparait en-dessous du « > ». Pas de souci, je me dis que je vais l’annuler. Sauf que cela ne marche pas, la propriété du pseudo-élément est héritée du lien. Sauuuuuuuuuuf…

En cherchant un peu, je trouve une solution dans la spécification CSS 2.1 de text-decoration (oui rien que cela).

Note that text decorations are not propagated to floating and absolutely positioned descendants, nor to the contents of atomic inline-level descendants such as inline blocks and inline tables.

Le soulignement n’est pas propagé si le pseudo-élément est de type inline-block. Soit.

.arrow-left:before {
content: '>\a0';
display: inline-block;
speak: none;
}

Sauvé ! Cela marche partout. Sauuuuuuuuuuf…

Sous Internet Explorer 8… jusqu’au 11 compris. C’est un bug. En continuant de chercher, je trouve une solution bizarre, mais fonctionnelle.

.arrow-left:before {
content: '>\a0';
text-decoration: underline;
display: inline-block;
speak: none;
}
/* IE… */
.arrow-left:before,
.arrow-left:focus:before,
.arrow-left:hover:before,
.arrow-left:active:before {
text-decoration: none;
}

En gros, tout redéfinir explicitement pour ré-écraser le tout après. Là notre ami Internet Explorer ne bronche plus. Voici un pen qui montre le tout.

Qui a dit que CSS était simple ? Hé bien, qu’il/elle sorte. :)

Permalien :

Flux RSS des commentaires de ce billet : https://www.nicolas-hoffmann.net/rss/commentaires.php?id_news=1690


Aucun commentaire pour le moment.

Ajouter un commentaire









L'option « Se souvenir de mes informations » utilise un cookie, elle ne sera pas effective si vous les avez désactivés.

Les balises HTML ne seront pas interprétées, il est donc inutile d'en mettre. Par contre, les sauts de lignes de votre commentaire seront pris en compte, ne mettez donc pas de <br />, le site s'en chargera. Bien sûr, un commentaire vide ne sera pas ajouté !

L'auteur (autrement dit moi) n'est pas responsable des éventuelles fautes d'orthographe dans les commentaires.
Tout propos raciste et/ou insultant sera supprimé sans préavis. Les commentaires hors de propos destinés à faire de la pub pour des sites seront également supprimés sans ménagement.

Je vous prie de me pardonner, j'ai énormément de mal à lire le "langage" SMS, il n'est donc pas du tout interdit de s'abstenir de l'utiliser. Qui plus est, vous avez sûrement un clavier digne de ce nom et pas celui d'un téléphone portable. Ne vous gênez pas pour utiliser l'option "Prévisualiser" si vous voulez vous relire avant de poster, je vous en remercie d'avance !

Cet article a été écrit par Nicolas Hoffmann.

Ce site est la propriété de Nicolas Hoffmann.
Tous droits réservés, les textes du blog sont publiés sous licence CC BY-NC-SA.