2011-06-21 17 views
7

Cualquier cosa que pueda hacer con los ID que puede hacer con las clases.¿Por qué existen las ID?

Entonces, ¿por qué hay un atributo de identificación?

Sí, el ID es único, sino una clase puede ser único también ...

+11

Creo que la descalificación sin comentario debe deshabilitarse a menos que sea 10K + –

+0

De wikipedia: El atributo id proporciona un identificador único para todo el documento para un elemento. Esto se usa para identificar el elemento de modo que las hojas de estilo puedan alterar sus propiedades de presentación, y las secuencias de comandos pueden alterar, animar o eliminar su contenido o presentación. Anexado a la URL de la página, proporciona un identificador global único para el elemento, generalmente una subsección de la página. Por ejemplo, el ID "Atributos" en http://en.wikipedia.org/wiki/HTML#Attributes –

+0

@MK: No puedo escribir tan rápido, vale ... –

Respuesta

8

primer lugar, desde el HTML 4.01 Specification Section 7.5.2:

id = nombre

Este atributo asigna un nombre a un elemento. Este nombre debe ser único en un documento.

class = CDATA lista

Este atributo asigna un nombre de clase o conjunto de nombres de clase a un elemento. Se le puede asignar a cualquier número de elementos el mismo nombre o nombres de clase. Los nombres de clases múltiples deben estar separados por espacios en blanco.

entiendo que el espíritu de su pregunta es que al elegir intencionadamente nombres de las clases únicas, se puede simular la funcionalidad dada por los atributos id, por lo que posiblemente el atributo id redundante. Bueno, puedo pensar en al menos una cosa que se puede hacer solo con ids; asociar un elemento <label> con un elemento de formulario utilizando el atributo for. por ejemplo:

<label for="firstname">First Name:<label> 
<input type="text" id="firstname" name="firstname" value="" /> 

Esta es una buena práctica por razones de accesibilidad. Si usa <label for="id"> con casilla de verificación o elementos de botón de opción, obtendrá la ventaja adicional de poder hacer clic en las etiquetas. por ejemplo:

<label for="male">Male</label> <!-- the word "Male" is clickable --> 
<input type="radio" id="male" name="sex" value="male" /> 
<label for="female">Female</label> <!-- the word "Female" is clickable --> 
<input type="radio" id="female" name="sex" value="female" /> 
+1

En la misma línea, algunas [propiedades WAI-ARIA] (http://www.w3.org/TR/2010/WD-wai-aria-20100916/states_and_properties) hacer uso de solo los ids. es decir aria-activedescendant, aria-controls, aria-describedby, aria-flowto, aria-labelledby y aria-own. – Alohci

4

clase es por un conjunto de elementos similares id es único para un elemento. Si quiere cambiar todas las casillas de verificación, por ejemplo, usa la clase. Si desea hacer algo en una casilla de verificación específica, usa id.

+0

puede usar esa ID como clase, por lo que el atributo ID es innecesario en este caso – Alex

+1

@Alex desea ** identificar ** el objeto, no ** clase **. No lo colocas en una cierta clase, le das una identidad. Esto es más semántico –

11

El DOM no existe solo con el propósito de diseñar elementos: los elementos también se pueden manipular (normalmente a través de Javascript), y generalmente seleccionar elementos por ID es mucho más eficiente que seleccionar por clase.

3

Este artículo tizag podría explicarlo mejor. En cada estándar en HTML, class y id tienen diferentes funciones. Por ejemplo, un id es (generalmente) solo utilizado una vez, para denotar un elemento único. class es (nuevamente, generalmente) usado para definir un grupo de elementos.

+0

Buen enlace, pero cite/resuma un poco por favor. –

+0

Se agregó un poco más de resumen a solicitud del Sr. Ball – esqew

2

De http://www.w3.org/TR/html401/struct/global.html#adef-class:

El atributo id tiene varios papeles en HTML:

Como selector de hojas de estilo.

Como ancla de destino para enlaces de hipertexto.

Como un medio para hacer referencia a un elemento en particular desde un script.

Como el nombre de un elemento OBJETO declarado.

Para el procesamiento de propósito general por agentes de usuario (por ejemplo, para identificar campos al extraer datos de páginas HTML en una base de datos, traducir documentos HTML a otros formatos, etc.).

El atributo de clase, por otra parte, asigna uno o más nombres de clase a un elemento; el elemento puede decirse que pertenece a estas clases. Un nombre de clase puede ser compartido por varias instancias de elementos. El atributo de clase tiene varios roles en HTML:

Como selector de hoja de estilos (cuando un autor desea asignar información de estilo a un conjunto de elementos).

Para el procesamiento de propósito general por agentes de usuario.

Me parece que no puede encontrar una referencia para cuando se añadió el atributo class a la especificación HTML, pero lo que puedo decir por experiencia personal que recuerdo la id atribuyen mucho más atrás (en particular para la forma tratamiento).

3

Todo lo que puedes hacer con las identificaciones que puedes hacer con las clases.

Actualmente no. Si se le da un elemento de una identificación, que puede ser el destino de un enlace (por ejemplo, http://www.example.com/page#foo le lleva al elemento con id="foo" en page, lo que ahora se prefiere sobre el antiguo <a name="foo"> mecanismo.)

¿Por qué es Hay un atributo ID entonces?

Porque sirven para fines completamente diferentes. El ejemplo anterior es solo una de la gran cantidad de usos a los que se puede aplicar un identificador único para el contenido de una página. Tener un identificador único es importante para las relaciones entre las cosas.

Sí, el ID es único, sino una clase puede ser único también ...

Puede ser ser la frase operativa. Si le digo al navegador que busque el elemento con el "foo" id, una vez que ha encontrado ese elemento, puede dejar de buscar. Si le digo que quiero elementos con la clase "barra", tiene que buscar todo el DOM para encontrarlos.

+0

el argumento de anclaje es bueno, no pensé en eso :) La velocidad + no me parece tan importante, ya que el documento se analiza en la computadora del cliente – Alex

Cuestiones relacionadas