среда, 14 января 2009 г.

VML & IE8b2

Майкрософт сильно взялся за браузер. Изменений очень много. В том числе и касающихся VML.

Подключение
Подключение VML теперь выполняется только специальной строкой в head-секции
    <?import namespace="v" urn="urn:schemas-microsoft-com:vml" implementation="#default#VML" declareNamespace ?>
Эта же строка отлично работает и в IE 6-7. Т.е. обнаружился единый простой способ подключения VML, что хорошо.

CSS
Про *:\ в CSS  для IE8 можно забыть - такой синтаксис нестандартен и более не поддерживается. Для IE6-7 по прежнему необходимо указывать что-то вроде v\:shape { display: inline-block; }, но для IE8 это не нужно.

Баги
Самое неприятное изменение, возможно это баг и будет исправлен в релизе браузера — VML-теги не желают брать свои размеры из браузера автоматически. Теперь требуется точное указание размера, процентами не отделаться. Это обесценивает техники основанные на смеси html- и vml-тегов. Т.е., например, невозможно сделать резиновую рамку на теге v:roundrect как я это делал ранее. Впрочем, повторюсь, возможно это ещё будет изменено.
Также присутствует непонятный баг с загрузкой изображений через v:image - иногда изображение не загружается. Закономерности не уловил.

2 коммент.:

zoya1960 комментирует...

VML в IE 8 действительно не работает и этот факт очень огорчает, поскольку на нескольких своих сайтах использовал именно VML для скругления уголков в IE (например на этом http://xa-xa.biz/ ). Теперь в IE 8 не то что круглые уголки, ВООБЩЕ РАМКА НЕ ОТРИСОВЫВАЕТСЯ. Может кто подскажет, можно как-нибудь (через условные операторы или еще как) заделать чтобы VML подключался только для IE до 8.

Павел комментирует...

Я может ещё один пост напишу про релиз IE8 и VML.
А пока тебе хинт - используй точное указание размеров блоков и всё будет отрисовываться. А проценты больше не работают, увы, о резиновых блоках и VML можно забыть.