در این مقاله خواهیم دید که پیشوندهای مرورگر چیست ، دلایل ظهور آنها و نحوه استفاده از آنها در CSS.
پیشوند چیست؟
یک توسعه دهنده وب که شروع به یادگیری اصول نظری CSS و استفاده از این دانش می کند ممکن است هنگام مشاهده نمونه های دنیای واقعی دچار مشکل شود. این ممکن است باعث عدم درک او از آنچه اتفاق می افتد باشد و تمایل بیشتر به مطالعه این فناوری را سلب کند.
به عنوان مثال ، هنگام در نظر گرفتن سبک های یک وب سایت ، یک توسعه دهنده وب ممکن است با ویژگی هایی مواجه شود که حاوی برخی از کلمات مبهم در جلو است: -webkit- ، -moz- ، -ms- و غیره.
* (-ووبکیت-جعبه-اندازه: جعبه مرزی ؛ -موز-جعبه اندازه: جعبه مرزی ؛ اندازه-جعبه: جعبه مرزی ؛)
این چیست؟ در حقیقت ، همه چیز ساده است ، این کلمات مبهم پیشوند مرورگرهای زیر هستند:
- -webkit-: مرورگرهای Chrome ، Safari ، Opera؛
- -moz-: مرورگر Mozilla Firefox؛
- -ms-: مرورگر اینترنت اکسپلورر.
بنابراین ، اگر نام ویژگی پیشوند است ، این بدان معنی است که این خاصیت پیاده سازی شده است و منحصراً در مرورگر مشخص شده استفاده می شود. همه مرورگرهای دیگر این ویژگی را نادیده می گیرند. برای آنها ، این پیشوند ناشناخته است.
دلایل ظهور پیشوندها؟
دلایل زیادی برای ظهور پیشوندها وجود داشت:
- برای گنجاندن در مرورگر خصوصیات آزمایشی CSS که هنوز توسط استاندارد تأیید نشده اند. بنابراین ، سازندگان مرورگر قبل از تصویب خواص CSS در استاندارد ، آزمایش و پیشنهادهایی را ارائه می دهند.
- برای حل مشکلات مرورگر.
- برای ایجاد خصوصیات خود که جزئی از استاندارد CSS نیستید ، اما ممکن است بعد از مدتی در آن ظاهر شوید.
وقتی یک ویژگی آزمایشی در استاندارد تأیید شده و در مرورگر آزمایش شده باشد ، پیشوند معمولاً از آن خارج می شود.
چگونه از پیشوند استفاده کنیم؟
کد زیر را به عنوان نمونه در نظر بگیرید:
* (-ووبکیت-جعبه-اندازه: جعبه مرزی ؛ -موز-جعبه اندازه: جعبه مرزی ؛ اندازه-جعبه: جعبه مرزی ؛)
در این کد از خصوصیات CSS استفاده شده است که الگوریتم محاسبه عرض و ارتفاع برای همه عناصر یک صفحه وب را تغییر می دهد. اولین ویژگی CSS-wbkit-box-size با مقدار کادر-جعبه در نظر گرفته شده است برای مرورگرانی که از webkit (Safari) یا موتور چشمک (Chrome، Opera، Yandex.Browser) استفاده می کنند. دومین ویژگی CSS –moz-box-size با مقدار کادر-جعبه برای مرورگرهایی که از موتور Gecko استفاده می کنند (Mozilla Firefox) در نظر گرفته شده است. آخرین ویژگی CSS برای مرورگرهایی در نظر گرفته شده است که در آن قبلاً این خاصیت مطابق با استاندارد آزمایش و اجرا شده است.
هنگام استفاده از پیشوندها برای خصوصیات CSS ، به یاد داشته باشید که آنها باید قبل از خاصیت CSS بدون پیشوند قرار گیرند. چرا اینقدر مهم است؟ این مهم است زیرا اگر به محض پیاده سازی ویژگی اصلی (بدون پیشوند) در مرورگر ، از آن استفاده شود (چون آخرین مورد است) و نه نسخه آزمایشی آن.
به عنوان مثال: اعمال یک ویژگی CSS برای همه عناصر یک صفحه وب در نسخه 40 Google Chrome.
شکل بالا نشان می دهد که ویژگی اصلی جعبه اندازه در حال حاضر در این مرورگر جاسازی شده است و به دلیل آخرین نسخه ، مرورگر به جای خاصیت فوق اندازه -webkit-box از آن استفاده می کند.
چگونه می توان پشتیبانی از یک ویژگی خاص را در یک مرورگر بررسی کرد؟
سایتی که در آن می توانید بررسی کنید که آیا این ویژگی در یک مرورگر خاص پیاده سازی شده است یا خیر ، می تواند لینک زیر باشد. علاوه بر این ، سایت درصد کاربرانی را که از این نسخه مرورگر استفاده می کنند نشان می دهد.
وب سایت "آیا می توانم استفاده کنم ..."به عنوان مثال: نحوه اجرای خاصیت تبدیل در مرورگرها را بررسی کنید.
در وب سایت CanIUse ، بسته به وضعیتی که در آن ویژگی ها یا برچسب های خاصی در آن قرار دارد ، مرورگرها به رنگ های مختلفی علامت گذاری می شوند:
- مستطیل قرمز مرورگری است که در آن این ویژگی اجرا نشده است.
- مستطیل سبز با ضریح در گوشه فوقانی سمت راست مرورگری است که از این ویژگی از طریق پیشوند استفاده می شود.
- مستطیل سبز روشن مرورگری است که در آن بخشی از این ویژگی انجام می شود.
- مستطیل سبز مرورگری است که در آن این ویژگی مطابق استاندارد اجرا می شود.
همانطور که می دانید ، همه مرورگرها با پرونده های سبک css به یک شکل رفتار نمی کنند. اصولاً با نسخه های قدیمی ایجاد مقیاس کوچک مشکلاتی بوجود می آید اینترنت اکسپلورر (نسخه 7 و زیر). به هر حال ، اگر این مشکل در مرورگرهای مدرن (مانند اپرا ، موزیلا فایرفاکس ، کروم) رخ دهد ، آنگاه من بسیار توصیه می کنم طرح صفحه را بازبینی کنید
بنابراین در اینجا مشکلی در مرورگرها وجود دارد. و من حداقل سه راه برای حل این مشکل می دانم.
روش اول صحیح ترین
سبک هایی برای مرورگرهایی که CSS شما را به درستی درک نمی کنند در یک پرونده جداگانه نوشته شده اند. معمولاً همانطور که گفتم این مرورگر است اینترنت اکسپلورر، و این پرونده ها خوانده می شوند fix-ie.css
... ... ...
تغییر مضامین نامبه نام واقعی موضوع شما - و وقتی باز می شوید اینترنت اکسپلورر نسخه 7 و پایین - این پرونده در صورت فعال کردن حافظه پنهان ، به مجموعه کلی فایلهای سبک اضافه می شود و حتی در حافظه پنهان ذخیره می شود.
این خط مسئول نسخه مرورگری است که به آن شیوه نامه وصل می شود:
где styles.css - файл, который будет отвечать за стили только для IE .
Единственный известный на данный момент способ написать стили только для Google Chrome , используя при этом JavaScript . При этом не нужно знать JS , достаточно взять пример отсюда и адаптировать его под свои нужды.
Суть состоит в том, что мы проверяем, каким браузером пользуется посетитель сайта и если это Google Chrome , то подключаем для него дополнительный файл стилей, в котором нужные свойства, которые могут перекрываться в основном файле стилей, выделяем !important .
раздел, добавляем такие строчки, внутри тега ):
var isChrome = !!window.chrome && !!window.chrome.webstore; if (isChrome) { var $ = document; var cssId = "myCss"; var head = $.getElementsByTagName("head"); var link = $.createElement("link"); link.id = cssId; link.rel = "stylesheet"; link.type = "text/css"; link.href = "/css/template.css"; //путь к файлу стилей только для Chrome link.media = "all"; head.appendChild(link); }
Единственный известный на данный момент способ написать стили только для Opera , используя при этом JavaScript . При этом не нужно знать JS , достаточно взять пример отсюда и адаптировать его под свои нужды.
Суть состоит в том, что мы проверяем, каким браузером пользуется посетитель сайта и если это Opera , то подключаем для него дополнительный файл стилей, в котором нужные свойства, которые могут перекрываться в основном файле стилей, выделяем !important .
Синтаксис такой(в файле.php или.html , куда подключаем файл стилей,т.е. в
раздел, добавляем такие строчки, внутри тега ):var isOpera = !!window.opera || /opera|opr/i.test(navigator.userAgent); if (isOpera) { var $ = document; var cssId = "myCss"; var head = $.getElementsByTagName("head"); var link = $.createElement("link"); link.id = cssId; link.rel = "stylesheet"; link.type = "text/css"; link.href = "/css/template.css"; //путь к файлу стилей только для Opera link.media = "all"; head.appendChild(link); }
Единственное что вам тут нужно поменять это в 10 строчке путь до вашего файла стилей.
Спасибо всем за внимание, рады для вас стараться. Повторимся, что мы ждем ваших комментариев, предложений по улучшению и т.д.
6.5KКроссбраузерность — это способность сайта корректно отображаться в различных браузерах. Ресурс должен работать одинаково во всех версиях обозревателей.
Особенно это важно в эпоху адаптивного веб-дизайна, когда на первый план выходит способность front-end адаптироваться к широкому диапазону различных устройств и при этом обеспечивать оптимальное качество просмотра.
Раньше дизайнер создавал макет дизайна в Photoshop , который затем переносился в HTML и CSS . На сегодняшний день технологические изменения заставляют переосмыслить эту концепцию. Мы больше не можем предсказать, какой браузер, разрешение или устройство будут использоваться для просмотра сайта. Ушли в прошлое те времена, когда большинство компьютеров использовало фиксированное разрешение 1024 на 768 пикселей, и можно было разрабатывать сайты со статическими размерами.
Современные браузеры полностью поддерживают HTML5 и CSS3 . Но один и тот же код HTML / CSS / JavaScript в старых браузерах интерпретируется по-разному, что приводит к «кроссбраузерной несовместимости » сайта. Особенно это касается старых версий Internet Explorer .
В данной статье мы рассмотрим текущую статистику по просмотрам веб-страниц, приведем перечень средств, которые помогают решать различные проблемы совместимости.
1. Текущая ситуация
Общемировая статистика за 2015 год показывает, что топ-14 используемых разрешений экрана находятся в диапазоне от 1920 на 1080 до 320 на 480 пикселей.
Хотя Windows 7 (31,20% ) до сих пор удерживает большую долю рынка, мобильные платформы начинают заменять традиционные, стационарные.
Взглянув на статистику за 2015 год по используемым браузерам, мы видим, что первое место принадлежит Chrome (все версии — 44,87% ), второе место — Firefox (все версии — 10,37% ), третье Internet Explorer 11 (6,84% ).
Ускоренные темпы выпуска новых версий Google Chrome и Firefox позволяют более эффективно разрабатывать проекты для этих платформ. Немного другая картина складывается для «плохого парня » Internet Explorer , потому что в Сети до сих пор можно найти его старые версии. А это приводит к возникновению проблем с кроссбраузерностью сайта.
Корпорация Microsoft остановила поддержку IE6 8 апреля 2014 года. И с 2016 года будет поддерживаться и получать обновления только самая последняя версия Internet Explorer . Это фактически означает, что в начале 2016 года была полностью прекращена поддержка IE7 и IE8 , независимо от операционной системы. IE9 будет поддерживаться только в Windows Vista , IE10 — только в Windows Server 2012 , IE11 — в Windows 7 и Windows 8.1 :
Как следствие, нужно прекратить разработку под IE6 и, а также под IE7 . Чтобы обосновать эту стратегию, можно привести несколько примеров решений известных компаний: Google прекратила поддержку IE8 в ноябре 2012 года, а IE9 — в октябре 2013 года.
Github больше не поддерживает IE 7 и 8 . Кроме этого часть функционала Twitter не работает в IE8 . И, наконец, популярный фреймворк не будет поддерживать IE8 , начиная с 4 версии .
Тем не менее, статистика использования может варьироваться в зависимости от региона: 6,11% пользователей в Китае в 2015 году по-прежнему просматривали страницы через IE8 . Если принять во внимание, что в Китае было около 724400000 интернет-пользователей, можно понять, что в этом году примерно 44200000 китайцев продолжают использовать IE8 .
Поэтому региональные рынки, специфические клиенты и требования отрасли могут существенно отличаться. Особенно это касается корпоративных и правительственных учреждений.
2. Проанализируйте свою аудиторию
Основной принцип здесь такой: чем выше требуемая кроссбраузерность, тем больше времени потребуется на разработку, что приводит к увеличению стоимости проекта. Чтобы принять взвешенное, экономически обоснованное решение, нужно задать себе следующие вопросы:
- Какова ваша целевая аудитория?
- На какой географический регион нужно настроить таргетинг?
- Какие браузеры и устройства используют ваши посетители?
- Существуют ли в компании или отрасли технические факторы, которые заставляют вас поддерживать конкретные версии старых браузеров?
- Каковы с точки зрения электронной коммерции коэффициенты конверсии и рентабельности различных групп пользователей по версиям браузеров?
Ответив на эти вопросы с помощью статистических данных, например, из Google Analytics , можно получить объективную картину.
3. Проблемы в устаревших браузерах и различные подходы к разработке
Адаптивный веб-дизайн во многом зависит от медиа-запросов, с помощью которых изменяется CSS
для различных разрешений экрана. Кроме этого современные сайты характеризуются использованием семантических элементов HTML5
(например,
Это подводит нас к следующим техническим сложностям при реализации CSS кроссбраузерности:
- Медиа-запросы CSS3
- Семантические элементы HTML5 : не поддерживается в IE6 , 7 и 8 ;
- Селекторы CSS3 : не поддерживается в IE6 . Только частично поддерживаются в IE7 и 8 ;
- Единицы REM : не поддерживается в IE6 , 7 и 8 . Только частично поддерживаются в IE9 и 10 ;
- Лимит количества правил CSS : IE9 и ниже поддерживают только 4095 CSS-селекторов . Правила после 4095-ого селектора не применяются.
Указанные выше ошибки будут иметь наибольшее влияние на стратегию, применяемую при реализации адаптивного дизайна.
Существуют две основных стратегии разработки: постепенное упрощение и прогрессивное улучшение .
Прогрессивное улучшение — основано на принципе, предполагающем начало разработки с общего знаменателя, с минимальных технических требований и уровня опыта взаимодействия пользователя, предлагаемого сайтом. Посетители, заходящие на сайт через последние версии браузеров и устройств, будут обслуживаться прогрессивно расширяемой версией сайта со всеми новейшими функциями.
С другой стороны, пользователям старых браузеров и медленного интернет-соединения будет предлагаться графически усеченная, но все еще функциональная версия сайта.
Подобный подход при реализации кроссбраузерности предполагает начало разработки с простой версии, к которой затем добавляются более сложные элементы. Старые браузеры смогут отображать сайт с базовым уровнем опыта взаимодействия. А новые функции HTML / CSS / JavaScript будут доступны в браузерах, которые могут реально их использовать.
В противоположность этому, постепенное упрощение обеспечивает полнофункциональный уровень UX в современных браузерах. А затем постепенно уменьшает его сложность для старых браузеров за счет графики, но, не касаясь функционала. Идея заключается в том, чтобы начать разработку с новейших веб-стандартов, а затем попытаться минимизировать проблемы, связанные со старыми браузерами.
Какой подход выберете вы, зависит от личных предпочтений и условий проекта:
- Прогрессивное улучшение обеспечивает большую стабильность, так как вы можете постепенно добавлять новые функции для современных браузеров. Но оно требует более тщательного планирования;
- Некоторые разработчики утверждают, что нет смысла поддерживать устаревшие браузеры и должны использоваться новейшие технологии. Поддержка современных браузеров дает намного лучший опыт взаимодействия;
- Существует мнение, что прогрессивное улучшение мертво, так как множество JavaScript-приложений не работают надлежащим образом при этом подходе;
- Веб-доступность для общественных учреждений может быть определена в юридических требованиях конкретных территориальных образований, и это может повлечь необходимость применения особого подхода.
Учитывая появление таких инструментов для определения функций, как Modernizr , лично я склоняюсь к использованию постепенного упрощения и черного списка браузеров при разработке совместимых сайтов.
4. Тестирование, тестирование, тестирование…
Чтобы как можно скорее обнаружить потенциальные проблемы кроссбраузерности JavaScript , нужно в процессе разработки тестировать сайт в различных браузерах и разрешениях. Существуют различные программные эмуляторы, которые могут нам помочь:
- Browserstack — это коммерческий сервис, который предоставляет доступ к тестовой среде, в которой можно проверить свой проект более чем на 700 стационарных браузерах и мобильных устройствах с помощью виртуальной машины в облаке;
- Microsoft Virtual Machines — если вы работаете в Linux, у вас не будет доступа к Internet Explorer . Решение может заключаться в том, чтобы загрузить образы виртуальных машин для IE6 в IE11 , которые затем могут использоваться в сочетании с Oracle VM Virtualbox или Vagrant для локального тестирования;
- Различные разрешения экрана для конкретного браузера можно быстро протестировать с помощью онлайн-сервиса Screenfly . С использованием плагинов для браузеров, таких как Window Resizer для Google Chrome , или непосредственно в разделе инструментов для разработчиков Chrome и Firefox .
5. Normalize.css и CSS Autoprefixer
Обычно я начинаю новые проекты со сброса CSS с помощью Normalize.css , который обеспечивает лучшую кроссбраузерность при определении стилей HTML-элементов , используемых по умолчанию, вплоть до Internet Explorer 8 . Normalize.css сохраняет нужные стили элементов, нормализует их внешний вид и исправляет ряд ошибок и несоответствий в различных браузерах.
Кроме этого многие устаревшие браузеры не могут интерпретировать неизвестные элементы HTML и свойства CSS . Когда браузер встречает фрагмент HTML или CSS , который он не понимает, то игнорирует его и продолжает процесс отображения. Многие приложения используют вендорные префиксы, чтобы добавить новые, экспериментальные или нестандартные функции CSS до их реализации в спецификации:
// Webkit-браузеры, такие как Chrome и Safari -webkit- // Firefox -moz- // Internet Explorer -ms- // Opera -o-
Проблема заключается в том, что префиксы неудобны в использовании и с ними связано много ошибок. Поэтому я использую плагин CSS Autoprefixer в сочетании с Grunt .
Обычные правила CSS будут обработаны с помощью плагина и к ним будут добавлены префиксы на основе базы данных «Can I Use «. Рекомендуется задать в конфигурации версии браузеров, которые нужно поддерживать, например:
options: { browsers: ["last 2 versions", "ie >= 8", "Firefox >= 12", "iOS >= 7", "Android >= 4"] }
В качестве примера рассмотрим следующий класс CSS :
Example { background-image: linear-gradient(top left, #4676dd, #00345b); display: flex; transition: 1s all; }
С помощью CSS Autoprefixer он преобразуется в:
Example { background-image: -webkit-linear-gradient(top left, #4676dd, #00345b); background-image: -moz-linear-gradient(top left, #4676dd, #00345b); background-image: linear-gradient(top left, #4676dd, #00345b); display: -webkit-box; display: -webkit-flex; display: -moz-box; display: -ms-flexbox; display: flex; -webkit-transition: 1s all; -moz-transition: 1s all; transition: 1s all; }
6. Условные комментарии
Если нужно создать резервный CSS или включить кроссбраузерность JavaScript для ранних версий Internet Explorer , то можете использовать условные комментарии . Они поддерживаются в Internet Explorer 5-9 , они используют синтаксис комментариев HTML в сочетании с логическими значениями. В зависимости от логического значения (true или false ) код внутри тегов комментариев будет выводиться или скрываться в соответствующих версиях браузера:
کدی که باید انجام شود // если Internet Explorer // если НЕ Internet Explorer // если Internet Explorer 7 // если НЕ Internet Explorer 7 // если Internet Explorer 9 или НИЖЕ // если Internet Explorer 7 или ВЫШЕ // если Internet Explorer 6 ИЛИ 7 // если ВЫШЕ Internet Explorer 6 НО НИЖЕ 9
Код автоматически скрывается во всех браузерах, не поддерживающих условные комментарии. Наглядным примером того, как условные комментарии могут быть эффективно использованы на практике, является HTML5 Boilerplate , который добавляет специфические классы CSS для устаревших версий Internet Explorer :
7. چند کاره
ناسازگاری های فنی مرورگرهای منسوخ شده برای طراحی وب پاسخگو را می توان با استفاده از چندکاره اصلاح کرد. این یک تکه از کد JavaScript است که شکاف عملکردی خاصی را بین یک مرورگر منسوخ و یک عملکرد "پر" می کند. تعدادی از چند شکل خاص وجود دارد که می تواند برای ارائه پشتیبانی مرورگر از ویژگی های HTML5 استفاده شود.
در زیر چند مورد استفاده قرار داده شده است که برای رفع مشکلات مرورگر سایت ، در بند 3 به آنها اشاره شده است:
- bers.js - پیاده سازی می کند نمایش داده شد رسانه CSS3 برای Internet Explorer 6 - 8؛
- html5shiv استفاده از عناصر معنایی HTML5 را در Internet Explorer 6-8 امکان پذیر می کند.
- selectivzr - انتخاب کنندگان CSS3 و کلاس های شبه را در Internet Explorer 6 - 8 تقلید می کند. پشتیبانی کامل به Mootools 1.3 یا NWMatcher 1.2.3 نیاز دارد. پشتیبانی جزئی با جی کوئری 1.3 / 1.4 در دسترس است.
- REM-unit-polyfill - مشخص می کند که آیا مرورگر از واحدهای Rem پشتیبانی می کند یا خطایی برای شما ایجاد می کند. با IE8 و زیر کار می کند.
برای استفاده از این چندکاره ها ، آنها باید از CDN یا به صورت یک فایل با فرمت صحیح در داخل نظرات شرطی در بخش اضافه شوند.
(فراموش نکنید که یکی از آنها را نیز شامل شوید کتابخانه های جاوا اسکریپت مورد نیاز Selectivizr است):
برای هر پروژه ، باید ارزیابی کنید که آیا این اسکریپت های اضافی واقعاً مورد نیاز هستند ، زیرا می توانند منجر به مشکلات عملکرد شوند. اکثر پلاستیک ها جمع و جور هستند ، اما هر اسکریپت دارای بار اضافی یک درخواست HTTP اضافی است. این ممکن است بارگیری صفحه را کند کند.
8- تعریف توابع با استفاده از Modernizr
کتابخانه JavaScript Modernizr به شما کمک می کند تا سازگاری مرورگر سایت را بررسی کنید: آیا یک عملکرد خاص HTML5 یا CSS3 در مرورگرهای مختلف پشتیبانی می شود. اگر عملکرد در دسترس نباشد ، ممکن است کد CSS یا JavaScript جایگزین شود.
ایده این است که به طور مستقیم عملکرد مرورگر را تعیین کنید ، و سعی نکنید نسخه خاصی از آن را نصب کنید. و بر این اساس ، عملکرد آن را استخراج کنید ، که روشی کم کارآمد و قابل اعتماد است.
شایان ذکر است که Modernizr ویژگی های از دست رفته را به مرورگر اضافه نمی کند. بنابراین ، شما نیاز به تهیه کد مربوط به fall CSS یا polyfill دارید.
ابتدا باید یک مونتاژ کاملاً کاربردی را بارگیری کنید. بعداً وقتی آماده توسعه هستید ، می توانید ایجاد کنید مونتاژ سفارشی با ویژگی های خاصی که شما آزمایش می کنید. تمام کاری که شما باید انجام دهید این است که کلاس .no-js را به برچسب HTML سایت اضافه کنید و اسکریپت Modernizr را در بخش سر بعد از هر پرونده CSS قرار دهید:
نسخه ی نمایشی Modernizr
این یک تمرین مدرنیزر است.
کلاس .no-js برای بررسی اینکه آیا JavaScript در مرورگر کاربر فعال است استفاده می شود. در صورت فعال بودن ، Modernizr کلاس .js را جایگزین .no-js می کند. عملکرد تست Modernizr تجزیه و تحلیل می کند که آیا عملکرد خاصی در مرورگر پشتیبانی می شود و یک سری کلاس ایجاد می کند که به عنصر HTML اضافه می شوند یا خیر. به عنوان مثال Google Chrome 47.0.2526.111 کلاس های شیء زیر را برمی گرداند.
Modernizr در حال حاضر به عنوان یک شیء جهانی در دسترس است که می توان آن را همراه با نام عملکرد نامید تا بررسی کند که آیا وجود دارد یا خیر. مقدار بولی را برمی گرداند ( درست یا غلط).
بیایید به دو نمونه ساده از CSS و JavaScript نگاه کنیم.
به عنوان مثال حل مسئله CSS CSS مرورگر: بررسی پشتیبانی از SVG و ارائه PNG به عنوان یک خطای برگشت
در حال حاضر ، روند به سمت استفاده فزاینده فعال از SVG وجود دارد ( گرافیک برداری مقیاس پذیر) ، اما این گرافیک در IE8 و زیر پشتیبانی نمی شود. اگر SVG در یک مرورگر پشتیبانی شود ، Modernizr یک کلاس CSS.svg تولید می کند. اگر SVG در دسترس نباشد ، ابزار کلاس .no-svg را به HTML اضافه می کند. با استفاده از CSS زیر ، مرورگرهای دارای SVG از کلاس معمولی .logo استفاده می کنند ، در حالی که مرورگرهای غیر SVG از قوانین .no-svg استفاده می کنند:
لوگو (پس زمینه-تصویر: url ("logo.svg")؛ عرض: 164px؛ ارتفاع: 49px؛) .no-svg .logo (پس زمینه-تصویر: url ("/logo.png") ؛ عرض: 164px؛ ارتفاع: 49px؛)
مثال JavaScript: تعریف شعاع مرزی و اضافه کردن کلاسهای مناسب CSS
دور گوشه های قاب در IE8 و پایین پشتیبانی نمی شود. ما می توانیم کلاسهای مختلف CSS ایجاد کنیم که بسته به حضور عملکرد شعاع مرزی استفاده می شود:
// کلاس برای مرورگر با عملکرد مرز شعاعی .round-مرزها (مرز-شعاع: 5px؛) // کلاس برای مرورگر بدون عملکرد مرز-شعاع .black-مرزها (مرز: 3px جامد # 000000؛)
اکنون می توانید از JavaScript استفاده کنید تا شناسه هدف را به عنوان متغیر ذخیره کنید و سپس کلاس های CSS را از طریق شرط اضافه کنید:
var element \u003d document.getElementById ("TestID")؛ if (Modernizr.borderradius) (element.className \u003d "مرزهای گرد"؛) دیگری (element.className \u003d "سیاه-مرزها"؛)
نتیجه گیری
وقتی صحبت از طراحی وب پاسخگو در مرورگرهای میراث است ، هیچ راه حل جهانی وجود ندارد. تجزیه و تحلیل مخاطبان منبع برای دستیابی به ایده ای از تعداد واقعی کاربران مرورگر مهم است. سپس برای شناسایی مشکلات احتمالی مرورگر متقابل باید سایت را به طور کامل آزمایش کنید.
منتشر شده: 06/07/2011
من یک بار دیگر هک های مرورگرهای مختلف را که به خوبی شناخته شده اند و 100 هزار و 500 بار شرح داده شده در ابتدا توضیح خواهم داد.
در اینجا تعریف هک از وب سایت hlmlbook.ru Vlad Merzhevich آمده است: "هک مجموعه ای از تکنیک ها است که با هدف تنظیم سبک یک عنصر خاص برای یک مرورگر متفاوت از سبک سایر مرورگرها است."
اول از همه ، من به راه حل های فعلی کار علاقه مند بودم ، بنابراین همه نمونه ها را در جدیدترین نسخه ها ، به جز IE ، نسخه های مرورگر بررسی کردم (Opera 11، Firefox 4، Chrome 13، Safari 5، IE 8).
اینترنت اکسپلورر
"متفاوت" ترین با سایر مرورگرها. علاوه بر این ، هر نسخه به روش خاص خود "متفاوت" است. با این حال ، واقعیت را آنگونه که هست می پذیریم. اما واقعیت این است که هک های کافی برای نسخه های مختلف اینترنت اکسپلورر در هنگام چیدمان وجود دارد تا آنها را در یک پرونده جداگانه قرار دهید و فقط برای این خانواده مرورگر بارگیری کنید. برای این ، در بخش
سند HTML ، نظری بنویسید که می تواند Internet Explorer را تشخیص دهد.
کلمات کلیدی زیر می توانند به عنوان یک شرط استفاده شوند:
- اینترنت اکسپلورر - هر نسخه از Internet Explorer؛
- اینترنت اکسپلورر 7 - اینترنت اکسپلورر 7؛
- اینترنت اکسپلورر 8 - اینترنت اکسپلورر 8؛
- اینترنت اکسپلورر 9 - اینترنت اکسپلورر 9؛
- lt - تعداد نسخه مرورگر کمتر از مشخص شده؛
- gt - شماره نسخه بیشتر از مشخص شده است؛
- lte - شماره نسخه کمتر از یا مساوی با مشخص شده است؛
- gte - شماره نسخه مرورگر بزرگتر یا مساوی با مشخص شده است.
شاید من به طور جداگانه هک IE 7 را ذکر کنم: ستاره ای مقابل نام انتخاب کننده. به عنوان مثال:
# نمونه (
رنگ: سبز؛
* رنگ: قرمز؛
}
کروم و سافاری
هک مرورگرها بر اساس موتور وب کیت - Chrome و Safari:
صفحهmedia و (-webkit-min-device-pixel-نسبت: 0) (
# نمونه (
رنگ: قرمز؛
}
}
فایرفاکس
@ -moz-document url-prefix () ()
# نمونه (
رنگ: قرمز؛
}
}
اپرا
هیچ هک جهانی برای اپرا وجود ندارد! بله ، البته ، می توانید هک هایی را برای Opera در شبکه پیدا کنید ، اما ، افسوس ، این اطلاعات کمی قدیمی است. یک بار هک شده بود ، اما همه چیز بیرون آمد:
media همه و (min-عرض: 0px) (
}
Hmm ، اگر برای همه مرورگرها هک وجود دارد ، اما برای Opera نیست ، نتیجه گیری منطقی این است: ابتدا باید Opera را جبران کنید و سپس طرح را برای سایر مرورگرها صاف کنید. چگونه به آن نگاه می کنید؟
UPD 08/09/11: آخرین گزارش ها از جبهه ها: در Habré هک اپرا وجود داشت. در اینجا یکی است:
media همه و (-webkit- دقیقه-دستگاه-پیکسل-نسبت: 10000) ،
نه همه و (-webkit- دقیقه-دستگاه-نسبت پیکسل: 0) (
# نمونه (رنگ: قرمز؛)
}
با این حال ، من اکیداً توصیه می کنم از آن استفاده نکنید. من نظر وادیم Makeev (با نام پپلزبی) را به عنوان استدلال بیان می کنم: "این هک ها مبتنی بر پشتیبانی ناقص یا نادرست از Query Media هستند و می توانند با بروزرسانی جزئی مرورگر جزئی که برطرف شده یا پشتیبانی را تکمیل می کند ، شکسته شوند.. که در واقع با اولین هک برای اپرا اتفاق افتاد که در این مقاله به آن اشاره شده است.
بر این اساس ، ما هنوز معتقدیم که بهترین هک برای مرورگر Opera یک طرح صحیح و معتبر است.