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-appearance
sur 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é none
n'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-mode
proprié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-lr
en 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-mode
pour 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.!important
. Il est toujours préférable de renforcer votre sélecteur. Au lieu de juste.vert
, utilisez quelque chose commeinput[type=range].vert
.Vous pouvez le faire avec des transformations css, mais faites attention à la hauteur / largeur du conteneur. Vous devrez peut-être également le positionner plus bas:
ou l'équivalent de la transformation 3D:
Vous pouvez également l'utiliser pour changer la direction de la diapositive en la réglant sur 180 degrés ou 90 degrés pour l'horizontale ou la verticale respectivement.
la source
Sans changer la position en absolue, voir ci-dessous. Cela prend également en charge tous les navigateurs récents.
pour les navigateurs très anciens, vous pouvez utiliser
-sand-transform: rotate(10deg);
du papier de verre CSSOu utiliser
sélecteur de préfixe comme
-ms-transform: rotate(270deg);
pour IE9la source
transform-origin: center left;
avoir le curseur justifié à gauche et non centré.Source: http://twiggle-web-design.com/tutorials/Custom-Vertical-Input-Range-CSS3.html
la source
C'est très simple. J'avais implémenté en utilisant
-webkit-appearance: slider-vertical
, cela fonctionnait sous chorme, Firefox, Edgela source