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-04-17 » 23 сервиса для эффективного экспресс-аудита любого сайта
- 2024-04-08 » Яндекс переходит на новую версию Wordstat
- 2024-04-08 » Яндекс интегрировал в свой облачный сервис эмпатичную нейросеть
- 2024-04-08 » Новая версия нейросети Claude превзошла по мощности аналоги Google и OpenAI
- 2024-04-08 » Как пользоваться GPT 4 и Claude бесплатно и без VPN
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
- 2024-01-25 » Переменные Gitlab-Ci
- 2024-01-25 » Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- 2024-01-25 » Копирование файлов scp
- 2024-01-21 » Бездепозитные бонусы от казино: обзор условий и правил использования
- 2024-01-18 » Современная обработка ошибок в PHP
- 2024-01-18 » Пример шаблона проектирования MVC в PHP
Не было еще ни одного великого ума без примеси безумия. Аристотель |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.