ในบทความนี้เราจะดูว่าคำนำหน้าเบราว์เซอร์คืออะไรสาเหตุของการปรากฏตัวและวิธีใช้ใน CSS
คำนำหน้าคืออะไร?
นักพัฒนาเว็บเริ่มเรียนรู้พื้นฐานทางทฤษฎีของ CSS และการใช้ความรู้นี้ในทางปฏิบัติอาจพบปัญหาเมื่อดูตัวอย่างโลกแห่งความจริง สิ่งนี้อาจทำให้เขาขาดความเข้าใจในสิ่งที่เกิดขึ้นและไม่สนับสนุนความปรารถนาที่จะศึกษาเทคโนโลยีนี้ต่อไป
ตัวอย่างเช่นเมื่อพิจารณาถึงรูปแบบของเว็บไซต์ผู้พัฒนาเว็บอาจพบคุณสมบัติที่มีคำที่ไม่ชัดเจนอยู่ด้านหน้า: -webkit-, -moz-, -ms- ฯลฯ
* (-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;)
นี่อะไรน่ะ? อันที่จริงทุกอย่างง่ายคำที่ไม่ชัดเจนเหล่านี้เป็นส่วนนำหน้าของเบราว์เซอร์ต่อไปนี้:
- -webkit-: เบราว์เซอร์ Chrome, Safari, Opera;
- -moz-: เบราว์เซอร์ Mozilla Firefox;
- -ms-: เบราว์เซอร์ Internet Explorer
ดังนั้นถ้าชื่อของคุณสมบัติถูกนำหน้าหมายความว่าคุณสมบัตินี้จะถูกนำไปใช้และจะถูกใช้เฉพาะในเบราว์เซอร์ที่ระบุ เบราว์เซอร์อื่น ๆ ทั้งหมดจะไม่สนใจคุณสมบัตินี้ สำหรับพวกเขาคำนำหน้านี้ไม่เป็นที่รู้จัก
เหตุผลในการปรากฏตัวของคำนำหน้า?
มีเหตุผลมากมายสำหรับการปรากฏตัวของคำนำหน้า:
- เพื่อรวมไว้ในเบราว์เซอร์ของคุณสมบัติ CSS แบบทดลองที่ยังไม่ได้รับการอนุมัติตามมาตรฐาน ดังนั้นผู้ผลิตเบราว์เซอร์จะทดสอบและให้คำแนะนำก่อนอนุมัติคุณสมบัติ CSS ในมาตรฐาน
- เพื่อแก้ปัญหาความเข้ากันได้ข้ามเบราว์เซอร์
- เพื่อสร้างคุณสมบัติของคุณเองที่ไม่ได้เป็นส่วนหนึ่งของมาตรฐาน CSS แต่อาจปรากฏขึ้นหลังจากนั้นไม่นาน
เมื่อคุณสมบัติทดลองได้รับการอนุมัติในมาตรฐานและผ่านการทดสอบในเบราว์เซอร์คำนำหน้ามักจะถูกลบออกจากมัน
วิธีใช้คำนำหน้า
พิจารณารหัสต่อไปนี้เป็นตัวอย่าง:
* (-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;)
รหัสนี้ใช้คุณสมบัติ CSS ที่เปลี่ยนอัลกอริทึมสำหรับการคำนวณความกว้างและความสูงสำหรับองค์ประกอบทั้งหมดของหน้าเว็บ คุณสมบัติ CSS ตัวแรก - webkit-box-sizing พร้อมค่า border-box นั้นมีไว้สำหรับเบราว์เซอร์ที่ใช้ webkit (Safari) หรือเอ็นจิ้นกะพริบตา (Chrome, Opera, Yandex.Browser) คุณสมบัติ CSS ตัวที่สอง -moz-box-sizing พร้อมค่า border-box นั้นมีไว้สำหรับเบราว์เซอร์ที่ใช้โปรแกรม Gecko (Mozilla Firefox) คุณสมบัติ CSS ล่าสุดมีไว้สำหรับเบราว์เซอร์ที่คุณสมบัตินี้ได้รับการทดสอบและนำไปใช้งานตามมาตรฐาน
เมื่อใช้คำนำหน้าสำหรับคุณสมบัติ CSS โปรดจำไว้ว่าควรใส่คำนำหน้าคุณสมบัติ CSS โดยไม่มีคำนำหน้า ทำไมสิ่งนี้สำคัญมาก สิ่งนี้มีความสำคัญเพราะหากมีการใช้งานคุณสมบัติดั้งเดิม (ไม่มีคำนำหน้า) ในเบราว์เซอร์จะมีการใช้คุณสมบัตินี้ (เนื่องจากเป็นคุณสมบัติล่าสุด) ไม่ใช่เวอร์ชันทดลอง
ตัวอย่างเช่น: การใช้คุณสมบัติ CSS กับองค์ประกอบทั้งหมดของหน้าเว็บใน Google Chrome เวอร์ชัน 40
รูปด้านบนแสดงให้เห็นว่าคุณสมบัติการปรับขนาดกล่องดั้งเดิมถูกฝังอยู่ในเบราว์เซอร์นี้แล้วและเนื่องจากความจริงที่ว่ามันเป็นคุณสมบัติสุดท้ายเบราว์เซอร์จะใช้งานแทนการใช้คุณสมบัติ -webkit-box-sizing ข้างต้น
จะตรวจสอบการรองรับคุณสมบัติเฉพาะในเบราว์เซอร์ได้อย่างไร?
ไซต์ที่คุณสามารถตรวจสอบว่ามีการใช้งานคุณสมบัตินี้หรือไม่ในเบราว์เซอร์ที่เฉพาะเจาะจงสามารถเป็นลิงค์ด้านล่าง นอกจากนี้ไซต์จะแสดงเปอร์เซ็นต์ของผู้ใช้ที่ใช้เบราว์เซอร์เวอร์ชันนี้
เว็บไซต์ "ฉันสามารถใช้ ... "ตัวอย่างเช่น: ตรวจสอบว่ามีการใช้คุณสมบัติการแปลงในเบราว์เซอร์อย่างไร
บนเว็บไซต์ CanIUse เบราว์เซอร์จะมีสีต่างกันขึ้นอยู่กับสถานะที่รองรับคุณสมบัติหรือแท็กบางอย่าง:
- สี่เหลี่ยมสีแดงเป็นเบราว์เซอร์ที่คุณสมบัตินี้ไม่ได้ใช้งาน
- สี่เหลี่ยมสีเขียวพร้อมยัติภังค์ที่มุมขวาบนคือเบราว์เซอร์ที่ใช้คุณสมบัตินี้ผ่านคำนำหน้า
- สี่เหลี่ยมสีเขียวอ่อนเป็นเบราว์เซอร์ที่คุณสมบัตินี้ถูกนำไปใช้บางส่วน
- สี่เหลี่ยมสีเขียวเป็นเบราว์เซอร์ที่คุณสมบัตินี้มีการใช้งานตามมาตรฐาน
อย่างที่คุณทราบเบราว์เซอร์บางตัวนั้นไม่รองรับไฟล์สไตล์ css เหมือนกัน โดยทั่วไปปัญหาเกิดขึ้นกับการสร้างขนาดเล็กรุ่นเก่า Internet explorer (เวอร์ชั่น 7 ขึ้นไป) โดยวิธีการถ้าปัญหาเกิดขึ้นในเบราว์เซอร์ที่ทันสมัย \u200b\u200b(เช่น Opera, Mozilla Firefox, Chrome) แล้วฉัน ขอแนะนำอย่างยิ่ง แก้ไขเค้าโครงหน้ากระดาษ
ดังนั้นที่นี่ มีปัญหากับเบราว์เซอร์ และฉันรู้วิธีแก้ปัญหานี้อย่างน้อยสามวิธี
วิธีที่ 1 ถูกต้องที่สุด
สไตล์สำหรับเบราว์เซอร์ที่ไม่ถูกต้องเข้าใจ css ของคุณเขียนในไฟล์แยกต่างหาก โดยทั่วไปแล้วเบราว์เซอร์นี้อย่างที่ฉันพูดคือ Internet explorerและไฟล์เหล่านี้เรียกว่า การแก้ไข ie.css
... ... ...
เปลี่ยนแปลง ตั้งชื่อธีมเป็นชื่อจริงของหัวข้อของคุณ - และเมื่อคุณเปิด Internet explorer เวอร์ชัน 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. Polyfills
ความไม่สอดคล้องกันทางเทคนิคของเบราว์เซอร์ที่ล้าสมัยสำหรับการออกแบบเว็บที่ตอบสนองสามารถแก้ไขได้โดยใช้ polyfill เป็นรหัส JavaScript ที่“ เติม” ช่องว่างการทำงานเฉพาะระหว่างเบราว์เซอร์ที่ล้าสมัยและฟังก์ชัน มีโพลีฟิลจำนวนมากที่สามารถใช้เพื่อรองรับเบราว์เซอร์สำหรับคุณสมบัติ HTML5
ด้านล่างนี้เป็น polyfills ไม่กี่ออกแบบมาเพื่อแก้ไขปัญหาข้ามเบราว์เซอร์ของเว็บไซต์ที่อ้างถึงในวรรค 3:
- response.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 และด้านล่าง
ในการใช้ polyfills เหล่านี้จะต้องเพิ่มจาก CDN หรือเป็นไฟล์ในรูปแบบที่ถูกต้องภายในความคิดเห็นตามเงื่อนไขในส่วน
อย่าลืมใส่หนึ่งใน จำเป็นต้องใช้ JavaScript สำหรับ Selectivizr):
สำหรับแต่ละโครงการคุณต้องประเมินว่าจำเป็นต้องใช้สคริปต์เพิ่มเติมเหล่านี้หรือไม่เนื่องจากสามารถนำไปสู่ปัญหาด้านประสิทธิภาพได้ โพลีฟิลส่วนใหญ่มีขนาดกะทัดรัด แต่สคริปต์ที่โหลดเพิ่มเติมแต่ละตัวเป็นคำขอ HTTP เพิ่มเติม นี่อาจทำให้การโหลดหน้าช้าลง
8. การกำหนดฟังก์ชั่นโดยใช้ Modernizr
JavaScript Modernizr library จะช่วยให้คุณตรวจสอบความเข้ากันได้ของ cross-browser ว่ารองรับ HTML5 หรือ CSS3 ในเบราว์เซอร์ที่แตกต่างกันหรือไม่ หากฟังก์ชั่นไม่พร้อมใช้งานอาจมีการโหลดรหัส CSS หรือ JavaScript อื่น
แนวคิดคือการกำหนดฟังก์ชันการทำงานของเบราว์เซอร์โดยตรงและไม่พยายามติดตั้งรุ่นที่เฉพาะเจาะจง และบนพื้นฐานนี้ได้มาซึ่งการทำงานซึ่งเป็นวิธีที่มีประสิทธิภาพน้อยกว่าและเชื่อถือได้
เป็นที่น่าสังเกตว่า Modernizr ไม่ได้เพิ่มคุณสมบัติที่ขาดหายไปในเบราว์เซอร์ ดังนั้นคุณจะต้องระบุรหัสจากทางเลือก CSS หรือ polyfill
ก่อนอื่นคุณต้องดาวน์โหลดชุดประกอบที่ทำงานได้อย่างสมบูรณ์ ต่อมาเมื่อคุณพร้อมที่จะพัฒนาคุณสามารถสร้าง ประกอบที่กำหนดเอง ด้วยคุณสมบัติเฉพาะที่คุณกำลังทดสอบ สิ่งที่คุณต้องทำคือเพิ่มคลาส. no-js ลงในแท็ก HTML ของเว็บไซต์และรวมสคริปต์ Modernizr ไว้ในส่วนหัวหลังจากไฟล์ CSS ใด ๆ :
การสาธิต Modernizr
นี่คือการออกกำลังกายที่ทันสมัย
คลาส. no-js ใช้เพื่อตรวจสอบว่ามีการเปิดใช้งาน JavaScript ในเบราว์เซอร์ของผู้ใช้หรือไม่ หากเปิดใช้งาน Modernizr จะแทนที่. no-js ด้วยคลาส. js ทดสอบฟังก์ชัน Modernizr วิเคราะห์ว่าฟังก์ชันเฉพาะได้รับการสนับสนุนในเบราว์เซอร์และสร้างชุดคลาสที่เพิ่มเข้ากับองค์ประกอบ HTML หรือไม่ ตัวอย่างเช่น Google Chrome 47.0.2526.111 จะส่งคืนคลาสอ็อบเจ็กต์ต่อไปนี้
ปัจจุบัน Modernizr พร้อมใช้งานเป็นวัตถุส่วนกลางที่สามารถเรียกใช้ร่วมกับชื่อฟังก์ชันเพื่อตรวจสอบว่ามีอยู่จริงหรือไม่ มันจะส่งกลับค่าบูลีน ( จริงหรือเท็จ).
ลองดูตัวอย่างง่ายๆสองตัวอย่างของ CSS และ JavaScript
ตัวอย่างการแก้ปัญหา CSS CSS ข้ามเบราว์เซอร์: ตรวจสอบการสนับสนุน SVG และระบุ PNG เป็นทางเลือก
ในปัจจุบันมีแนวโน้มที่จะมีการใช้ SVG มากขึ้น ( กราฟิกแบบเวกเตอร์ที่ปรับขนาดได้) แต่กราฟิกนี้ไม่รองรับใน IE8 และด้านล่าง หาก SVG ได้รับการสนับสนุนในเบราว์เซอร์ Modernizr จะสร้าง CSS class.svg หากไม่สามารถใช้ SVG ได้เครื่องมือจะเพิ่มคลาส. no-svg ให้กับ HTML การใช้ CSS ด้านล่างเบราว์เซอร์ที่เปิดใช้งาน SVG จะใช้คลาส .logo ปกติในขณะที่เบราว์เซอร์ที่ไม่ใช่ SVG จะใช้กฎ. no-svg:
โลโก้ (background-image: url ("logo.svg"); width: 164px; height: 49px;) .no-svg .logo (background-image: url ("/logo.png"); width: 164px; height: 49px;)
ตัวอย่าง JavaScript: การกำหนดขอบเขตของรัศมีและเพิ่มคลาส CSS ที่เหมาะสม
การปัดเศษมุมของเฟรมไม่รองรับใน IE8 และด้านล่าง เราสามารถสร้างคลาส CSS ต่าง ๆ ที่ใช้ขึ้นอยู่กับฟังก์ชันรัศมีเส้นขอบ:
// Class สำหรับเบราว์เซอร์ที่มีฟังก์ชัน border-radius .round-border (border-radius: 5px;) // Class สำหรับเบราว์เซอร์ที่ไม่มีฟังก์ชัน Border-radius .black-border (border: 3px solid # 000000;)
ตอนนี้คุณสามารถใช้ JavaScript เพื่อบันทึกตัวระบุเป้าหมายเป็นตัวแปรแล้วเพิ่มคลาส CSS ผ่านเงื่อนไข:
var element \u003d document.getElementById ("TestID"); if (Modernizr.borderradius) (element.className \u003d "round-border";) อื่น (element.className \u003d "black-border";)
ข้อสรุป
เมื่อพูดถึงการออกแบบเว็บไซต์ที่ตอบสนองได้ในเบราว์เซอร์รุ่นเก่าไม่มีวิธีแก้ปัญหาสากล มันเป็นสิ่งสำคัญในการวิเคราะห์กลุ่มเป้าหมายของทรัพยากรเพื่อให้เข้าใจถึงจำนวนผู้ใช้เบราว์เซอร์ที่แท้จริง จากนั้นคุณต้องทดสอบไซต์อย่างละเอียดเพื่อระบุปัญหาข้ามเบราว์เซอร์ที่อาจเกิดขึ้น
เผยแพร่: 06/07/2554
ฉันจะอธิบายการแฮ็กใหม่สำหรับเบราว์เซอร์ที่แตกต่างกันที่รู้จักกันดีและ 100,500 ครั้งที่อธิบายไว้ก่อนหน้านี้
นี่คือคำจำกัดความของการแฮ็กจากเว็บไซต์ของ Vlad Merzhevich htmlbook.ru:“ การแฮ็คเป็นชุดของเทคนิคที่มีจุดประสงค์เพื่อกำหนดรูปแบบขององค์ประกอบบางอย่างสำหรับเบราว์เซอร์เดียวซึ่งจะแตกต่างจากสไตล์สำหรับเบราว์เซอร์อื่น”
ก่อนอื่นฉันสนใจโซลูชันการทำงานปัจจุบันดังนั้นฉันจึงตรวจสอบตัวอย่างทั้งหมดในล่าสุดยกเว้น IE เวอร์ชันเบราว์เซอร์ (Opera 11, Firefox 4, Chrome 13, Safari 5, IE 8)
Internet explorer
เบราว์เซอร์อื่น "แตกต่าง" ที่สุด ยิ่งไปกว่านั้นแต่ละรุ่นมีความ "แตกต่าง" ในแบบของตัวเอง อย่างไรก็ตามเรายอมรับความจริงตามที่เป็นอยู่ แต่ความจริงก็คือว่ามีแฮ็คที่เพียงพอสำหรับ 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: เครื่องหมายดอกจันหน้าชื่อตัวเลือก ตัวอย่างเช่น
#example (
สี: สีเขียว;
* สี: แดง;
}
Chrome และ Safari
แฮ็กสำหรับเบราว์เซอร์ที่ใช้เครื่องมือ webkit - Chrome และ Safari:
หน้าจอ @media และ (-webkit-min-device-ratio-pixel: 0) (
#example (
สี: แดง;
}
}
Firefox
@ -moz-document url-prefix () (
#example (
สี: แดง;
}
}
อุปรากร
ไม่มีแฮ็ก Universal สำหรับ Opera! ใช่แน่นอนคุณสามารถค้นหาแฮ็กสำหรับ Opera บนเครือข่ายได้แต่ทว่าข้อมูลนี้ล้าสมัยไปเล็กน้อย ครั้งหนึ่งเคยมีการแฮ็ก แต่สิ่งทั้งหมดออกมา:
@ สื่อทั้งหมดและ (ความกว้างต่ำสุด: 0px) (
}
อืมถ้ามีแฮ็กสำหรับเบราว์เซอร์ทั้งหมด แต่ไม่ใช่สำหรับ Opera ข้อสรุปเชิงตรรกะคือ: ก่อนอื่นคุณต้องทำการสร้างสำหรับ Opera จากนั้นขัดโครงร่างของเบราว์เซอร์อื่น คุณมองมันอย่างไร?
UPD 08/09/11: รายงานล่าสุดจากเสื้อผ้า: ในHabréมีแฮ็คสำหรับ Opera นี่คือหนึ่ง:
@ สื่อทั้งหมดและ (-webkit-min-device-pixel-ratio: 10,000)
ไม่ใช่ทั้งหมดและ (-webkit-min-device-pixel-ratio: 0) (
#example (color: red;)
}
อย่างไรก็ตามฉันขอแนะนำว่าอย่าใช้มัน ฉันจะให้ข้อโต้แย้งความคิดเห็นของ Vadim Makeev (aka Pepelsbey): "แฮ็กเหล่านี้มีพื้นฐานมาจากการสนับสนุนที่ไม่สมบูรณ์หรือผิดพลาดสำหรับ Media Queries และสามารถทำลายด้วยการอัปเดตเบราว์เซอร์เล็กน้อยที่จะแก้ไขหรือเสริมการสนับสนุนอย่ายิงตัวเองในเชิงรุกอย่าใช้แฮ็กที่อาจเป็นอันตราย". ซึ่งอันที่จริงแล้วเกิดขึ้นกับการแฮ็คครั้งแรกสำหรับ Opera ที่กล่าวถึงในบทความนี้
จากนี้เรายังเชื่อว่าแฮ็คที่ดีที่สุดสำหรับเบราว์เซอร์ Opera เป็นเลย์เอาต์ที่มีประสิทธิภาพและถูกต้อง