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

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

0
Collin Price 25 Авг 2011 в 23:26

2 ответа

Лучший ответ

В наши дни никто намеренно не пропускает действительный тип документа - это вызывает Quirks Mode.

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

Вы сознательно захотите режим Quirks - без doctype.

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

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

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

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

5
thirtydot 25 Авг 2011 в 20:00

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

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

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

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

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

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

1
Spudley 25 Авг 2011 в 21:12