Принцип, которому вы должны следовать при рассмотрении расширений, специфичных для поставщика, - это прогрессивное улучшение . Основная идея заключается в том, что вы должны разработать свой сайт так, чтобы он работал на максимально возможное количество людей; разработайте его так, чтобы он работал в простом HTML 3.2 на терминальном клиенте, без JavaScript, CSS или каких-либо расширений, специфичных для конкретного поставщика.
Затем вы добавляете стиль и функциональность, используя более продвинутые стандарты, которые поддерживаются не во всех браузерах, используя дизайны для визуальных носителей, используя CSS и JavaScript, которые могут быть отключены, и, наконец, используя специфичные для поставщика расширения, которых нет в все поддерживается другими браузерами. Но поскольку вы впервые начали проектирование с учетом общего набора функций, которые поддерживаются всеми, вам не нужны дополнительные функциональные возможности от новых функций для работы сайта; он будет продолжать работать в старых браузерах со старыми функциями, так как новые функции были добавлены как улучшения, а не как что-то необходимое для работы вашего сайта.
Таким образом, вы не должны полагаться на эти специфичные для поставщика расширения, а использовать их как усовершенствования. Если по какой-то причине вы полагаетесь на них - если ваш продукт не может работать без расширения, доступного в определенном браузере, - возможно, стоит его использовать. Но в этом случае ваше будущее неразрывно связано с этим браузером. Если он упадет на обочине, вы SOL . Если он в конечном итоге используется только в Корее, а ваш продукт на немецком языке, где доминирует другой браузер, опять же, вы SOL.
Теперь при принятии этих решений можно выбирать различные виды функций, специфичных для поставщика. Есть некоторые функции, которые всегда будут характерны для конкретного поставщика; функции, которые не применимы на других платформах, или которые были предложены органу по стандартизации, и этот подход был отклонен. Эти функции вы должны использовать очень разумно.
Существуют и другие функции, которые находятся на дорожке стандартов. Они находятся в текущем проекте CSS 3, они реализованы в двух или трех разных браузерах почти совместимо. На эти функции вы можете положиться, если все ваши пользователи их поддержат, поскольку они наверняка будут реализованы большинством основных браузеров (используемых большинством потенциальных пользователей) в определенный момент будущее.
Итак, в целом, я бы сказал, что вы можете свободно добавлять эффекты на свои страницы, которые поддерживаются только в отдельном браузере. Но вы не должны полагаться на них, если у вас нет веских оснований полагать, что они скоро будут поддерживаться всеми основными браузерами. Текущее состояние HTML, поддерживаемое основными браузерами, может многое сделать; старайтесь работать в рамках существующих стандартов и функциональности, общей для браузеров, насколько это возможно, при этом помните, что соблюдение стандартов не оплачивает счета, оно обеспечивает функциональность и определенный уровень стиля, т. е.
Как прямой ответ на ваш вопрос, о плюсах и минусах расширений, специфичных для поставщика:
Плюсы
- Получите доступ к функциям, которые могут стать широко распространенными раньше
- Обеспечьте лучшую ценность для ваших клиентов
- Вы можете делать действительно классные, забавные вещи
- Помогите поощрить разработчиков других браузеров и людей, работающих над стандартами, что эта функция является хорошей идеей
Против
- Эта функция может исчезнуть и никогда не включится даже в более поздних версиях того же браузера
- Если вы полагаетесь на такие расширения, вы можете серьезно ограничить свою базу пользователей
- Эта функция может значительно измениться перед ее выпуском, что приведет к поломке страниц или появлению нового режима прослушивания, который действительно сложно определить.
Что касается того, следует ли вам использовать подход, основанный на JavaScript или подходе с расширением CSS, это решение, которое вы должны принимать в каждом конкретном случае. Если вы смогли следовать принципам прогрессивного улучшения, они оба хороши в использовании. Пока это не является существенной особенностью вашего сайта, или вы находите альтернативные способы сделать то же самое для всех основных браузеров, я бы сказал, что CSS предпочтительнее решения JavaScript, так как он обычно будет меньше и более быстрая загрузка.
Что нужно учитывать при проверке, так это то, что, в общем, неплохо убедиться, что ваш HTML проверяется (хотя и не всегда существенно; см., Например, Google , где они считают минимизацию размера загрузки более важной, чем проверка ), ошибки проверки из-за специфических для вашего поставщика свойств в CSS менее критичны. В CSS неизвестные свойства определяются так, чтобы их просто игнорировали, поэтому даже если они не проверяются, поскольку вы используете специфическое для поставщика свойство, вы знаете, как оно будет вести себя в браузерах, которые не поддерживают это свойство; они просто проигнорируют это. И если вы следовали подходу постепенного улучшения, то ваш сайт все равно должен работать нормально, если эти свойства игнорируются, а это означает, что нет никакого негативного влияния, кроме того, что ваш сайт выглядит немного менее приятным.