89 votes

Hauteur d'une boîte de sélection HTML (liste déroulante)

Quelqu'un peut-il confirmer que son no possibilité de modifier la hauteur d'une liste déroulante qui s'affiche lorsque vous cliquez sur une boîte de sélection.

L'attribut size du select le fait ressembler à une liste, l'attribut height dans le CSS ne fait pas grand chose non plus.

0 votes

La liste déroulante est un contrôle au niveau de l'application, et non du client. (triste)

96voto

scunliffe Points 30964

Confirmé.

La partie qui descend est réglée sur l'un ou l'autre :

  1. La hauteur nécessaire pour afficher toutes les entrées, ou
  2. La hauteur nécessaire pour montrer x (avec des barres de défilement pour voir les entrées restantes), où x est
    • 20 dans Firefox et Chrome
    • 30 dans IE 6, 7, 8
    • 16 pour Opera 10
    • 14 pour Opera 11
    • 22 pour Safari 4
    • 18 pour Safari 5
    • 11 dans IE 5.0, 5.5
  3. Dans IE/Edge, s'il n'y a pas d'options, une liste stupidement haute de 11 entrées vides.

Pour (3) ci-dessus, vous pouvez voir les résultats dans ceci JSFiddle

0 votes

@scunliffe comment régler (1) dans chrome

0 votes

Si vous définissez size="1" ou rien puisque c'est la valeur par défaut, votre sélection sera une liste déroulante plutôt qu'une liste statique verticale dans la page. Toutefois, comme nous l'avons indiqué, la hauteur réelle de la liste déroulante est déterminée par le navigateur et, en tant que développeurs, nous n'avons aucun contrôle sur la hauteur de la liste.

4 votes

@scunliffe Chapeau bas pour les comptages fournis :)

9voto

Raman Sahasi Points 14959

NON . Il n'est pas possible de modifier la hauteur d'une liste déroulante de sélection, car cette propriété est propre au navigateur.

Cependant, si vous voulez cette fonctionnalité, il existe de nombreuses options. Vous pouvez utiliser bootstrap dropdown-menu et définir son max-height propriété. Quelque chose comme ça.

$('.dropdown-menu').on( 'click', 'a', function() {
    var text = $(this).html();
    var htmlText = text + ' <span class="caret"></span>';
    $(this).closest('.dropdown').find('.dropdown-toggle').html(htmlText);
});

.dropdown-menu {
    max-height: 146px;
    overflow: scroll;
    overflow-x: hidden;
    margin-top: 0px;
}

.caret {
      float: right;
    margin-top: 5%;
}

#menu1 {
    width: 160px; 
    text-align: left;
}

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<div class="container" style="margin:10px">
  <div class="dropdown">
    <button class="btn btn-default dropdown-toggle" type="button" id="menu1" data-toggle="dropdown">Tutorials
    <span class="caret"></span></button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="menu1">
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
    </ul>
  </div>
</div>

5voto

mkoryak Points 18135

J'ai travaillé sur un plugin jquery de remplacement de la liste déroulante pour combattre ce problème. A ce jour, il est presque impossible de le distinguer d'un dropdown natif en termes d'apparence et de fonctionnalités. fonctionnalité .

Voici une démo (ainsi qu'un lien vers les téléchargements) : http://programmingdrunk.com/current-projects/dropdownReplacement/

voici la page du projet du plugin :

http://plugins.jquery.com/project/dropdownreplacement

(mise à jour :) la page du plugin jquery semble ne plus fonctionner. Je ne mettrai probablement pas mon plugin sur leur nouveau site quand ils le feront fonctionner, alors n'hésitez pas à utiliser le lien programmingdrunk.com pour la démo/le téléchargement.

0 votes

Idée intéressante - j'aime bien la possibilité d'habiller la fausse liste de sélection (je trouve que beaucoup d'entre elles reprennent par défaut le thème "natif" du système d'exploitation et ont donc l'air "bizarres"), et la possibilité de contrôler le contenu de la liste est pratique (car IE fournit très peu d'options de style pour les éléments d'option).

0 votes

Le dernier lien de cette réponse est mort !

0 votes

Oui, mais la page de démonstration est une meilleure ressource que le site du plugin. elle contient également un téléchargement. je mettrai à jour la réponse, merci.

2voto

Iman Shafiei Points 18

Je sais que ce n'est pas la meilleure pratique pour changer la hauteur de la select mais il y a un code qui peut vous aider à changer la hauteur.

Utilisation de la size de l'attribut select étiquette :

<select onfocus='this.size=6;' onblur='this.size=6;' onfocusout='this.size=null;' onchange='this.size=6; this.blur();'>
    <option>Option 1</option>
    <option>Option 2</option>
    <option>Option 3</option>
    <option>Option 4</option>
    <option>Option 5</option>
    <option>Option 6</option>
    <option>Option 7</option>
    <option>Option 8</option>
    <option>Option 9</option>
    <option>Option 10</option>
    <option>Option 11</option>
    <option>Option 12</option>
    <option>Option 13</option>
    <option>Option 14</option>
    <option>Option 15</option>
</select>

2voto

Aniqa Arif Points 29

En fait, vous le pouvez ! Ne t'embête pas avec le javascript... J'étais juste coincé sur la même chose pour un site web que je fais et si vous augmentez l'attribut 'font-size' dans le CSS pour la balise alors il augmente automatiquement la hauteur aussi. C'est insignifiant, mais c'est quelque chose qui me dérange beaucoup.

2 votes

Je suppose que l'objectif est d'afficher plus de choix dans la liste déroulante, et non pas de prendre plus de place, ce qui est le cas avec cette réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X