Voici une technique moderne avec le display:grid
pour faire une superposition d’un texte sur une image, le tout dans un lien.
Première base de départ, un lien avec dedans une image et un texte dans une span.
<a href="https://jenseign.com"> <img src="…" alt="jenseign"> <span>jenseign.com</span> </a>
Pour réserver l’effet à certains éléments, on va rendre plus spécifiques les liens en ajoutant une class. Je propose de nommer mes liens spéciaux ‘.a‑img-txt’.
<a class="a-img-txt" href="https://jenseign.com"> <img class="a-img" src="…" alt="jenseign"> <span class="a-txt">jenseign.com</span> </a>
Pour le CSS, le lien a pour display:grid
et ses enfants (img et span) occupent la même aire (col 1/-1 et row 1/-1), automatiquement ils se superposeront.
On ajoute l’effet avec :hover, opacity et transition
.
On centre le texte avec le combo display:flex; align-items:center; justify-content:center;
.a-img-txt{ display:grid; } /* les enfants se superposent */ .a-img-txt>*{ grid-area:1/1/-1/-1; /* raccourci pour grid-row et grid-column */ } /* le texte */ .a-txt{ display:flex; justify-content:center; align-items:center; color:#fff; opacity:0; transition:opacity .8s; } /* les couleurs c1 et c2 */ .c1{ background:#ff6600cc; /* avec alpha */ } .c2{ background:#6600ffcc; /* avec alpha */ } /* le survol */ .a-txt:hover{ opacity:1; } /* la déco */ body{ background:#222; margin:24px; font-family:sans-serif; font-size:21px; display:grid; grid-template-columns:1fr 1fr; grid-gap:24px; gap:24px; } img{ max-width:100%; height:auto; } a{ text-decoration:none; }
Le CodePen
See the Pen survol d’image et texte + lien by Benoît Wimart (@benoitwimart) on CodePen.