U ovom ćemo članku pogledati što su prefiksi preglednika, razloge njihove pojave i kako ih koristiti u CSS-u.
Šta su prefiksi?
Web programer koji počinje da uči teorijske osnove CSS-a i upotrebljavajući to znanje u praksi može naići na probleme kada pogledamo primjere iz stvarnog svijeta. To mu može uzrokovati nerazumijevanje onoga što se događa i obeshrabriti daljnju želju za proučavanjem ove tehnologije.
Na primjer, prilikom razmatranja stilova web stranice, web programer može naići na svojstva koja ispred sebe sadrže neke nejasne riječi: -webkit-, -moz-, -ms-, itd.
* (-webkit-box-dimenzioniranje: border-box; -moz-veličina kutije: border-box; veličina kutije: border-box;)
Šta je ovo? Zapravo, sve je jednostavno, ove su nejasne riječi prefiksi sljedećih pretraživača:
- -webkit-: preglednici Chrome, Safari, Opera;
- -moz-: Mozilla Firefox pregledač;
- -ms-: Internet pretraživač.
Dakle, ako je ime svojstva prefiksano, to znači da je ovo svojstvo implementirano i da će se koristiti isključivo u navedenom pregledniku. Svi ostali pregledači će ovu značajku zanemariti. za njih je taj prefiks nepoznat.
Razlozi za pojavu prefiksa?
Razloga za pojavu prefiksa bilo je puno:
- Za uključivanje u preglednik eksperimentalnih CSS svojstava koja standard još nije odobrila. Stoga proizvođači pregledača testiraju i daju prijedloge prije nego što odobre CSS svojstva u standardu.
- Da biste rešili probleme sa pretraživačima.
- Za kreiranje vlastitih svojstava koja nisu dio CSS standarda, ali mogu se u njima pojaviti nakon nekog vremena.
Kad se eksperimentalno svojstvo odobri u standardu i prođe testiranje u pregledniku, prefiks se obično uklanja s njega.
Kako se koriste prefiksi?
Razmotrite sljedeći kod kao primjer:
* (-webkit-box-dimenzioniranje: border-box; -moz-veličina kutije: border-box; veličina kutije: border-box;)
Ovaj kôd koristi svojstva CSS koja mijenjaju algoritam za izračunavanje širine i visine za sve elemente web stranice. Prvo CSS svojstvo -webkit-box-dimenzioniranje sa vrijednošću border-box-a namijenjeno je pregledačima koji koriste webkit (Safari) ili trepćući motor (Chrome, Opera, Yandex.Browser). Drugo CSS svojstvo -moz-box-dimenzioniranje sa vrijednošću border-box-a namijenjeno je pregledačima koji koriste Gecko motor (Mozilla Firefox). Posljednje svojstvo CSS namijenjeno je pregledačima u kojima je ovo svojstvo već testirano i implementirano u skladu sa standardom.
Kada koristite prefikse za svojstva CSS-a, imajte na umu da ih treba staviti ispred svojstva CSS bez prefiksa. Zašto je to tako važno? Ovo je važno jer ako se jednom jednom izvornom svojstvu (bez prefiksa) implementira u preglednik, tada će se koristiti (jer je posljednja), a ne njena eksperimentalna verzija.
Na primjer: primjena CSS svojstva na sve elemente web stranice u verziji 40 Google Chrome.
Na gornjoj slici je prikazano da je izvorni entitet veličine veličine okvira već ugrađen u ovaj preglednik, a zbog činjenice da je posljednji, preglednik ga koristi umjesto gore navedenog svojstva -webkit-box-veličine.
Kako provjeriti podršku za određeni entitet u pretraživaču?
Web lokacija na kojoj možete provjeriti je li taj entitet implementiran ili ne u određenom pregledniku može biti donja veza. Osim toga, stranica prikazuje postotak korisnika koji koriste ovu verziju pretraživača.
Web stranica "Mogu li koristiti ..."Na primjer: provjerite kako se svojstvo transformacije implementira u preglednike.
Na web mjestu CanIUse preglednici su označeni različitim bojama, ovisno o stanju u kojem se nalazi podrška za određena svojstva ili oznake:
- Crveni pravokutnik je preglednik u kojem ovo svojstvo nije implementirano;
- Zeleni pravokutnik s crticom u gornjem desnom kutu je preglednik u kojem se ovo svojstvo koristi putem prefiksa;
- Svijetlo zeleni pravokutnik je preglednik u kojem je svojstvo djelomično implementirano;
- Zeleni pravokutnik je preglednik u kojem je ovo svojstvo implementirano u skladu sa standardom.
Kao što znate, ne svi preglednici tretiraju datoteke CSS stila na isti način. U osnovi, problemi se javljaju sa starim verzijama stvaranja malih razmjera Internet Explorer (Verzija 7 i stariji). Usput, ako se problem pojavljuje u modernim preglednicima (poput Opera, Mozilla Firefox, Chrome), onda ja toplo preporučujem revidirati izgled stranice.
Dakle, evo. Postoji problem sa pregledačima. A znam barem tri načina da se ovaj problem riješi.
1. metoda. Najtačnija
Stilovi za pretraživače koji ne razumiju pravilno vaš css zapisani su u zasebnoj datoteci. Obično je ovaj pretraživač, kao što rekoh Internet Explorer, a te datoteke se zovu fix-ie.css
... ... ...
Promjena teme imenana pravo ime svoje teme - i kada otvorite Internet Explorer verzija 7 i novije - ova će se datoteka dodati u opći skup stilskih datoteka, pa čak i keširati ako je omogućeno predmemoriranje.
Ova je linija odgovorna za verziju preglednika s kojom će biti povezan tablica stilova:
где 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 ) код внутри тегов комментариев будет выводиться или скрываться в соответствующих версиях браузера:
KODAK KOJI SE IZVRŠI // если 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. Poliflice
Tehničke nedosljednosti zastarjelih preglednika za responzivni web dizajn mogu se ispraviti pomoću polifill-a. To je dio JavaScript koda koji "popunjava" određeni funkcionalni jaz između zastarjelog pretraživača i funkcije. Postoji veliki broj polifelja koji se mogu koristiti za pružanje podrške pregledniku za HTML5 značajke.
Ispod je nekoliko polifilima koji su dizajnirani za rješavanje problema pretraživača na web lokaciji iz stavka 3:
- respo.js - implementira cSS3 medijski upiti za Internet Explorer 6 - 8;
- html5shiv omogućava upotrebu HTML5 semantičkih elemenata u Internet Explorer-u 6-8;
- selectivzr - oponaša CSS3 selektore i pseudo-klase u programu Internet Explorer 6 - 8. Potpuna podrška zahtijeva ili Mootools 1.3 ili NWMatcher 1.2.3. Djelomična podrška dostupna je s jQuery 1.3 / 1.4;
- REM-unit-polyfill - Određuje da li preglednik podržava rem jedinice i pruža povratnu mogućnost. Radi s IE8 i novijima.
Da biste koristili ove polifize, oni se moraju dodati sa CDN-a ili kao datoteka u ispravnom formatu unutar uvjetnih komentara u odjeljku.
(ne zaboravite uključiti jedan od javaScript biblioteke potrebne za Selectivizr):
Za svaki projekt morate procijeniti jesu li ove dodatne skripte zaista potrebne jer mogu dovesti do problema sa performansama. Većina polifila je kompaktna, ali svaka dodatno učitana skripta dodatni je HTTP zahtjev. Ovo može usporiti učitavanje stranice.
8. Definiranje funkcija pomoću Modernizr-a
JavaScript Modernizr biblioteka pomoći će vam da provjerite kompatibilnost unakrsnog pregledača na web lokaciji: je li određena HTML5 ili CSS3 funkcija podržana u različitim preglednicima. Ako funkcija nije dostupna, može se učitati alternativni CSS ili JavaScript kôd.
Ideja je da se direktno utvrdi funkcionalnost preglednika, a ne da se pokušava instalirati određena verzija istog. I na osnovu toga proizlaze iz njegove funkcionalnosti, a to je manje efikasan i pouzdan način.
Vrijedi napomenuti da Modernizr ne dodaje nedostajuće funkcije pretraživaču. Stoga ćete morati unijeti kôd s rezervnog CSS-a ili polyfill-a.
Prvo morate preuzeti potpuno funkcionalnu sklopku. Kasnije, kada ste spremni za razvoj, možete kreirati prilagođena montaža sa određenim karakteristikama koje testirate. Sve što trebate učiniti je dodati klasu .no-js u HTML oznaku web lokacije i uključiti skriptu Modernizr u odjeljak zaglavlja nakon bilo koje CSS datoteke:
Modernizr demo
Ovo je vježba Modernizra.
Klasa .no-js koristi se za provjeru da li je omogućen JavaScript u korisničkom pregledaču. Ako je omogućeno, Modernizr će zamijeniti .no-js s .js klasom. Testna funkcija Modernizr analizira je li određena funkcija podržana u pretraživaču i generira niz klasa koje se dodaju u HTML element. Na primjer, Google Chrome 47.0.2526.111 vratit će sljedeće klase objekata.
Modernizr je trenutno dostupan kao globalni objekt koji se može nazvati zajedno sa imenom funkcije da bi se provjerilo da li postoji. Vraća bulovu vrijednost ( istinito ili lažno).
Pogledajmo dva jednostavna primjera CSS-a i JavaScript-a.
Primjer za rješavanje problema CSS-a u pretraživaču: provjeravanje SVG podrške i pružanje PNG-a kao rezervni
Trenutno postoji trend prema sve aktivnijoj upotrebi SVG-a ( Skalabilna vektorska grafika), ali ova grafika nije podržana u IE8 i nižim verzijama. Ako je SVG podržan u pretraživaču, Modernizr generira CSS class.svg. Ako SVG nije dostupan, alat dodaje klasu .no-svg u HTML. Koristeći CSS u nastavku, preglednici s omogućenom SVG koristit će regularnu klasu .logo, dok će pregledači koji nisu SVG upotrebljavati .no-svg pravila:
Logo (pozadinska slika: url ("logo.svg"); širina: 164px; visina: 49px;) .no-svg .logo (pozadina-slika: url ("/logo.png"); širina: 164px; visina: 49px;)
Primjer JavaScript: definiranje radijusa granice i dodavanje odgovarajućih CSS klasa
Zaokruživanje uglova okvira nije podržano u IE8 i niže. Možemo stvoriti različite klase CSS koje se koriste ovisno o prisutnosti funkcije radijusa obruba:
// Klasa za preglednik s funkcijom border-radius. Granice oko granice (radijus: 5px;) // Klasa za preglednik bez funkcije radijusa obruba .black-border (granica: 3px solid # 000000;)
Sada možete koristiti JavaScript da spremite ciljni identifikator kao varijablu, a zatim dodate CSS klase kroz uvjet:
var element \u003d document.getElementById ("TestID"); if (Modernizr.borderradius) (element.className \u003d "okrugle granice";) else (element.className \u003d "crne granice";)
Zaključak
Kada je u pitanju responzivni web dizajn u naslijeđenim preglednicima, ne postoji univerzalno rješenje. Važno je analizirati publiku resursa kako biste dobili predstavu o stvarnom broju korisnika pretraživača. Zatim morate temeljito ispitati web mjesto kako biste prepoznali moguće probleme s pretraživačima.
Objavljeno: 6.7.2011
Još jednom ću opisati hakove za različite preglednike koji su dobro poznati i 100 500 puta ranije opisani.
Evo definicije haka sa web stranice Vlade Mergevich-a htmlbook.ru: "Hak je skup tehnika usmjerenih na postavljanje stila određenog elementa za jedan pretraživač koji bi bio različit od stila za druge pretraživače."
Prije svega, zanimala su me trenutna radna rješenja, pa sam pregledao sve primjere u najnovijim verzijama, osim IE, inačice preglednika (Opera 11, Firefox 4, Chrome 13, Safari 5, IE 8).
Internet Explorer
Najviše se "razlikuju" od drugih pretraživača. Štoviše, svaka verzija je na svoj način "drugačija". Međutim, mi prihvatamo stvarnost takva kakva jest. Ali stvarnost je da postoji dovoljno hakova za različite verzije IE-a kada se raspored postavi u zasebnu datoteku i učita samo za ovu obitelj pretraživača. Za to u odeljku
HTML dokument, napišite komentar koji može prepoznati Internet Explorer.
Sljedeće ključne riječi mogu se koristiti kao uvjet:
- IE - bilo koja verzija Internet Explorera;
- IE 7 - Internet Explorer 7;
- IE 8 - Internet Explorer 8;
- IE 9 - Internet Explorer 9;
- lt - broj verzije pregledača manji od navedenog;
- gt - broj verzije je veći od navedenog;
- lte - broj verzije je manji ili jednak navedenom;
- gte - broj verzije pregledača je veći ili jednak navedenom.
Možda ću posebno spomenuti hack za IE 7: zvjezdica ispred imena selektora. Na primjer:
#example (
boja: zelena;
* boja: crvena;
}
Chrome i Safari
Hack za pregledače na osnovu pokretača webkita - Chrome i Safari:
@media ekran i (-webkit-min-uređaj-omjer piksela: 0) (
#example (
boja: crvena;
}
}
Firefox
@ -moz-document url-prefiks () () (
#example (
boja: crvena;
}
}
Opera
Ne postoje univerzalni hakovi za Opera! Da, naravno, na mreži možete pronaći hakove za Opera, ali, nažalost, ove su informacije pomalo zastarjele. Jednom je bilo haka, ali sve je ispalo:
@media sve i (min. širina: 0px) (
}
Hmm, ako postoje hakovi za sve preglednike, ali ne i za Opera, logičan zaključak je: prvo morate nadoknaditi Opera, a zatim polirati izgled drugih pregledača. Kako na to gledate?
UPD 08/09/11: Najnoviji izvještaji s fronta: na Habréu je došlo do haketa za Operu. Evo jednog:
@media all i (-webkit-min-uređaj-omjer piksela: 10000),
nije sve i (-webkit-min-uređaj-omjer piksela: 0) (
#primjer (boja: crvena;)
}
Međutim, toplo preporučujem da ga ne koristite. Navest ću kao komentar Vadima Makeeva (aka Pepelsbey): "Ovi hakovi zasnivaju se na nepotpunoj ili pogrešnoj podršci za Media Queries i mogu se prekinuti s bilo kojim manjim ažuriranjem preglednika koje će popraviti ili dopuniti podršku. Ne pucajte sebi u stopalo i ne koristite potencijalno opasne hakere.". Što se, u stvari, dogodilo s prvim hakom za Operu, spomenutim u ovom članku.
Na osnovu toga, i dalje vjerujemo da je najbolji hak za preglednik Opera kompetentan, valjan izgled.