Il arrive dans certains cas, comme moi ce matin, où l’on veuille écrire un texte vertical pour les besoins d’un site internet ou une application web. Il n’y a pas de solution miracle mais après quelques recherches, voici les solutions que j’ai trouvé.
Solution 1 : Utiliser le tag <br>
La plus simple solution, mais qui n’est en aucun cas pratique ni recommandable, à utiliser uniquement en cas de force majeur en attendant d’adapter une autre solution.
<h1> D <br>O <br>O <br> T<br >E<br> C<br>H </h1>
Solution 2 : Utiliser Javascript
Il s’agit de décomposer le texte lettre par lettre et de l’entourer par une span à la quelle on applique un style CSS pour l’afficher en tant que « block »
<!DOCTYPE html>
<html>
<head>
<title>Texte vertical</title>
<style>
h1 span { display: block; }
</style>
</head>
<body>
<h1> DOOTECH </h1>
<script>
var h1 = document.getElementsByTagName('h1')[0];
h1.innerHTML = '<span>' + h1.innerHTML.split('').join('</span><span>') + '</span>';
</script>
</body>
</html>
Solution 3 : Utiliser Em dans le CSS
Dans ce cas précis, on « joue » avec le CSS en affectant une petite largeur (1em) à la balise h1 et en forçant le texte à retourner à la ligne avec letter-spacing: 50px; Il faut aussi ajouter un espace entre chaque lettre (on peut le faire avec javascript).
<!DOCTYPE html>
<html>
<head>
<title>Texte vertical</title>
<style>
h1 { width: 1em; letter-spacing: 50px; font-size: 45px; }
h2 { width: 1em; letter-spacing: 50px; font-size: 45px; }
</style>
</head>
<body>
<h1> D O O T E C H </h1>
<h2> DOOTECH </h2>
<script>
var h2 = document.getElementsByTagName('h2')[0];
h2.innerHTML = h2.innerHTML.split('').join(' ');
</script>
</body>
</html>
