Что лучше: CSS-хаки или обнаружение браузера? - PullRequest
34 голосов
/ 18 января 2009

Обычно, когда я просматриваю Интернет, я обнаруживаю, что люди обычно используют CSS-хаки, чтобы их веб-сайт выглядел одинаково во всех браузерах. Лично я нашел, что это занимает довольно много времени, чтобы найти все эти хаки и проверить их; Каждое внесенное вами изменение необходимо протестировать в 4+ браузерах, чтобы убедиться, что оно больше ничего не нарушает.

Около года назад я просмотрел в Интернете, какие другие крупные сайты используют (Yahoo, Google, BBC и т. Д.), И обнаружил, что большинство из них используют те или иные формы обнаружения браузеров (JS, HTML-выражения if, сервер основан). Я тоже начал этим заниматься. Почти на всех сайтах, над которыми я работал в последнее время, я использую jQuery, поэтому я использую встроенное обнаружение браузера.

Есть ли причина, по которой вы используете или не используете ни один из них?

Ответы [ 15 ]

1 голос
/ 01 августа 2009

[Мой подход] [1] с использованием класса PHP для определения ОС, браузера и версии браузера.

[1]: Мой подход с использованием класса PHP для определения ОС, браузера и версии браузера http://reinholdweber.com/css/css-hacks-browser-version-detection-a-new-approach/

1 голос
/ 29 июня 2009

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

сначала вы добавляете хаки, а затем начинаете беспокоиться о том, как они ведут себя в разных браузерах и на разных машинах.

вместо этого вы можете положиться на специфичные для поставщика расширения CSS http://reference.sitepoint.com/css/vendorspecific

0 голосов
/ 29 июня 2009

CSS-хаки не подходят, потому что браузеры постоянно обновляются, и новые обновления могут сломать ваши хаки, в то время как при обнаружении браузера Javascript вы можете точно подтвердить возможности браузера. Однако другой вариант - использовать минимальный CSS, чтобы убедиться, что все работает во всех ситуациях. JQuery и другие библиотеки javascript, предназначенные для пользовательского интерфейса, имеют встроенное определение возможностей браузеров, поэтому вы должны проверить их.

0 голосов
/ 19 января 2009

Слушайте свой код! Кент Бек говорит это. А в Вин Чун говорят: будь как вода, которая изгибается! Или что-то.

Смотри, вот CSS-хак, чтобы IE5 понял html5: http://blog.whatwg.org/styling-ie-noscript.

А вот то же самое с JS: http://blog.whatwg.org/supporting-new-elements-in-ie.

Сравните 5 страниц описания взлома с 5 строками понятного кода. Итак, используйте JS.

У вещей есть свои преимущества и недостатки. И ваше понимание вопроса и элегантность фактического кода ведут вперед.

0 голосов
/ 18 января 2009

Лично я считаю, что это довольно много времени, чтобы найти все эти хаки и проверить их; Каждое внесенное вами изменение необходимо протестировать в 4+ браузерах, чтобы убедиться, что оно больше ничего не нарушает.

Вам не нужно проверять «правильные» CSS-хаки в каждом браузере.

Идея состоит в том, что вы пишете совместимый со стандартами код, а затем добавляете определенные хаки для одного и только одного браузера (или механизма рендеринга), который допускает ошибку. Например, написание «* html #myelement» для целевого исключения только для IE6: ни один другой браузер никогда не будет затронут этим взломом, поэтому нет необходимости его тщательного тестирования. Он может пойти не так, как если бы какой-то новый неизвестный браузер пришел и сделал точно такую ​​же ошибку, как IE6, что крайне маловероятно, не ваша ошибка, и что-то, что вы могли бы ожидать, чтобы исправить быстро.

Есть некоторые вещи, которые называют себя хаки CSS, но используют недопустимые конструкции, такие как хак "_propertyname". Это может нарушить работу разных браузеров, поскольку при использовании недопустимого кода каждый браузер может интерпретировать его по-разному. Не используйте их.

Если честно, это ни в коем случае не та проблема, с которой он когда-то был, прежде всего потому, что IE5 мертв. Если вы используете тип документа Standards Mode и пишете в стандарты, он в основном будет работать в текущем раунде браузеров. Единственный реальный оставшийся проблемный случай - это IE6, на который вы можете нацелиться с помощью «* html»; маловероятно, что вам понадобится гораздо больше хаков CSS, чем это. К счастью, дни взлома Box Model закончились.

...