Как заставить VML работать в стандартном режиме? - PullRequest
5 голосов
/ 07 октября 2010

Я хотел бы иметь возможность использовать объекты vml для рендеринга страницы в стандартном режиме, а не в режиме причуд.Я нашел фрагменты ответов, разбросанных вокруг, но не могу понять это. Рафаэль как-то справляется, но я не могу повернуть вспять, чтобы выяснить, что происходит.Любой основной рабочий пример был бы великолепен.

Ответы [ 2 ]

7 голосов
/ 08 октября 2010

Я думаю, я понял это.Шаг 1 - импорт пространства имен vml через javascript.

document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', "#default#VML");

Это дает некоторые случайные образцы vml для работы в режиме причуд, но не в стандартах.Ключевым моментом является то, что элементам требуется единица измерения, где режим причуд принимает значение px, если единица не указана.Также формы должны быть оформлены с помощью position:absolute;, хотя линии, по-видимому, не нуждаются в этой части.

Вот пример с 2 овалами.Оба овала будут отображаться в режиме причуд, но синий овал не будет отображаться в стандартном режиме.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
    <script>
        document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', "#default#VML");
    </script>
    <v:oval style="width: 100; height: 50" fillcolor="blue"></v:oval>
    <v:oval style="position: absolute; width: 100px; height: 50px" fillcolor="green"></v:oval>
</body>
</html>
0 голосов
/ 07 октября 2010

Почему бы вам просто не использовать самого Рафаэля вместо сырого VML? Ребята из Raphael проделали большую работу, создав стандартную библиотеку, которая работает практически везде - используйте их тяжелую работу.

...