Работа с формами 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, которые вы используете в данный момент.