255 votes

séparateur d'options de sélection html

Comment faire un séparateur dans une balise de sélection ?

New Window
New Tab
-----------
Save Page
------------
Exit

1 votes

J'ajoute généralement une option désactivée dont le libellé est un espace blanc.

415voto

Alex Kinnee Points 1638

L'approche de l'option handicapée semble être la plus belle et la mieux soutenue. J'ai également inclus un exemple d'utilisation de l'optgroup.

optgroup (cette méthode est plutôt mauvaise) :

<select>
    <optgroup>
        <option>First</option>
    </optgroup>
    <optgroup label="_________">
        <option>Second</option>
        <option>Third</option>
    </optgroup>
</select>

option désactivée (un peu mieux) :

<select>
    <option>First</option>
    <option disabled>_________</option>
    <option>Second</option>
    <option>Third</option>
</select>

Et si vous voulez être vraiment fantaisiste, utilisez le caractère horizontal de dessin de boîte unicode.
(MEILLEURE OPTION !)

<select>
    <option>First</option>
    <option disabled></option>
    <option>Second</option>
    <option>Third</option>
</select>

http://jsfiddle.net/JFDgH/2/

26 votes

L'Unicode a bien fonctionné pour moi dans jsfiddle, mais lorsque j'ai essayé de le copier/coller dans mon code, il n'a pas été traduit correctement. Donc pour ceux qui ont ce problème, l'encodage HTML pour le caractère unicode horizontal de dessin de boîte est ─. fileformat.info/info/unicode/char/2500/index.htm et il y a aussi une option plus lourde à ━ fileformat.info/info/unicode/char/2501/index.htm

2 votes

Sur Mobile Firefox (et peut-être sur d'autres navigateurs mobiles), l'option disabled est affichée avec un bouton radio désactivé à droite...

0 votes

Mais les optgroups sont rendus différemment sur PC et sur mobile, donc l'option désactivée reste la meilleure solution.

81voto

Tina Orooji Points 1102

Essayez :

<optgroup label="----------"></optgroup>

45 votes

Au lieu de mettre une étiquette sur les optgroups, essayez d'ajouter ceci à votre feuille de style : optgroup + optgroup { border-top : 1px solid black } C'est beaucoup moins ringard qu'un tas de tirets.

2 votes

Les étiquettes d'Optgroup doivent décrire le groupe. Si un navigateur mettait en œuvre la capture d'écran de la spécification HTML 4.01, l'utilisateur serait confronté à des rangées de tirets et devrait examiner chacun d'entre eux pour savoir ce qui se cache derrière.

2 votes

@Laurence : IE7 ne supporte pas les styles css sur les éléments optgroup ou option. Du moins pas les bordures

17voto

james.garriss Points 3647

Si vous ne souhaitez pas utiliser l'élément optgroup, placez les tirets dans un élément option et attribuez-lui l'attribut disabled. Il sera visible, mais en grisé.

<option disabled>----------</option>

3 votes

Bonjour James, j'aime bien cette solution aussi mais les lecteurs d'écran liront "disable option dash dash dash dash..." ce qui peut être très déroutant pour les utilisateurs handicapés... avez-vous une idée de comment nous pourrions éviter cela ? merci !

1 votes

Est-il possible d'ajouter une classe aux éléments visuels que l'on ne veut pas faire parler, puis d'ajouter une commande ARIA qui masque/désactive la classe ? Peut-être quelque chose comme l'une des techniques utilisées ici ? asurkov.blogspot.com/2012/02/

0 votes

En fait, @Julio, vous devriez poster cette question comme une nouvelle question. Je suis curieux de savoir, mais je n'ai jamais programmé pour les lecteurs d'écran auparavant.

10voto

user511941 Points 81

Au lieu de l'hymne normal, je l'ai remplacé par un symbole de barre horizontale provenant du jeu de caractères étendu. Cela ne sera pas très joli si l'utilisateur est dans un autre pays qui remplace ce caractère, mais cela fonctionne bien pour moi. Il y a toute une gamme de caractères différents que vous pouvez utiliser pour obtenir de grands effets et il n'y a pas de css impliqué.

<option value='-' disabled></option>

4voto

ebricca Points 77

Une autre solution consiste à utiliser une image d'arrière-plan css 1x1 sur l'option qui ne semble fonctionner qu'avec firefox et à avoir une solution de repli "----".

<option value="" disabled="disabled" class="SelectSeparator">----</option> 

.SelectSeparator
    {
      background-image:  url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==);
      color:black;
      background-repeat:repeat-x;
      background-position:50% 50%;
      background-attachment:scroll;
}

http://jsfiddle.net/yNecQ/6/

ou d'utiliser le javascript (jquery) pour :

-hide the select element and 
-show a div which can be completely styled and 
-reflect the div state onto the select for the form submit

http://tutorialzine.com/2010/11/better-select-jquery-css3/


voir aussi Comment ajouter une ligne horizontale dans un contrôle de sélection html ?

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