Я работал над плагином jQuery, который включает CSS-формы. Проблема, с которой я столкнулся, заключается в том, что формы CSS не работают в IE8, если не объявлен DOCTYPE. Это будет мой первый плагин jQuery.
Мой вопрос: как разработчики jQuery решают эту проблему? Должен ли я просто объяснить в документации, что для работы этого плагина требуется DOCTYPE, или я должен написать отдельный CSS, который работает в режиме Quirks?
2 ответа
В наши дни никто намеренно не пропускает действительный тип документа - это вызывает Quirks Mode.
http://hsivonen.iki.fi/doctype/
Вы сознательно захотите режим Quirks - без doctype.
Пожалуйста, не делай этого. Сознательное проектирование в режиме Quirks будет преследовать вас, ваших коллег или ваших преемников в будущем, когда никого больше не волнует Windows IE 6 (уже никого не волнуют Netscape 4.x и IE 5). Дизайн для режима Quirks - плохая идея. Поверьте мне.
Единственная возможная веская причина, по которой у сайта не будет doctype, заключается в том, что это устаревший сайт, где потребовалось бы слишком много усилий, чтобы исправить его для работы в стандартном режиме.
Ваш плагин просто не должен работать в режиме Quirks.
Вам даже не нужно упоминать об этом в документации. Ожидается, что что-то сломается. Например, ни один из новых элементов CSS3 в IE9 не работает, если страница находится в режиме совместимости.
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, которые вы сейчас используете.
Похожие вопросы
Новые вопросы
jquery
jQuery - это библиотека JavaScript, рассмотрите возможность добавления тега JavaScript. jQuery - это популярная кросс-браузерная библиотека JavaScript, которая облегчает прохождение Document Object Model (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться в рассматриваемом коде, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.