БЭМ — как яркий пример модульного подхода
<style>BODY { color:whatever; }</style>
Не рекомендуется, кроме особых случаев
<style>@import url(style.css);</style>
Не рекомендуется, кроме внутреннего подключения
<head><link rel="stylesheet" href="style.css"></head>
Оптимальный вариант для подключения к документу
<head><link rel="stylesheet" href="style.css"type="text/css"media="all"></head>
<link href="style.css" media="all"><link href="style.css" media="screen"><link href="style.css" media="projection"><link href="style.css" media="handheld"><link href="style.css" media="print">
Подключение, в зависимости от медиатипа
@import url(style.css) all;@import url(style.css) screen;@import url(style.css) projection;@import url(style.css) handheld;@import url(style.css) print;
Импорт, в зависимости от медиатипа
Projection в Opera работает хитро для совместимости…
<link href="style.css" media="screen">
Стили сработают и в полноэкранном режиме, что равносильно:
<link href="style.css" media="screen, projection">
Сделано для совместимости с другими браузерами
<link href="style.css" media="screen"><link href="style.css" media="projection">
В этом случае стили разделятся на экранные и полноэкранные
<link rel="stylesheet" href="style.css"media="only screenand (min-width:800px)and (min-height:620px)">
Подключение стилей в зависимости от особенностей устройства
@media only screenand (min-width:800px)and (min-height:620px) {BODY {color:whatever;}}
<link href="screen.css"><link href="screen-narrow.css"media="only screenand (max-width:550px)"><link href="screen-wide.css"media="only screen and (min-width:800px)and (min-height:620px)">
<link href="screen.css"><link href="screen-narrow.css"media="only screenand (max-width:550px)"><link href="screen-wide.css"media="only screen and (min-width:800px)and (min-height:620px)">
Множество возможностей: lt lte gt gte & |
<!--[if IE]><font>А здесь можно похулиганить…</font><![endif]-->
К прискорбию, не будут работать начиная с IE10
<!--[if IE 6]><link href="ie6.css"><![endif]--><!--[if IE 7]><link href="ie7.css"><![endif]--><!--[if IE 8]><link href="ie8.css"><![endif]-->
Отдельный файл стилей для каждой версии IE
<!--[if !IE]><!--><link rel="stylesheet" href="main.css"><!--<![endif]--><!--[if IE]><link rel="stylesheet" href="main-and-ie.css"><![endif]-->
* HTML E {color:whatever; IE6}* + HTML E {color:nomatter; IE7}
<!DOCTYPE html><!--[if lt IE 7]><html class="no-js ie6 oldie"> …<!--[if IE 7]> <html class="no-js ie7 oldie"> …<!--[if IE 8]> <html class="no-js ie8 oldie"> …<!--[if gt IE 8]><!--><html class="no-js"> …
Предложено Полом Айришем, доведено до ума в H5BP
.ie6 E {color:whatever; IE6}.ie7 E {color:nomatter; IE7}
Всё то, что потом будет до- и переопределяться
* {margin:0;padding:0;border:0;}
Проблемы с производительностью и формами
FIELDSET { /* фрагмент */border: 1px solid #C0C0C0;margin: 0 2px;padding: 0.35em 0.625em 0.75em;}
Переопределяет, а не отменяет браузерные свойства
HTML, BODY, DIV, SPAN, APPLET, OBJECT, IFRAME,H3, H4, H5, H6, P, BLOCKQUOTE, PRE, A, ABBR, …margin:0;padding:0; /* фрагмент */}
Самое разумное решение от Эрика Мейера
Или включить мозг…
Подробнее в снипетах для Zen Coding
Вадим Макеев, Opera Software
Презентация: pepelsbey.net/pres/css-management