Comme d'autres l'ont souligné, le concept de règle verticale ne correspond pas aux idées originales qui sous-tendent la structure et la présentation des documents HTML. Cependant, de nos jours (en particulier avec la prolifération des applications web), il existe un petit nombre de scénarios où cela serait effectivement utile.
Prenons l'exemple d'un menu de navigation horizontal fixé en haut de l'écran, semblable à la barre de menu de la plupart des applications GUI à fenêtres. Vous disposez de plusieurs éléments de menu de niveau supérieur, disposés de gauche à droite, qui, lorsque vous cliquez dessus, ouvrent des menus déroulants. Il y a quelques années, il était courant de créer ce menu à l'aide d'un tableau à une seule rangée, mais il s'agit là d'un mauvais code HTML et il est largement reconnu que la meilleure façon de procéder est d'utiliser une liste avec des feuilles de style CSS fortement personnalisées.
Supposons maintenant que vous souhaitiez regrouper des éléments similaires, mais que vous ajoutiez un séparateur vertical entre les groupes, afin d'obtenir quelque chose comme ceci :
[Item 1a] [Item 1b] | [Item 2a] [Item 2b]
Utilisation <hr style="width: 1px; height: 100%; ..." />
fonctionne, mais peut être considéré comme sémantiquement incorrect car vous modifiez la fonction de cet élément. En outre, vous ne pouvez pas l'utiliser dans certains éléments pour lesquels la DTD HTML n'autorise que des éléments de niveau inline (par exemple, dans un élément de type <span>
).
Une meilleure option serait <span style="display: inline-block; width:1px; height:100%; background:#000; margin: 0 2px;"></span>
Cependant, tous les navigateurs ne prennent pas en charge l'option display: inline-block;
La seule véritable option au niveau de la ligne est donc d'utiliser une image comme suit :
<img src="pixel.gif" alt="|" style="width:1px; height:100%; background:#000; margin: 0 2px;" />
Cela présente l'avantage supplémentaire d'être compatible avec les navigateurs en mode texte (comme lynx), car le caractère pipe est affiché à la place de l'image. (Je suis toujours contrarié par le fait que M$IE utilise incorrectement le texte alt comme info-bulle ; c'est à cela que sert l'attribut title).
20 votes
C'est une question caduque, mais avec la spécification CSS3 maintenant disponible, vous pourriez utiliser transform:rotate(90deg) pour créer une règle verticale et horizontale.
3 votes
Si vous utilisez flexbox comme lignes (display : flex ; flex-direction : row ;)
hr
deviennent automatiquement verticaux. Il vous suffit de définir sa valeurheight
(par exemple, height : 80% ;).