2012-04-09 1 views
9

В прошлом я ответил на вопрос «кто был неправ» в отношении изображений SVG, которые не были «обрезаны» (overflow: hidden) в IE9, где все остальные поддерживающие браузеры сделали это. Ответ here.Должно ли содержимое SVG быть видимым вне встроенного <svg> по умолчанию?

Сегодня, во время просмотра HTML5 Шаблонных снова, я заметил, что они утверждают, что они "[correct] overflow not being hidden in IE9" с этим битом кода:

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

Я ищу кого-то, чтобы подтвердить или опровергнуть мое первоначальное исследование, указывая на какой-либо другой обратите внимание на спецификации HTML5 или SVG. Я ничего не могу найти, но я хочу быть уверенным, что чего-то не упускаю.

Лучшее, что я могу найти, это то, что они пытаются применить правило 7 here, но это должно применяться только к SVG-документу, например, через тег img или при загрузке напрямую.

+0

Благодарим за заголовок править @Phrogz. У меня возникли проблемы с тем, как точно суммировать вопрос. –

+0

@casperOne Как просить разъяснения по спецификации не вопрос? Я вижу, что формулировка плохая, но я не вижу, как она подходит к категории, которую вы ее обозначили. Это слишком локализовано? –

+0

Вы хотите, чтобы кто-то уточнил, был ли кто-то прав или нет. Я мог бы снова открыть его, но потом я просто закрою его как «Неконструктивный». – casperOne

ответ

4

Спецификация SVG это сказать: http://www.w3.org/TR/SVG/styling.html#UAStyleSheet

Кажется похоже на то, что Firefox и Chrome сделать нет?

+0

Хороший, хотя (за мой ответ) и Chrome и FF используют одну и ту же слегка измененную версию. (Возможно, есть обвалы вокруг этого?) Это означает, что IE был не прав, чтобы не иметь этот лист UA. Тем не менее, это не полностью разъясняет мне, почему «переполнение: видимое» не вызывает появление переполняющего пути в Chrome/FF. Это, возможно, отдельный вопрос, но каковы ожидания на «границах» SVG? Когда границы будут превышать явные «высота» и «ширина»? – Phrogz

+0

[Это обсуждение] (http://lists.w3.org/Archives/Public/public-svg-wg/2008JulSep/0344.html) имеет значение. – Phrogz

+0

Спасибо, что указали это. Похоже, что конфликт в заданной по умолчанию таблице стилей для элементов пространства имен SVG противоречит правилу 7 выше + http://www.w3.org/TR/SVG/styling.html#Scope? –

4

Ваш оригинальный ответ кажется мне правдивым, используя указанные вами основания (в частности, пятую и седьмую пулевые точки the spec).

Кажется невероятно маловероятным, что IE правильный, а Webkit и Firefox - нет. Однако, как вы подозреваете, седьмая точка пули равна дифференцирующий фактор.

При загрузке this test case в Chrome и использовать инструменты для разработчиков, чтобы проверить SVG, вы увидите:

(user agent stylesheet)

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

Если включить «Show User Agent CSS "в Firebug вы видите это правило в Firefox:

svg.css (line 49) <System>

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

Наконец, если вы измените тестовый случай, чтобы добавить svg { overflow:hidden } затем IE визуально совпадает с другими браузерами.

Таким образом, мне показалось, что все три браузера ведут себя согласно спецификации, но у Chrome/Safari/FF есть правила UA, которые более точно соответствуют ожиданиям большинства пользователей.

Если бы я мог оставить достаточно-достаточно один, я бы остановил этот ответ.

Однако, если вы используете edit the test case to add svg { overflow:visible }, то Chrome и Firefox не отображают переполненное содержимое. Я не уверен, как решить эту точку данных с остальной частью этого ответа. :/

+1

Мнение (не ответ): без поведения Chrome и Firefox есть смысл, что ' 'нужно будет найти ограничительную рамку всего содержимого и отобразить полное содержимое SVG на 4 пикселя на мировое устройство. Это настолько противоречит тому, что я хотел бы получить от SVG. Думаю, что должна быть спецификация, определяющая экстенты содержимого SVG для рендеринга. И я подозреваю, что IE9 пропустил или неправильно истолковал эту спецификацию (которую я не могу найти). – Phrogz

+0

Спасибо за подробный ответ. (Также мнение) Я согласен с тем, что большинство людей, особенно те, которые больше знакомы с бинарными изображениями и тегами изображений, не ожидали, что SVG-образ будет переполняться по умолчанию. @ Ссылка выше ссылка вызывает интересный конфликт в управлении при сравнении по умолчанию UA, который ** должен быть ** реализован против правила 7 (ключевое слово SVG Document) + http://www.w3.org/TR/SVG/styling .html # Scope –

+0

После того, как вы разместили все вместе со своей ссылкой для обсуждения и ссылкой на таблицу стилей UA выше, я вижу, где IE9 ошибочен. Правило 7 применяется не как отдельное правило, а в сочетании со всеми правилами в 'overflow' как предупреждение для UA, что стиль по умолчанию для видовых экранов - это' overflow: hidden'. –

Смежные вопросы