2011-04-07 15 views
53

Esta pregunta me ha estado molestando desde hace un tiempo Al escribir un selector CSS que se compara contra el atributo de un elemento como el modoCSS selectores de atributos: las normas sobre las cotizaciones

a[rel="nofollow"] 
(" ', o ninguno?)..

nunca sé lo que debería hacer con las comillas. son realmente necesarias?

Básicamente, lo que es la especificación para esto porque no puedo encontrar en el sitio web.

son todos estos considerados válidos?

a[rel="nofollow"] 
a[rel='nofollow'] 
a[rel=nofollow] 
+0

no creo que son necesarias. – Headshota

+0

@Headshota: No en este caso exacto, no. –

+0

http://mothereff.in/unquoted-attributes#nofollow –

Respuesta

56

He escrito más extensamente sobre el tema aquí: Unquoted attribute values in HTML and CSS.

También he creado una herramienta para ayudarle a responder a su pregunta: http://mothereff.in/unquoted-attributes

Unquoted attribute value validator

Generalmente, usted puede omitir las comillas siempre que el valor del atributo es alfanumérica (sin embargo, hay algunas excepciones - ver el artículo vinculado para todos los detalles). De todos modos, me parece una buena práctica agregar las comillas de todos modos en caso de que las necesite, es decir, a[href^=http://] no funcionará, pero a[href^="http://"] lo hará.

El artículo que mencioné contiene enlaces a los capítulos apropiados en las especificaciones de CSS. Los valores

+1

Esto es lo que quería saber. Aunque el anser de BoltClock también es muy útil. Esto aclara lo que mi RegExp necesita dejar pasar. – Olical

+0

@ Wolfy87 Actualicé mi respuesta con un enlace a un artículo que escribí el otro día. Contiene algunas expresiones regulares :) –

+1

(Reproduciendo mi respuesta como un comentario, ya que la borré hace un tiempo) Desde un punto de vista práctico: recomendaría que use comillas, ya sean simples o dobles. De esta forma, no será necesario que escape ninguno de los caracteres especiales del selector dentro de los valores de los atributos (distintos de las comillas).Además, y esta es solo una preferencia de estilo de codificación personal, así que no confíe en mi palabra, me parece consistente con las comillas de atributo XHTML. – BoltClock

22

atributo debe ser identificadores o cadenas

- http://www.w3.org/TR/CSS2/selector.html#attribute-selectors

Las dos primeras cuerdas de uso. El tercero usa un identificador.

identificadores (incluyendo los nombres de elementos, clases y ID de los selectores) pueden contener sólo los caracteres [a-zA-Z0-9] e ISO 10646 U + 00A0 y superior, más el guión (-) y el guión bajo (_); no pueden comenzar con un dígito, dos guiones o un guión seguido de un dígito.

- http://www.w3.org/TR/CSS2/syndata.html#value-def-identifier

Las cadenas pueden ser escrito entre comillas dobles o con comillas simples.

- http://www.w3.org/TR/CSS2/syndata.html#strings

+2

También podría vincular a la especificación CSS3 en su lugar: http://www.w3.org/TR/css3-selectors/#attribute-selectors –

+0

CSS2 es realmente más útil porque estoy en el medio de escribir un motor selector CSS2. Así que CSS2 es mejor para mí, pero gracias por el enlace de todos modos. – Olical

Cuestiones relacionadas