ამ სტატიაში ჩვენ გადავხედავთ, რა არის ბრაუზერის წინასიტენი, მათი გარეგნობის მიზეზები და როგორ გამოვიყენოთ ისინი CSS- ში.
რა არის პრეფიქსი?
ვებ დეველოპერი CSS– ის თეორიული საფუძვლების შესწავლას და ამ ცოდნის პრაქტიკაში გამოყენებას, შესაძლოა რეალური პრობლემები შეექმნას რეალურ სამყაროში მოცემული მაგალითები. ამან შეიძლება გამოიწვიოს მას იმის ცოდნა, რაც ხდება და ამ ტექნოლოგიის შემდგომი შესწავლის სურვილს შეაფერხებს.
მაგალითად, ვებსაიტის სტილის განხილვისას, ვებგვერდზე შემქმნელმა შეიძლება წააწყდეს თვისებებს, რომლებიც შეიცავს წინ რაიმე ბუნდოვან სიტყვას: -webkit-, -moz-, -ms- და ა.შ.
* (-ბოკიტ-ყუთის ზომის: სასაზღვრო ყუთი; -მოზ-ყუთის ზომის: სასაზღვრო ყუთი; ყუთის ზომის: სასაზღვრო ყუთი;)
რა არის ეს? სინამდვილეში, ყველაფერი მარტივია, ეს ბუნდოვანი სიტყვები შემდეგი ბრაუზერების პრეფიქსია:
- -webkit-: ბრაუზერები Chrome, Safari, Opera;
- -moz-: Mozilla Firefox ბრაუზერი;
- -ms-: Internet Explorer ბრაუზერი.
ამრიგად, თუ ქონების სახელწოდება არის პრეფიქსი, ეს ნიშნავს, რომ ეს ქონება ხორციელდება და გამოყენებული იქნება ექსკლუზიურად ბრაუზერში. ყველა სხვა ბრაუზერი უგულებელყოფს ამ ქონებას. მათთვის, ეს პრეფიქსი უცნობია.
პრეფიქსიების გამოჩენის მიზეზები?
უამრავი პრეფიქსების გამოჩენის უამრავი მიზეზი არსებობდა:
- ექსპერიმენტული CSS თვისებების ბრაუზერში ჩართვისთვის, რომლებიც ჯერ არ არის დამტკიცებული სტანდარტით. ამრიგად, ბრაუზერის შემქმნელები შეამოწმონ და გააკეთონ წინადადებები სტანდარტში CSS თვისებების დამტკიცებამდე.
- ჯვარედინი ბრაუზერის პრობლემების გადასაჭრელად.
- საკუთარი თვისებების შესაქმნელად, რომლებიც არ არის CSS სტანდარტის ნაწილი, მაგრამ შეიძლება მასში გარკვეული დროის შემდეგ გამოჩნდეს.
როდესაც ექსპერიმენტული თვისება დამტკიცებულია სტანდარტში და ბრაუზერში ჩაბმული ტესტირება, პრეფიქსი ჩვეულებრივ ამოღებულია მისგან.
როგორ გამოვიყენოთ პრეფიქსიები?
განვიხილოთ შემდეგი კოდი, როგორც მაგალითი:
* (-ბოკიტ-ყუთის ზომის: სასაზღვრო ყუთი; -მოზ-ყუთის ზომის: სასაზღვრო ყუთი; ყუთის ზომის: სასაზღვრო ყუთი;)
ეს კოდი იყენებს CSS თვისებებს, რომლებიც ცვლის ალგორითმს ვებსაიტის ყველა ელემენტის სიგანისა და სიმაღლის გამოსათვლელად. პირველი CSS თვისება - wkkit-box- ის სასაზღვრო ყუთის მნიშვნელობის მქონე ბრაუზერები განკუთვნილია ბრაუზერებისთვის, რომლებიც იყენებენ ვებკიტს (Safari) ან მოციმციმე ძრავას (Chrome, Opera, Yandex.Browser). მეორე CSS საკუთრება - მოზ-ყუთი ზომის, რომელსაც აქვს სასაზღვრო ყუთის მნიშვნელობა, განკუთვნილია ბრაუზერებისთვის, რომლებიც იყენებენ Gecko ძრავას (Mozilla Firefox). ბოლო CSS ქონება განკუთვნილია ბრაუზერებისთვის, რომლებშიც ეს ქონება უკვე გამოცდილია და განხორციელებულია სტანდარტის შესაბამისად.
CSS თვისებებისათვის წინასიტყვისების გამოყენებისას გახსოვდეთ, რომ ისინი უნდა განთავსდეს CSS თვის წინამდგომოდ, პრეფიქსი გარეშე. რატომ არის ეს ასე მნიშვნელოვანი? ეს მნიშვნელოვანია იმის გამო, რომ თუ ბრაუზერში ერთხელ დაინერგა ორიგინალური თვისება (პრეფიქსი გარეშე), მაშინ ის გამოიყენებს (რადგან ის ბოლოა), და არა მისი ექსპერიმენტული ვერსია.
მაგალითად: CSS ქონების ვებგვერდის ყველა ელემენტის გამოყენება Google Chrome- ის 40 ვერსიაში.
ზემოთ მოყვანილი ფიგურა გვიჩვენებს, რომ ყუთის ზომის ორიგინალი ქონება უკვე ჩაშენებულია ამ ბრაუზერში და იმის გამო, რომ იგი ბოლოა, ბრაუზერი იყენებს მას ზემოთ მოყვანილი wbkit-box ზომის საკუთრების ნაცვლად.
როგორ შეამოწმოთ ბრაუზერში კონკრეტული ქონების მხარდაჭერა?
საიტი, რომელზეც შეგიძლიათ შეამოწმოთ, განხორციელებულია თუ არა ეს თვისება კონკრეტულ ბრაუზერში, შეიძლება იყოს ქვემოთ მოცემული ბმული. გარდა ამისა, საიტი აჩვენებს მომხმარებელთა პროცენტულ რაოდენობას, რომლებიც იყენებენ ბრაუზერის ამ ვერსიას.
ვებსაიტზე "შემიძლია გამოვიყენო ..."მაგალითად: შეამოწმეთ, თუ როგორ ხორციელდება ტრანსფორმაციის თვისება ბრაუზერებში.
CanIUse ვებსაიტზე, ბრაუზერები აღინიშნება სხვადასხვა ფერში, ეს დამოკიდებულია სახელმწიფოზე, რომელშიც გარკვეული თვისებების ან ტეგების მხარდაჭერა მდებარეობს:
- წითელი ოთხკუთხედი არის ბრაუზერი, რომელშიც ეს ქონება არ ხორციელდება;
- ზედა მართკუთხედის ზედა ნაწლავში ჩასმული მწვანე ოთხკუთხედი არის ბრაუზერი, რომელშიც ამ თვისებას იყენებენ პრეფიქსი საშუალებით;
- ღია მწვანე ოთხკუთხედი არის ბრაუზერი, რომელშიც ეს თვისება ნაწილობრივ ხორციელდება;
- მწვანე ოთხკუთხედი არის ბრაუზერი, რომელშიც ეს ქონება ხორციელდება სტანდარტის შესაბამისად.
მოგეხსენებათ, ყველა ბრაუზერი არ ცვლის css სტილის ფაილებს იგივე გზით. ძირითადად, პრობლემები წარმოიქმნება მცირე მასშტაბის შექმნის ძველ ვერსიებთან ინტერნეტის გამომძიებელი (ვერსია 7 და ქვემოთ). სხვათა შორის, თუ პრობლემა გვხვდება თანამედროვე ბრაუზერებში (მაგალითად, Opera, Mozilla Firefox, Chrome), მაშინ მე გირჩევთ გადახედეთ გვერდის განლაგებას.
ასე რომ აქ. ბრაუზერების პრობლემაა. მე ვიცი მინიმუმ სამი გზა ამ პრობლემის გადასაჭრელად.
1 მეთოდი. ყველაზე სწორი
სტილები ბრაუზერებისთვის, რომლებიც არ ესმით თქვენი 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. ნაწილობრივი მხარდაჭერა ხელმისაწვდომია jQuery 1.3 / 1.4;
- REM-unit-polyfill - განსაზღვრავს თუ არა ბრაუზერი მხარს უჭერს Rem ერთეულებს და უზრუნველყოფს ხარვეზს. მუშაობს IE8 და ქვემოთ.
ამ მრავალხმიანობების გამოსაყენებლად, ისინი უნდა დაემატოთ CDN– სგან, ან როგორც ფაილი სწორი ფორმატით, შიგნით პირობითი კომენტარების განყოფილებაში.
(არ უნდა დაგვავიწყდეს, რომ ჩართოთ ერთი) selectivizr- ისთვის საჭიროა JavaScript ბიბლიოთეკები):
თითოეული პროექტისათვის, თქვენ უნდა შეაფასოთ რამდენად საჭიროა ეს დამატებითი სკრიპტები, რადგან ამან შეიძლება გამოიწვიოს შესრულების პრობლემები. პოლიფილების უმეტესობა კომპაქტურია, მაგრამ დამატებით დატვირთული სკრიპტები დამატებით HTTP მოთხოვნაა. ამან შეიძლება შეანელოს გვერდის დატვირთვა.
8. მოდერნიზრის გამოყენებით ფუნქციების განსაზღვრა
JavaScript Modernizr ბიბლიოთეკა დაგეხმარებათ შეამოწმოთ საიტის ჯვრის ბრაუზერის თავსებადობა: არის თუ არა კონკრეტული HTML5 ან CSS3 ფუნქცია მხარდაჭერილი სხვადასხვა ბრაუზერებში. თუ ფუნქცია მიუწვდომელია, შესაძლებელია ალტერნატიული CSS ან JavaScript კოდი.
იდეა არის პირდაპირ დაადგინოთ ბრაუზერის ფუნქციონალური ფუნქცია და არა შეეცადოთ დააინსტალიროთ მისი კონკრეტული ვერსია. და ამის საფუძველზე დაასაბუთეთ მისი ფუნქციონირება, რაც ნაკლებად ეფექტური და საიმედო საშუალებაა.
აღსანიშნავია, რომ Modernizr არ დაამატებს ბრაუზერში დაკარგული მახასიათებლებს. ამრიგად, თქვენ უნდა მიაწოდოთ კოდი შემოდგომაზე CSS ან პოლიფილიდან.
პირველი თქვენ უნდა ჩამოტვირთოთ სრულად ფუნქციონალური ასამბლეა. მოგვიანებით, როდესაც მზად ხართ განვითარებისთვის, შეგიძლიათ შექმნათ საბაჟო შეკრება სპეციფიკური მახასიათებლებით, რომლითაც გამოსცადეთ. თქვენ უნდა დაამატოთ .no-js კლასს საიტის HTML ტეგზე და შეიტანოთ Modernizr სკრიპტი სათავე განყოფილებაში ნებისმიერი CSS ფაილის შემდეგ:
მოდერნიზებული დემო
ეს არის მოდერნიზორის სავარჯიშო.
.No-js კლასი გამოიყენება იმის სანახავად, თუ ჩართულია JavaScript მომხმარებლის ბრაუზერში. თუ ჩართულია, Modernizr ჩაანაცვლებს .no-js ერთად .js კლასს. ტესტის ფუნქცია Modernizr აანალიზებს, არის მხარდაჭერილი ბრაუზერში გარკვეული ფუნქცია და წარმოშობს კლასების სერიას, რომელსაც ემატება HTML ელემენტი. მაგალითად, Google Chrome 47.0.2526.111 დაუბრუნდება შემდეგ ობიექტების კლასებს.
მოდერნიზრი ამჟამად ხელმისაწვდომია, როგორც გლობალური ობიექტი, რომელსაც შეიძლება ეწოდოს ფუნქციის სახელთან ერთად, რათა შეამოწმოს ის არსებობს. ეს უბრუნებს boolean მნიშვნელობას ( მართალია თუ ყალბი).
მოდით განვიხილოთ CSS და JavaScript ორი მარტივი მაგალითი.
ჯვარედინი ბრაუზერის CSS CSS პრობლემის გადაჭრის მაგალითად: SVG მხარდაჭერის შემოწმება და PNG როგორც ნაკლოვანების უზრუნველყოფა
ამჟამად, არსებობს ტენდენცია SVG უფრო აქტიური გამოყენებისკენ ( მასშტაბური ვექტორიანი გრაფიკა), მაგრამ ეს გრაფიკი არ არის მხარდაჭერილი IE8- ში და ქვემოთ. თუ SVG მხარდაჭერილია ბრაუზერში, Modernizr წარმოქმნის CSS კლასს.svg. თუ SVG მიუწვდომელია, ინსტრუმენტი HTML. Sv-svg კლასს დაამატებს. ქვემოთ მოყვანილი CSS– ის გამოყენებით, SVG ჩართული ბრაუზერები გამოიყენებენ რეგულარულ .logo კლასს, ხოლო არა – SVG ბრაუზერები გამოიყენებენ .no-svg წესებს:
ლოგო (ფონის-სურათი: url ("logo.svg"); სიგანე: 164px; სიმაღლე: 49px;) .no-svg .logo (ფონი-სურათი: url ("/logo.png"); სიგანე: 164px; სიმაღლე: 49px;)
JavaScript- ის მაგალითი: საზღვრის რადიუსის განსაზღვრა და შესაბამისი CSS კლასების დამატება
ჩარჩოს კუთხეების დამრგვალება არ არის მხარდაჭერილი IE8- ში და ქვემოთ. ჩვენ შეგვიძლია შევქმნათ სხვადასხვა CSS კლასები, რომლებიც გამოიყენება სასაზღვრო-რადიუსის ფუნქციის არსებობის გათვალისწინებით:
// ბრაუზერის კლასი სასაზღვრო-რადიუსის ფუნქციით. გარეთა-საზღვრები (სასაზღვრო რადიუსი: 5px;) // კლასს ბრაუზერისთვის სასაზღვრო-რადიუსის ფუნქციის გარეშე .ბლაკის საზღვრები (საზღვარი: 3px მყარი # 000000;)
ახლა თქვენ შეგიძლიათ გამოიყენოთ JavaScript, შეინახოთ სამიზნე იდენტიფიკატორი, როგორც ცვლადი, შემდეგ კი დაამატეთ CSS კლასები პირობითად:
var element \u003d document.getElementById ("TestID"); if (Modernizr.borderradius) (element.className \u003d "მრგვალი საზღვრები";) სხვა (element.className \u003d "შავი საზღვრები";)
დასკვნა
როდესაც საქმე ეხება საპასუხო ვებ – დიზაინს მემკვიდრე ბრაუზერებში, არ არსებობს უნივერსალური გამოსავალი. მნიშვნელოვანია რესურსის აუდიტორიის ანალიზი, რათა გაითვალისწინოთ ბრაუზერის მომხმარებელთა რეალური რაოდენობა. შემდეგ საჭიროა საფუძვლიანად შეამოწმოთ საიტი, რომ განიხილოთ პოტენციური ჯვარედინი ბრაუზერის პრობლემები.
გამოქვეყნებულია: 06/07/2011
კიდევ ერთხელ აღვწერ ჰაკებს სხვადასხვა ბრაუზერისთვის კარგად ნაცნობი და უფრო ადრე აღწერილი 100,500 ჯერ.
აქ მოცემულია ჰალდის განმარტება ვლად მერგევიჩის ვებგვერდიდან htmlbook.ru: ”hack არის ტექნიკის ნაკრები, რომელიც მიზნად ისახავს ერთი ბრაუზერისთვის გარკვეული ელემენტის სტილის დაყენებას, რაც განსხვავდება სხვა ბრაუზერების სტილიდან.”
პირველ რიგში, მე დაინტერესებული ვიყავი მიმდინარე სამუშაო გადაწყვეტილებებით, ამიტომ ყველა მაგალითს გადავამოწმე უახლესი, გარდა IE, ბრაუზერის ვერსიები (Opera 11, Firefox 4, Chrome 13, Safari 5, IE 8).
ინტერნეტის გამომძიებელი
ყველაზე განსხვავებული ”სხვა ბრაუზერებისთვის”. უფრო მეტიც, თითოეული ვერსია "განსხვავებულია" საკუთარი გზით. თუმცა, ჩვენ ვიღებთ რეალობას ისე, როგორც არის. სინამდვილეში არის ის, რომ არსებობს საკმარისი საკინძები IE- ს სხვადასხვა ვერსიისთვის, როდესაც განლაგებაა მათ ცალკე ფაილში განთავსება და ჩატვირთვა მხოლოდ ამ ბრაუზერის ოჯახისთვის. ამისათვის განყოფილებაში
HTML დოკუმენტი, ჩაწერეთ კომენტარი, რომელსაც შეუძლია ამოიცნოს Internet Explorer.
შემდეგი საკვანძო სიტყვების გამოყენება შესაძლებელია როგორც პირობა:
- IE - Internet Explorer- ის ნებისმიერი ვერსია;
- IE 7 - Internet Explorer 7;
- IE 8 - Internet Explorer 8;
- IE 9 - Internet Explorer 9;
- lt - ბრაუზერის ვერსიის ნომერი მითითებულზე ნაკლები;
- gt - ვერსიის ნომერი აღემატება მითითებულს;
- lte - ვერსიის ნომერი მითითებულზე ნაკლები ან ტოლია;
- gte - ბრაუზერის ვერსიის ნომერი მითითებულზე მეტი ან ტოლია.
IE 7-ისთვის ალბათ ცალკე აღვნიშნავ ჰაკს: ასისტენტი ამომრჩევლის სახელის წინ. მაგალითად:
# მაგალითი (
ფერი: მწვანე;
* ფერი: წითელი;
}
Chrome და Safari
ჰაკ ბრაუზერებზე დაფუძნებული ვებკიტის ძრავაზე - Chrome და Safari:
@media ეკრანი და (-webkit-min-მოწყობილობა-პიქსელ-თანაფარდობა: 0) (
# მაგალითი (
ფერი: წითელი;
}
}
Firefox
@ -moz-დოკუმენტის url-პრეფიქსი () (
# მაგალითი (
ფერი: წითელი;
}
}
ოპერა
არ არსებობს უნივერსალური ჰაკები ოპერისთვის! დიახ, რა თქმა უნდა, თქვენ შეგიძლიათ ნახოთ ჰაკები ოპერისთვის ქსელში, მაგრამ, სამწუხაროდ, ეს ინფორმაცია ცოტა მოძველებულია. ერთხელ იყო ჰაკე, მაგრამ მთელი რამ გამოვიდა:
@media ყველა და (min- სიგანე: 0px) (
}
ჰმ, თუ ყველა ბრაუზერისთვის არის hacks, მაგრამ არა Opera– სთვის, ლოგიკური დასკვნა ასეთია: ჯერ Opera– ს შეადგენთ, შემდეგ კი სხვა ბრაუზერების განლაგებას. როგორ გიყურებთ?
UPD 08/09/11: უახლესი ცნობები ფრონტებიდან: ჰაბრეზე ოპერისთვის ჰაკე იყო. აქ არის ერთი:
@media ყველა და (-webkit-min-მოწყობილობა-პიქსელ-თანაფარდობა: 10000),
არა ყველა და (-webkit-min-მოწყობილობა-პიქსელის კოეფიციენტი: 0) (
# მაგალითი (ფერი: წითელი;)
}
ამასთან, გირჩევთ არ გამოიყენოთ იგი. როგორც არგუმენტს მივცემდი ვადიმ მადეევის (ა. პეპელსბეის) კომენტარს: "ეს ჰაკები ემყარება არასრული ან არასწორი მხარდაჭერას Media Query და შეიძლება დაარღვიოს ნებისმიერი მცირე ბრაუზერის განახლება, რომელიც გაასწორებს ან შეავსებს მხარდაჭერას. ნუ ისვრით თავს ფეხით. ნუ გამოიყენებთ პოტენციურად სახიფათო ჰაკებს.". რაც, ფაქტობრივად, მოხდა ამ ჰერპასთვის ოპერატორთან პირველ ჰაკთან, რომელიც ნახსენებია ამ სტატიაში.
ამის საფუძველზე, ჩვენ ჯერ კიდევ გვჯერა, რომ ოპერის ბრაუზერისთვის საუკეთესო ხერხი არის კომპეტენტური, მოქმედების განლაგება.