Le rendu d'une hiérarchie de “OPTION”dans un “SELECT” de la balise
Mon problème est le HTML et CSS liées. J'ai une hiérarchie du type de structure que je veux afficher dans une liste. La hiérarchie se compose des Pays, des États et des Villes (c'est à trois niveaux de profondeur).
Je veux afficher la liste à l'intérieur d'une liste de sélection, chaque type d'élément (Pays, État, Ville) doit être sélectionné. Les éléments devraient apparaître en retrait:
United States
- Hawaii
-- Kauai
- Washington
-- Seattle
-- Chelan
Le problème, c'est l'indentation. Je suis en train d'utiliser la marge de gauche ou de padding-left pour le retrait des étiquettes, ce qui semble correct sous FireFox mais pas dans IE7. Ceci est un exemple de la liste de sélection:
<select name="Something">
<option style="padding-left: 0">United States</option>
<option style="padding-left: 20px">Hawaii</option>
<option style="padding-left: 40px">Kauai</option>
<option style="padding-left: 20px">Washington</option>
<option style="padding-left: 40px">Seattle</option>
<option style="padding-left: 40px">Chelan</option>
</select>
Je veux obtenir la cohérence de l'indentation dans les navigateurs sans utiliser des hacks CSS.
- voir aussi stackoverflow.com/questions/1037732/...
Vous devez vous connecter pour publier un commentaire.
deceze manière est beaucoup mieux et c'était ma première idée. Comme une alternative si cela ne fonctionne pas, c'est que vous pouvez utiliser des espaces insécables dans la valeur du tag:
C'est loin d'être jolie, mais il pourrait travailler pour vous, si le "optgroup" ne fonctionne pas.
's tiret de Chrome est petite et est également rendu que la valeur sélectionnée. Si cela n'est pas souhaitable, essayez 
Le rendu de
SELECT
éléments est en grande partie pour le navigateur, vous avez très peu d'influence sur leur présentation. Certains navigateurs évidemment vous permettre plus d'options de personnalisation que les autres, c'est à dire qui se passe pour permettre à de très peu (gasp, qui l'aurait thunk ;)). Si vous avez besoin de très personnaliséeSELECT
éléments, vous aurez besoin d'utiliser JavaScript ou re-créer quelque chose qui se comporte comme unSELECT
mais elle est faite d'un tas deDIV
s et des cases à cocher ou quelque chose qui s'étendent.Cela dit, je pense que vous êtes plutôt à la recherche d'
"OPTGROUP"
s:Chaque navigateur affichera différemment, mais ils seront affichés dans un distinctif de la mode d'une manière ou d'une autre. Notez bien que officiellement en HTML4, vous ne pouvez pas imbriquer
OPTGROUP
s.Juste pour le plaisir des visiteurs, je me dois de partager cette solution que j'ai imaginé: http://jsfiddle.net/n9qpN/
Décorer les options avec le niveau de la classe
Nous pouvons maintenant utiliser jQuery pour reformater le contenu de la
select
élémentCela peut être étendu à n'importe quel niveau
N'est pas cette méthode de groupement créer plus de problèmes qu'elle n'en résout? En tant qu'utilisateur, de celles qui dois-je choisir? Il y a tout avantage à choisir quelque chose de plus spécifique que le pays?
Si le problème, c'est que vous n'avez qu'un champ de base de données pour les stocker dans, pourquoi ne pas avoir trois sélectionnez les cases (en faisant 2 ou 3 en option) et il suffit de stocker le plus spécifique?:
Essayez d'utiliser  
HTML:
Ajoutant le Non espace insécable ( ) ne fonctionne pas pour moi.
J'ai ajouté le texte suivant:
String.fromCharCode(8194);
J'ai été en mesure d'accomplir cette tâche en utilisant le NO-BREAK SPACE de caractères unicode. http://www.fileformat.info/info/unicode/char/00a0/index.htm
Copier-coller le caractère à partir de la page dans le code et le tour est joué:
https://jsfiddle.net/fwillerup/r9ch988h/
(
ne fonctionne pas pour moi parce que j'ai été en utilisant une bibliothèque de fantaisie sélectionnez les cases qui permettrait d'injecter de mot à mot.)