J'ajoute généralement une option désactivée avec des espaces comme étiquette.
Abhi Beckert
Réponses:
332
L'approche de l'option désactivée semble être la meilleure et être la mieux prise en charge. J'ai également inclus un exemple d'utilisation de l'optgroup.
L'Unicode a très bien fonctionné pour moi dans jsfiddle, mais quand j'ai essayé de le copier / coller dans mon code, il ne s'est pas traduit correctement. Donc, pour ceux qui ont ce problème, le codage HTML du caractère de dessin de la boîte Unicode horizontale est & # 9472; fileformat.info/info/unicode/char/2500/index.htm et il existe également une option plus lourde à & # 9473; fileformat.info/info/unicode/char/2501/index.htm
JeffG
1
sur Mobile Firefox (et peut-être d'autres navigateurs mobiles), l' disabledoption est affichée avec un bouton radio désactivé à droite ...
GoTo
mais les optgroups sont rendus différemment sur PC et sur mobile, donc l'option désactivée reste la meilleure solution.
GoTo
1
L'encodage du fichier html est également essentiel pour que les caractères "─" apparaissent sous forme de ligne, au lieu de charabia. UFT8 avec BOM pourrait être un bon choix.
Au lieu de mettre une étiquette sur les optgroups, essayez d'ajouter ceci à votre feuille de style: optgroup + optgroup {border-top: 1px solid black} Beaucoup moins ringard qu'un tas de tirets.
Laurence Gonsalves
2
Les étiquettes des groupes optiques doivent décrire le groupe. Si un navigateur implémenté selon la capture d'écran dans la spécification HTML 4.01, l'utilisateur serait confronté à des rangées de tirets et devrait examiner chacun pour découvrir ce qui se trouvait derrière.
Quentin
2
@Laurence: IE7 ne prend pas en charge les styles CSS sur les éléments optgroup ou option.
Du
2
<optgroup style = "border-top: 1px dotted #ccc; margin: 5px 0;"> </optgroup> - ça a l'air cool au moins dans firefox!
Ben Sinclair
1
Un optgroup vide comme celui-ci n'est pas du HTML légal. Vous obtiendrez des erreurs de validation si vous l'utilisez. Je préfère la réponse de james.garriss.
Ariel
22
C'est un vieux fil, mais comme personne n'a posté une réponse similaire, je vais l'ajouter car c'est mon moyen de séparation préféré.
Je trouve que l'utilisation de tirets et autres est quelque peu gênante car elle pourrait ne pas correspondre à la largeur de la zone de sélection. Donc, je préfère utiliser CSS pour créer mes séparateurs .. une simple coloration de fond.
<select><optionstyle="background-color:#cccccc;"disabledselected>Select An Option</option><option>First Option</option><option>Second</option><optionstyle="font-size:1pt;background-color:#000000;"disabled> </option><option>Third</option><option>Fourth</option><optionstyle="font-size:1pt;background-color:#000000;"disabled> </option><option>Fifth</option><option>Sixth</option></select>
génial ! J'ai utilisé min-height: 1px; hauteur max: 1px; rembourrage: 0; au lieu de la taille de la police: 1 pt; pour une ligne 1px
kofifus
15
Si vous ne souhaitez pas utiliser l'élément optgroup, placez les tirets dans un élément option et donnez-lui l'attribut désactivé. Il sera visible, mais grisé.
Salut James, j'aime aussi cette solution mais les lecteurs d'écran liront "désactiver l'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!
Julio
1
Est-il possible d'ajouter une classe à des éléments visuels dont vous ne voulez pas 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/…
james.garriss
En fait, @Julio, vous devez poster ceci comme une nouvelle question. Je suis curieux de savoir, mais je n'ai jamais programmé de lecteurs d'écran auparavant.
james.garriss
9
Au lieu du trait d'union normal, je l'ai remplacé à l'aide d'un symbole de barre horizontale du jeu de caractères étendu, il ne sera pas très agréable si l'utilisateur est dans un autre pays qui remplace ce caractère mais fonctionne bien pour moi. Il existe une gamme de différents chapitres que vous pouvez utiliser pour de superbes effets et aucun CSS n'est impliqué.
La réponse pourrait être améliorée avec un exemple jsfiddle. Cela semble être la solution la plus intégrée ne reposant pas sur des effets secondaires ou des hacks, mais ce serait bien de comparer les visuels d'autres réponses.
raider33
Ne fonctionne pas dans de nombreux navigateurs. (comme d'habitude, les entrées étant une douleur dans le cul)
Quarante
5
Je fais du commentaire de @Laurence Gonsalves une réponse parce que c'est le seul qui fonctionne sémantiquement et ne ressemble pas à un hack.
Essayez d'ajouter ceci à votre feuille de style:
optgroup + optgroup { border-top:1px solid black }
C'est en fait la bonne façon de le faire (surtout, cela n'ajoute pas de contenu vide de sens). J'aime le styler de cette façon (en ajoutant un espace vertical supplémentaire autour du séparateur):optgroup { padding-bottom: 8px; } optgroup:not(:first-child) { padding-top: 8px; border-top: solid 1px #666; }
Nicolas Le Thierry d'Ennequin
3
une autre façon est d'utiliser une image d'arrière-plan css 1x1 sur l'option qui ne semble fonctionner qu'avec firefox et avoir un repli "----"
L'espacement entre les caractères est déterminé par la police et le moteur de rendu. Par exemple, je vois des espaces entre vos tirets sur Chrome (Windows) mais pas sur Safari (Mac).
J'ai choisi d'alterner conditionnellement la couleur et l'arrière-plan. En définissant un ordre de tri et avec vue.js, j'ai fait quelque chose comme ceci:
Réponses:
L'approche de l'option désactivée semble être la meilleure et être la mieux prise en charge. J'ai également inclus un exemple d'utilisation de l'optgroup.
optgroup (de cette façon suce un peu):
option désactivée (un peu mieux):
Et si vous voulez vraiment être fantaisiste, utilisez le caractère de dessin de la boîte Unicode horizontale.
(MEILLEURE OPTION!)
http://jsfiddle.net/JFDgH/2/
la source
disabled
option est affichée avec un bouton radio désactivé à droite ...Essayer:
la source
C'est un vieux fil, mais comme personne n'a posté une réponse similaire, je vais l'ajouter car c'est mon moyen de séparation préféré.
Je trouve que l'utilisation de tirets et autres est quelque peu gênante car elle pourrait ne pas correspondre à la largeur de la zone de sélection. Donc, je préfère utiliser CSS pour créer mes séparateurs .. une simple coloration de fond.
la source
Si vous ne souhaitez pas utiliser l'élément optgroup, placez les tirets dans un élément option et donnez-lui l'attribut désactivé. Il sera visible, mais grisé.
la source
Au lieu du trait d'union normal, je l'ai remplacé à l'aide d'un symbole de barre horizontale du jeu de caractères étendu, il ne sera pas très agréable si l'utilisateur est dans un autre pays qui remplace ce caractère mais fonctionne bien pour moi. Il existe une gamme de différents chapitres que vous pouvez utiliser pour de superbes effets et aucun CSS n'est impliqué.
la source
Définissez une classe en CSS:
Écrivez en HTML:
la source
Je fais du commentaire de @Laurence Gonsalves une réponse parce que c'est le seul qui fonctionne sémantiquement et ne ressemble pas à un hack.
Essayez d'ajouter ceci à votre feuille de style:
Beaucoup moins ringard qu'un tas de tirets.
la source
optgroup { padding-bottom: 8px; } optgroup:not(:first-child) { padding-top: 8px; border-top: solid 1px #666; }
une autre façon est d'utiliser une image d'arrière-plan css 1x1 sur l'option qui ne semble fonctionner qu'avec firefox et avoir un repli "----"
http://jsfiddle.net/yNecQ/6/
ou d'utiliser javascript (jquery) pour:
http://tutorialzine.com/2010/11/better-select-jquery-css3/
voir aussi Comment ajouter une ligne horizontale dans un contrôle de sélection html?
la source
S'il s'agit de WebKit uniquement, vous pouvez utiliser
<hr>
pour créer un véritable séparateur.http://code.google.com/p/chromium/issues/detail?id=99534
la source
Vous pouvez utiliser le tiret cadratin "-". Il n'a pas d'espaces visibles entre chaque personnage.
(Dans certaines polices!)
En HTML:
Ou en XHTML:
la source
Celui-ci est toujours meilleur.
la source
vous pouvez le faire aussi. c'est facile et faites diviseur sélectionner la liste déroulante.
la source
J'ai choisi d'alterner conditionnellement la couleur et l'arrière-plan. En définissant un ordre de tri et avec vue.js, j'ai fait quelque chose comme ceci:
la source