2012-04-09 16 views
9

En el pasado respondí una pregunta sobre "quién estaba equivocado" con respecto a las imágenes SVG que no están "recortadas" (overflow: hidden) en IE9, donde todos los demás navegadores compatibles lo hicieron. La respuesta es here.¿Debería el contenido SVG estar visible fuera de un <svg> incrustado de forma predeterminada?

Hoy en día, mientras se revisan para HTML 5 otra vez, me di cuenta de que ellos dicen que "[correct] overflow not being hidden in IE9" con este trozo de código:

svg:not(:root) { overflow: hidden; } 

estoy buscando a alguien para confirmar o negar mi investigación original apuntando a algún otro nota en las especificaciones de HTML5 o SVG. No puedo encontrar nada, pero quiero asegurarme de que no me falta algo.

Lo mejor que puedo encontrar es que están tratando de aplicar la regla 7 here, pero eso solo debería aplicarse a un documento SVG, como a través de una etiqueta img o cuando se carga directamente.

+0

Gracias por el título editar @Phrogz. Estaba teniendo problemas con la forma exacta de resumir la pregunta. –

+0

@casperOne ¿De qué manera pedir una aclaración sobre una especificación no es una pregunta real? Puedo ver que la redacción es pobre, pero no veo cómo se ajusta a la categoría que la ha etiquetado. ¿Está demasiado localizado? –

+0

Desea que alguien aclare si alguien tenía razón o no. Podría volver a abrirlo, pero luego lo cerraría nuevamente como "No constructivo". – casperOne

Respuesta

4

La especificación SVG tiene esto que decir: http://www.w3.org/TR/SVG/styling.html#UAStyleSheet

parece similar a lo que Firefox y Chrome no hacen?

+0

Bueno, aunque (por mi respuesta), tanto Chrome como FF usan la misma versión ligeramente modificada. (¿Quizás hay una errata al respecto?) Esto implica que IE se equivocó al no tener esta hoja de AU. Sin embargo, no me aclara por completo por qué 'overflow: visible' no hace que la ruta desbordante aparezca en Chrome/FF. Quizás sea una pregunta separada, pero ¿cuáles son las expectativas sobre los 'límites' de SVG? ¿Cuándo superarán los límites el 'height' y' width' explícitos? – Phrogz

+0

[Esta discusión] (http://lists.w3.org/Archives/Public/public-svg-wg/2008JulSep/0344.html) es relevante. – Phrogz

+0

Gracias por señalar eso. Parece que tal vez un conflicto en la hoja de estilo requerida por defecto para los elementos del espacio de nombres SVG entra en conflicto con la regla 7 anterior + http://www.w3.org/TR/SVG/styling.html#Scope? –

4

La respuesta original me parece correcta, usando los motivos que especificó (específicamente los puntos quinto y séptimo de the spec).

Parece increíblemente poco probable que IE sea correcto y Webkit y Firefox no lo sean. Sin embargo, como sospecha que el séptimo punto es el factor diferenciador.

Si carga this test case en Chrome y utilizar las herramientas de desarrollo para inspeccionar el SVG, verá:

(user agent stylesheet)

svg:not(:root), symbol, image, marker, pattern, foreignObject { 
    overflow: hidden; 
} 

Si habilita "Mostrar User Agent CSS "en Firebug puedes ver esta regla en Firefox:

svg.css (line 49) <System>

svg:not(:root), symbol, image, marker, pattern, foreignObject { 
    overflow: hidden; 
} 

Por último, si edita el caso de prueba para añadir a continuación svg { overflow:hidden } IE partidos visualmente los otros navegadores.

Por lo tanto, me parece que los tres navegadores se comportan de acuerdo con la especificación, pero Chrome/Safari/FF todos tienen reglas de UA que coinciden más con lo que la mayoría de los usuarios esperaban.

Si pudiera irme lo suficientemente bien solo, aquí es donde detendría esta respuesta.

Sin embargo, si tiene edit the test case to add svg { overflow:visible }, tanto Chrome como Firefox no muestran "correctamente" el contenido desbordado. No estoy seguro de cómo resolver este punto de datos con el resto de esta respuesta. :/

+1

Opinión (no respuesta): sin el comportamiento de Chrome y Firefox, existe la implicación de que ' 'necesitaría encontrar el cuadro delimitador de todo el contenido y renderizar el contenido completo del SVG a 4px por unidad mundial. Esto es tan contrario a lo que siempre desearía de un SVG. Creo que debe haber una especificación que defina las extensiones de los contenidos de SVG para representar. Y sospecho que IE9 ha omitido o malinterpretado esta especificación (que no puedo encontrar). – Phrogz

+0

Gracias por la respuesta detallada. (También opinión) Estoy de acuerdo en que la mayoría de las personas, especialmente las más familiarizadas con imágenes binarias y etiquetas de imagen, no esperarían que una imagen SVG se desborde por defecto. El enlace de @ Robert arriba trae a la luz un conflicto interesante en el fallo al comparar el UA predeterminado que ** debe ser ** implementado contra la regla 7 (palabra clave SVG Document) + http://www.w3.org/TR/SVG/styling .html # Scope –

+0

Después de poner todo junto con su enlace de discusión y el enlace de la hoja de estilos de UA arriba, veo dónde IE9 tiene un error. La regla 7 se aplica, no como una regla separada, sino en combinación con todas las reglas en 'desbordamiento' como advertencia a los UA de que el estilo predeterminado para las ventanas gráficas es 'overflow: hidden'. –

Cuestiones relacionadas