Comment créer un texte vertical

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>

Démonstration

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>

Démonstration

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>

Démonstration