БЭМ — как яркий пример модульного подхода
<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 screen
and (min-width: 800px)
and (min-height: 620px)">
Подключение стилей в зависимости от особенностей устройства
@media only screen
and (min-width: 800px)
and (min-height: 620px) {
body {
color: whatever;
}
}
<link href="screen.css">
<link href="screen-narrow.css"
media="only screen
and (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 screen
and (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