Voici une méthode CSS pure qui ne nécessite aucun élément wrapper inutile.En prime, vous pouvez non seulement ajuster l'épaisseur du retrait sur des prises, mais vous pouvez contrôler sa couleur séparément de la couleur du texte:
.strikeout {
font-size: 4em;
line-height: 1em;
position: relative;
}
.strikeout::after {
border-bottom: 0.125em solid red;
content: "";
left: 0;
margin-top: calc(0.125em/2 * -1);
position: absolute;
right: 0;
top: 50%;
}
<span class="strikeout">Struck out text</span>
Utilisez des couleurs RGBA pour faire le semi-strikeout transparent:
.strikeout {
font-size: 4em;
position: relative;
}
.strikeout::after {
border-bottom: 0.125em solid rgba(255, 0, 0, 0.5);
content: "";
left: 0;
line-height: 1em;
margin-top: calc(0.125em/2 * -1);
position: absolute;
right: 0;
top: 50%;
}
<span class="strikeout">Struck out text</span>
Ou même faites du barré un dégradé! Il suffit d'utiliser un background
combiné avec un height
, à la place d'un border
:
.strikeout {
font-size: 4em;
line-height: 1em;
position: relative;
}
.strikeout::after {
background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 0, 0, 1), rgba(0, 255, 0, 1), rgba(0, 0, 255, 1), rgba(255, 255, 255, 0));
content: "";
height: 0.125em;
left: 0;
margin-top: calc(0.125em/2 * -1);
position: absolute;
right: 0;
top: 50%;
}
<span class="strikeout">Struck out text</span>
Cela fonctionne dans IE9 (gradient de sans) et jusqu'à - ou même IE8 si vous utilisez le seul colon :after
syntaxe et écrire manuellement la valeur négative margin-top
au lieu d'utiliser calc()
.
Le principal inconvénient est que cela ne fonctionne que sur une seule ligne de texte. Mais bon, vous prenez ce que vous pouvez obtenir ;-)
Vous pouvez vérifier [transparent strikethrought sur le texte] (http://stackoverflow.com/questions/24082524/css-text-with-transparent-strikethrought) pour un effet de transparence sur le texte. –