2012-12-12 2 views
0

j'ai eu souvent les suivantes sur un formulaire:ID HTML uniques sur une page

input#userid{ 
    left : 10px; 
    top:130px; 
    width : 180px; 
} 

label#userid{ 
    left : 10px; 
    top:156px; 
} 

Je sais que ids sur une page doit être unique et ont toujours considéré ce qui précède pour être unique. Maintenant, cependant, je lis à propos de "label for" et je me demande si mes identifiants sont vraiment uniques dans l'esprit de HTML.

+1

Il ne doit pas y avoir plus d'un nœud avec un ID donné dans un document HTML. Est-ce votre question? –

+0

Cette question ne contient aucun code HTML. Il n'y a rien de mal à avoir ces deux règles dans une feuille de style CSS. Cependant, les deux règles ne doivent pas s'appliquer à un seul document HTML. – qqx

+0

pouvez-vous s'il vous plaît élaborer votre question ...? utilisez-vous Twitter bootstrap ou autre? Si oui, veuillez ajouter cette étiquette spécifique à votre question. –

Répondre

0

Dans le monde du navigateur, en supposant que vous avez les deux éléments avec le même ID dans votre code HTML, cela fonctionnera probablement. Cependant, ce HTML ne validera pas, pourrait casser différents types de processeurs HTML, et pourrait fonctionner ou ne pas fonctionner selon le navigateur et/ou le doctype. Voir aussi unique id value in html.

0

Non. Les ID doivent être uniques dans un document, pour tous les éléments. Oui, vous pouvez vous en sortir avec des identifiants non uniques, mais ce n'est pas une bonne idée. En règle générale, si vous souhaitez utiliser le même ID sur deux éléments, vous devriez envisager d'utiliser une classe à la place. Dans l'exemple spécifique ci-dessus, vous pouvez indiquer le champ de saisie userid en tant que classe et ID, et l'utiliser uniquement comme classe pour l'étiquette.

Ou, vous pouvez utiliser le sélecteur CSS d'attributs pour cibler l'étiquette dans votre CSS:

input#userid{ 
    left: 10px; 
    top 130px; 
    width: 180px; 
} 

label[for="userid"]{ 
    left: 10px; 
    top: 156px; 
} 

... en supposant que vous avez attribué l'attribut for sur l'étiquette.

+0

Merci, cela semble être l'approche la plus acceptable – delpi767

+0

Un peu plus de réflexion et je suis à nouveau confus. J'ai besoin d'utiliser des identifiants pour que je puisse absolument positionner des éléments, donc utiliser une classe ne servira à rien. Donc, si j'ai une zone de texte que je veux étiqueter, puis la manière correcte est #inputlname {...} et #labellname {...} Alors, pourquoi serait-on jamais utiliser l'étiquette #lname comme un descripteur css? Pourquoi ne pas toujours #labellname? – delpi767

+0

Vous pouvez toujours utiliser une classe pour la cibler pour le positionnement absolu, mais je viens de mettre à jour ma réponse d'une meilleure façon; en utilisant le sélecteur d'attribut. –