#css #cross-browser #feature-detection
#css #кроссбраузерный #функция-обнаружение
Вопрос:
Я пишу несколько расширений Modernizr для определения поддержки браузером таких вещей, как:first-child, :last-child в CSS. Для этого я применяю стиль, а затем проверяю, имеет ли элемент этот стиль.
Какое свойство CSS наиболее надежно для использования в качестве моего тестового стиля?
например, color — плохой выбор, так как если вы введете #123abc, браузер может преобразовать его в rgb (#, #, #)
Итак, я ищу свойство, которое
- Поддерживается во всех браузерах
- Браузер не будет преобразован в другой формат
На данный момент я использую width, что, вероятно, нормально, но я подумал, что все равно проверю здесь.
Комментарии:
1. Я полностью за обнаружение функций, а не браузера. Но, как бы мне ни было больно это говорить, поддержка
:first-child
and:last-child
всегда была проблемой только для IE <=v8, и это не изменится. Итак, ваша цель может быть достигнута с помощью скрипта обнаружения IE, для которого существует несколько четко определенных решений. Я согласен, что было бы лучше сделать это с помощью функции обнаружения, но я подумал, что должен указать на это. 🙂2. Возможно, на рабочем столе это верно, но я не уверен насчет мобильных устройств (на самом деле я понятия не имею, поддерживают ли какие-либо мобильные браузеры first / last-child, но это само по себе является хорошей причиной для тестирования). Я также буду писать тест для nth-child и нескольких других селекторов, которые в целом неизвестны.
Ответ №1:
Я только что написал это http://jsfiddle.net/laustdeleuran/3rEVe / вчера, который делает именно то, о чем вы говорите — эта функция обнаруживает поддержку псевдоселектора:last-child. Я также использую width в качестве своего стиля для проверки, и, похоже, он работает просто отлично.
На данный момент я успешно протестировал его в IE6-8 на Windows XP; IE9, Chrome 12, Safari 5, FireFox 4 и Opera 11 на Windows 7 и Opera 11, FireFox 4, Safari 5 и Chrome 12 на Mac.
Не стесняйтесь использовать его как оно есть, если хотите.