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
Новые статьи и публикации
- 2025-03-14 » SPF-запись
- 2025-03-07 » SEO на маркетплейсах: как оптимизировать карточку товара для поисковой выдачи
- 2025-02-18 » Топ-10 бесплатных нейросетей для генерации изображений: лучшие ии генераторы 2024 года
- 2025-02-11 » Критическая уязвимость в 1С-Битрикс
- 2025-02-11 » Google Search Console: руководство для начинающих вебмастеров
- 2025-02-11 » Методы измерения результативности рекламных кампаний: плюсы и минусы
- 2025-02-11 » Тренды SEO в 2025 году
- 2025-02-10 » Свой Google в локалке. Ищем иголку в стоге сена
- 2025-01-29 » SEO — это комплексная работа. Шесть главных факторов ранжирования сайтов
- 2025-01-29 » Гайд для главной страницы e-commerce сайта: как оформить, чтобы повысить конверсию
- 2025-01-20 » Krea AI выпустила бесплатную функцию преобразования изображений в 3D-объекты — их можно вращать и вписывать в фотографии
- 2025-01-19 » Отзывы на Яндекс Картах: как пройти модерацию
- 2025-01-15 » Топ-6 лучших российских нейросетей, в которых можно генерировать тексты и изображения бесплатно и без VPN
- 2025-01-14 » 15 бесплатных способов узнать, чем интересуется ваша аудитория
- 2025-01-11 » Бездепозитные бонусы в казино за регистрацию с выводом: особенности и возможности получения
- 2025-01-09 » Новая модель LAM способна выполнять задачи в Word
- 2024-12-26 » Универсальный промпт для нейросети: как выжать максимум из ChatGPT, YandexGPT, Gemini, Claude в 2025
- 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 » Интеграция с Яндекс Еда
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.
Или напишите нам в WhatsApp
Или напишите нам в WhatsApp