Tout d'abord, définissez une hauteur supérieure à la largeur. En théorie, c'est tout ce dont vous avez besoin. La spécification HTML5 le suggère :
... l'UA a déterminé l'orientation du contrôle à partir du rapport entre les propriétés de hauteur et de largeur spécifiées dans la feuille de style.
Opera l'avait implémenté de cette façon, mais Opera utilise maintenant WebKit Blink . À ce jour, aucun navigateur n'implémente de curseur vertical basé uniquement sur la hauteur supérieure à la largeur.
Quoi qu'il en soit, il est nécessaire de définir une hauteur supérieure à la largeur pour que la mise en page soit correcte entre les navigateurs. L'application d'un rembourrage gauche et droit aidera également à la mise en page et au positionnement.
Pour Chrome, utilisez -webkit-appearance: slider-vertical.
Pour IE, utilisez writing-mode: bt-lr.
Pour Firefox, ajoutez un orient="vertical"attribut au html. Dommage qu'ils l'aient fait de cette façon. Les styles visuels doivent être contrôlés via CSS, pas HTML.
input[type=range][orient=vertical]
{
writing-mode: bt-lr; /* IE */
-webkit-appearance: slider-vertical; /* WebKit */
width: 8px;
height: 175px;
padding: 0 5px;
}
<input type="range" orient="vertical" />
Avis de non-responsabilité:
Cette solution est basée sur les implémentations actuelles du navigateur de propriétés CSS non encore définies ou non finalisées. Si vous avez l'intention de l'utiliser dans votre code, préparez-vous à effectuer des ajustements de code à mesure que de nouvelles versions de navigateur sont publiées et que les recommandations w3c sont terminées.
MDN contient un avertissement explicite contre l'utilisation -webkit-appearancesur le Web:
N'utilisez pas cette propriété sur les sites Web: non seulement elle n'est pas standard, mais son comportement change d'un navigateur à l'autre. Même le mot-clé nonen'a pas le même comportement sur chaque élément de formulaire sur différents navigateurs, et certains ne le prennent pas du tout en charge.
La légende de la démonstration du curseur vertical dans la documentation IE indique à tort que le réglage de la hauteur supérieure à la largeur affichera un curseur de plage verticalement, mais cela ne fonctionne pas . Dans la section de code , il ne définit clairement ni la hauteur ni la largeur, mais utilise à la place writing-mode. La writing-modepropriété, telle qu'implémentée par IE , est très robuste. Malheureusement, les valeurs définies dans le projet de travail actuel de la spécification au moment de la rédaction de cet article sont beaucoup plus limitées. Si les futures versions d'IE abandonnent le support de bt-lren faveur de l'actuel proposé vertical-lr(qui serait l'équivalent de tb-lr), le curseur s'afficherait à l'envers. Très probablement, les futures versions étendraient lawriting-modepour accepter de nouvelles valeurs plutôt que de supprimer la prise en charge des valeurs existantes. Mais, il est bon de savoir à quoi vous avez affaire.
-webkit-appearance- je ne le savais pas. Cela change tout.