Я хотел бы иметь возможность использовать объекты vml при рендеринге страницы в стандартном режиме, а не в режиме причуд. Я нашел фрагменты ответов, разбросанных вокруг, но не могу понять. Raphael каким-то образом справляется, но я не могу обратить его вспять, чтобы понять, что происходит. Любой базовый рабочий пример был бы великолепен.
Как заставить VML работать в стандартном режиме?
Ответы (2)
Думаю, я разобрался. Шаг 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>
Почему бы вам просто не использовать Raphael вместо необработанного VML? Ребята из Raphael проделали большую работу, создав стандартную библиотеку, которая работает почти везде — используйте их тяжелую работу.