PrefixFree: вариант выхода из ада префиксов
Что не так с префиксами?
Нет сомнений, что CSS3 отличный и мощный инструмент в руках разработчика. Но те, кто им пользуются попадают в ад префиксов. Посмотрите на реальный пример:
.download { position: absolute; top: 1em; left: -1.5em; width: 6em; height: 6em; padding: 1em 0; background: #80A060; background-image: -webkit-linear-gradient(transparent, rgba(0,0,0,.3)); background-image: -moz-linear-gradient(transparent, rgba(0,0,0,.3)); background-image: -o-linear-gradient(transparent, rgba(0,0,0,.3)); background-image: -ms-linear-gradient(transparent, rgba(0,0,0,.3)); background-image: linear-gradient(transparent, rgba(0,0,0,.3)); color: white; line-height: 1; font-size: 140%; text-align: center; text-decoration: none; text-shadow: .08em .08em .2em rgba(0,0,0,.6); -webkit-border-radius: 50%; -moz-border-radius: 50%; border-radius: 50%; -webkit-box-shadow: .1em .2em .4em -.2em black; -moz-box-shadow: .1em .2em .4em -.2em black; box-shadow: .1em .2em .4em -.2em black; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -ms-transform: rotate(15deg); -webkit-transform: rotate(15deg); -moz-transform: rotate(15deg); -o-transform: rotate(15deg); -ms-transform: rotate(15deg); transform: rotate(15deg); -webkit-animation: none; -moz-animation: none; animation: none; }
Префиксы, к сожалению, пока что нужны. Но реальность такова, что поддержка такого кода достаточно трудоемка и является причиной множества ошибок (нужно менять одно и то же правило пять раз).
Плагин PrefixFree разработан так, чтобы не использовать префиксов совсем, даже для свойств @keyframes
или transition
, которые нигде не поддерживаются без префиксов.
Скрипт делает все с помощью кода JavaScript. Он обрабатывает привязанные таблицы стилей (за исключением указанных в правиле @import
), встроенные стили, и даже CSS добавленный позже (как в новых элементах, изменениях свойства CSSOM и запросах).
Еще одним преимуществом использования Prefixfree является то, что как только производители браузеров откажутся от использования префиксов для свойств CSS3, вы сможете просто удалить строки подключения скрипта, а код CSS продолжит работу без изменений. Ваш код останется валидным CSS3 (он будет проходит проверку). Ваш код будет независимым (в отличие использования CSS препроцессоров).
Полезной особенностью скрипта является то, что он автоматически определяет, какие свойства нужно дополнять префиксами. В коде нет списка свойств. Он определяет, какие свойства поддерживаются, а какие поддерживаются только с префиксом. Значения, селекторы и правила используют предопределенный список, но префикс будет добавляться только если он нужен. Никакого мониторинга за браузером не используется, все основано только на определении свойств.
В отличие от других решений, PrefixFree добавляет префиксы в момент выполнения, поэтому пользователь загружает меньший по размеру CSS код. Одним из контр аргументов может являться то, что обработка CSS файлов на серверной стороне выполняется быстрее. Но, судя по опыту использования,в большинстве случаев разница не существенна.
Также решение с использованием обработки на стороне сервера имеет два основных недостатка. Первый, размер файла CSS остается большим, так как он будет содержать все префиксы (и версию без префиксов). Второй, скрипт на серверной стороне должен поддерживать список всех свойств постоянно, так как не может автоматически определить поддержку свойств, как в плагине PrefixFree.
При использовании плагина выше приведенный код будет выглядеть следующим образом:
.download { position: absolute; top: 1em; left: -1.5em; width: 6em; height: 6em; padding: 1em 0; background: #80A060; background-image: linear-gradient(transparent, rgba(0,0,0,.3)); color: white; line-height: 1; font-size: 140%; text-align: center; text-decoration: none; text-shadow: .08em .08em .2em rgba(0,0,0,.6); border-radius: 50%; box-shadow: .1em .2em .4em -.2em black; box-sizing: border-box; transform: rotate(15deg); animation: none; }
Неужели он лучше серверного варианта решения?
Итак, подведем итоги и укажем все аргументы за и против обеих решений. Использование скрипта на серверной стороне означает:
- Его надо часто обновлять, так как поддержка браузерами свойств CSS3 меняется и часть префиксов становится не нужными. PrefixFree автоматически определяет необходимость префикса.
- Все префиксы должны быть загружены. Что существенно увеличивает размер передаваемых файлов. Для таблицы средних размеров размер увеличения может оказаться больше размера файла prefixfree.js.
- В случае использования препроцессоров, например LESS или SASS, вы будете зависеть от их внутреннего синтаксиса. Поэтому нельзя будет просто удалить скрипт через несколько лет.
Но у серверного варианта есть ряд преимуществ:
- Файл дольше загружается, но пользователь не видит версии без префиксов. Использование плагина PrefixFree занимает некоторое время.
- Серверный вариант будет работать даже с отключенной поддержкой JavaScript. Для варианта использования PrefixFree при отключении JavaScript дизайн лишится некоторых свойств CSS3, но останется функциональным. Если ваш код CSS написан корректно, то дизайн должен оставаться функциональным даже без использования CSS3.
Решение, каждый должен принимать сам, тщательно взвешивая все недостатки и преимущества для своего проекта.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/aVbAFcyepa8/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Всегда храни верность своему начальнику - следующий, может быть еще хуже... |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.