2011-07-23 13 views
27

que estaba leyendo a través de CSS reset de Eric Meyer y vi esto:`contenido: '' 'vs' contenido: none`

blockquote:before, blockquote:after, 
q:before, q:after { 
    /* ? */ content: ''; 
    /* ? */ content: none; 
} 

supongo que algunos navegadores soportan content: '' y algunos content: none, es este el caso? ¿Y qué navegadores son compatibles?

Respuesta

33

Meyer acredita a Paul Chaplin con esa versión del bloquequote/q restablece los estilos.

post de Chaplin sobre el tema contiene el siguiente bloque de estilo, amablemente anotado.

blockquote, q 
{ 
    quotes: none; 
} 

/* 
Safari doesn't support the quotes attribute, so we do this instead. 
*/ 
blockquote:before, blockquote:after, q:before, q:after 
{ 
    /* 
    CSS 2; used to remove quotes in case "none" fails below. 
    */ 
    content: ""; 
    /* 
    CSS 2.1; will remove quotes if supported, and override the above. 
    User-agents that don't understand "none" should ignore it, and 
    keep the above value. This is here for future compatibility, 
    though I'm not 100% convinced that it's a good idea... 
    */ 
    content: none; 
} 

que reducirlo: las versiones actuales de los navegadores soportan simplemente un estilo quotes: none, lo que elimina la necesidad de utilizar los :before y :after selectores. El hombre extraño fue Safari/WebKit, que no respetó quotes: none. La siguiente forma de resolver esto fue con los pseudo-elementos :before/:after, pero en el momento de escribir esto, WebKit tampoco era compatible con content: none, por lo que se requería content: "".

Sin embargo, esa publicación fue en 2008, y una quick test con los navegadores WebKit actuales (Safari 5.1 y Chrome 12) muestra que quotes: none funciona bien en ambos. El content: none bug against WebKit sigue abierto por alguna razón, mientras que el bug for the quotes property se cerró hace bastante poco.

Por lo tanto, resumiendo, los estilos adicionales parecen estar allí para admitir versiones anteriores de Safari (y posiblemente Chrome). Es un poco más difícil precisar exactamente cuándo obtuvieron soporte, pero las versiones actuales de todos los navegadores parecen tratar con quotes: none (y content: none) bien.

+0

Así que no hay beneficio * real * al usar 'content: none'? –

+9

'content: none' y' content: "" 'no son lo mismo. 'content: none' es para evitar explícitamente que se genere el pseudo-elemento' before' or' after' (en realidad solo se utiliza para anular otro estilo que habría generado contenido), mientras 'content:" "' crea los elementos adicionales , pero están vacíos. En cuanto al beneficio * real *, una combinación de estilos en ': before: o': after' hará que la diferencia sea visible (como un relleno y un color de fondo), pero probablemente se deba más a "pureza" o "corrección". En cualquier caso, no hay nada malo en tener 'content: none' para soportar navegadores. –

+0

solo para decir que encontré esto cuando anulo un estilo anterior. Descubrí que el contenido "definitivamente llevaba algunos de los estilos anteriores y el contenido" ninguno "no funcionaba en el ipad que uso para probar (como se sugiere en el comentario anterior). Utilicé mostrar ninguno en el pseudo-elemento como una anulación "cinturón y corsés" (en lugar de tener que restablecer todos los estilos) – user1010892