Работа с формами CSS и IE Doctype

Я работал над плагином jQuery, который включает CSS Shapes. Проблема, с которой я столкнулся, заключается в том, что формы CSS не работают в IE8, если не объявлен DOCTYPE. Это будет мой первый плагин jQuery.

Мой вопрос: как разработчики jQuery решают эту проблему? Должен ли я просто объяснить в документации, что для работы этого плагина требуется DOCTYPE, или я должен написать отдельный CSS, который работает в режиме Quirks?

2 ответа

Решение

Никто преднамеренно не опускает действительный тип документа в эти дни - который вызывает Режим Причуд.

http://hsivonen.iki.fi/doctype/

Вам преднамеренно нужен режим Quirks - No doctype.

Пожалуйста, не делай этого. Умышленное проектирование для режима Quirks придет и будет преследовать вас, ваших коллег или ваших преемников в будущем, когда никто больше не заботится о Windows IE 6 (уже никто не заботится о Netscape 4.x и IE 5). Проектирование для режима Quirks - плохая идея. Доверьтесь мне.

Единственная возможная причина, по которой у сайта не было бы типа документа, - это то, что это устаревший сайт, на котором потребовалось бы слишком много усилий, чтобы настроить его для работы в режиме стандартов.

Ваш плагин просто не должен работать в режиме Quirks.

Вам даже не нужно упоминать об этом в вашей документации. Ожидается, что все сломается. Например, ни один из новых CSS3- компонентов в IE9 не работает, если страница находится в режиме Quirks.

Doctype следует считать обязательным для всех сайтов. Отсутствие такового приведет к тому, что IE перейдет в режим причуд. Это плохо.

Это имело место в течение очень долгого времени (с тех пор, как IE6 был выпущен), поэтому любой, кто еще не использует Doctype, действительно не должен иметь права писать HTML для собственной безопасности!;-) Поэтому я не думаю, что вам стоит беспокоиться о том, как ваш код выглядит без доктайпа.

Тем не менее, я хотел бы отметить, что фигуры CSS, которые вы рисуете, хотя и очень умные, должны считаться хаком. Есть несколько гораздо лучших способов получить произвольные формы в браузере, чем этот.

Кроме того, обратите внимание, что большинство фигур на странице, на которую вы ссылаетесь, не будут работать в IE8 или более ранних версиях. (круг и овал использовать CSS border-radius и многие другие используют transform, ни один из которых не поддерживается в IE8, и довольно многие из них используют :before а также :after CSS-селекторы, которые есть в IE8, но не в IE7). Даже там, где HTML+CSS может достичь этих результатов, он определенно не был разработан для такого рода вещей. На самом деле, даже в Firefox 3.6 я вижу некоторые глюки рендеринга на странице, на которую вы ссылаетесь.

Если вы хотите рисовать фигуры на своей странице с помощью кода, вам лучше использовать правильную библиотеку для рисования, чем пытаться взломать HTML+CSS для выполнения ваших прихотей.

Я бы порекомендовал такую ​​библиотеку, как Рафаэль. Эта библиотека может рисовать произвольные фигуры в браузере, используя язык векторной графики SVG. Он даже работает в более старых версиях IE (где он использует аналогичный язык, называемый VML), поэтому у вас есть практически полная кросс-браузерная поддержка. Он также поддерживает анимацию и другие эффекты, что было бы совершенно невозможно при использовании форм CSS, которые вы используете в данный момент.

Другие вопросы по тегам