70 идей экспертов для улучшения CSS кода
Smashing Magazine, 15 мая 2007
Работа с CSS не всегда проста. Конечно, все зависит от опыта и навыков, но иногда CSS кодинг может превращаться в кошмар. Лучший способ упростить код это полезные, но не очень известные свойства и атрибуты которые можно использовать для создания семантически корректной разметки.
Мы обратили свой взгляд на наиболее интересные и полезные техники CSS кодинга и перечислили их в этой статье. Также мы включили некоторые базовые техники, используемые многими в каждом проекте, но которые трудно найти, когда они нужны.
Это обзор 70 техник предложенных экспертами CSS, вы должны быть готовы пройти по списку ссылок и похожих публикаций в конце статьи.
- Мы собираемся опубликовать pdf-версию этой статьи, так что подпишитесь на наш RSS канал (Smash Magazine RSS), чтобы следить за обновлениями.
- Возможно, вам будет интересно прочесть нашу статью 53 CSS-Techniques You Couldn’t Live Without, которая даст вам базовый набор техник CSS кодинга.
Мы хотим сказать спасибо всем разработчикам, которые делятся своими идеями, техниками, методами, знаниями и опытом с их читателями.
1.1 Кодинг: Начинаем
- Когда дизайн готов, начните с пустой страницы. Добавьте заголовки, навигацию, пример содержимого, и футер, потом добавьте html разметку и только после этого CSS. [CSSing]
- Сначала сбросьте стили по умолчанию. Часто нет необходимости задавать значение какого либо свойства, потому что есть значение по умолчанию. Некоторые любят делать Global white space reset, обнуляя отступы и поля всех элементов в самом начале файла стилей. Eric Meyer’s Global Reset, Christian Montoya's initial CSS file, Mike Rundle's initial CSS file, Ping Mag's initial CSS file. [Roger Johansson]
Используйте главный файл стилей. Одна из наиболее распространенных ошибок новичков в том, что они забывают сбросить стили по умолчанию, это является причиной несоответствия оформления в различных браузерах. Браузеры тут не причем, прежде чем начать писать CSS следует сбросить стили по умолчанию. [Master Stylesheet: The Most Useful CSS Technique], [Ryan Parr]
master.css
@import url("reset.css"); @import url("global.css"); @import url("flash.css"); @import url("structure.css"); <style type="text/css" media="Screen"> /*\*/ @import url("css/master.css"); /**/ </style>Создайте библиотеку вспомогательных классов. Полезные для отладки они должны быть исключены в окончательной версии (разделяйте разметку и оформление). Можно использовать сразу несколько имен классов (
<p class="floatLeft alignLeft width75">...</p>) [Richard K. Miller].width100 { width: 100%; } .width75 { width: 75%; } .width50 { width: 50%; } .floatLeft { float: left; } .floatRight { float: right; } .alignLeft { text-align: left; } .alignRight { text-align: right; }
1.2 Организация CSS
Используйте главный файл стилей. Организация CSS упрощает поддержку сайта. Начните с главного файла стилей в нем импортируйте
reset.css,global.css,flash.css(если нужен) иstructure.cssи возможно файл настроек типографики.h2 { } #snapshot_box h2 { padding: 0 0 6px 0; font: bold 14px/14px "Verdana", sans-serif; } #main_side h2 { color: #444; font: bold 14px/14px "Verdana", sans-serif; } .sidetagselection h2 { color: #fff; font: bold 14px/14px "Verdana", sans-serif; }Используйте флаги. Разделяйте файл CSS на секции, например, Global Styles – (параграфы, списки и т.д.), Header, Page Structure, Headings, Text Styles, Navigation, Forms, Comments, Extras. [5 Tips for Organizing Your CSS]
/* -----------------------------------*/ /* ---------->>> GLOBAL <<<-----------*/ /* -----------------------------------*/
- Создавайте таблицу содержимого. В начале файла CSS, создайте таблицу содержимого. Стоит выделить различные разделы (header, main, footer etc), разделитель разделов должен быть хорошо заметным. [5 Steps to CSS Heaven]
Упорядочивайте свойства в алфавитном порядке. Не знаю, кто подал мне эту идею, но я упорядочиваю свойства в алфавитном порядке, это упрощает их поиск. [Christian Montoya]
body { background:#fdfdfd; color:#333; font-size:1em; line-height:1.4; margin:0; padding:0; }- Разделяйте код на блоки. Для многих это очевидно, но иногда я все же встречаю CSS не разделенные на блоки. Эта не сложная операция значительно упрощает работу с кодом недели, месяцы и годы спустя. Примеры:
/* Structure */,/* Typography */etc.” [CSS Tips and Tricks] - Используйте хуки. Несмотря на то, что вы разделяете CSS на блоки, не помешает и использование структурированных хуков. [CSS Tips and Tricks]
- Разделяйте файл CSS на блоки. Я разделяю код на три разных блока, в первом определения для отдельных элементов, тела документа, ссылок, заголовков, сброс параметров по умолчанию, после этого идет блок с определениями для классов, третьим идет блок, в котором определены стили для основных контейнеров, я создаю определения для контейнеров, даже если они не содержат никаких правил. [Jonathan Snook]
1.3 Кодинг: Работа с идентификаторами, классами, селекторами и свойствами
- Сводите число контейнеров к минимуму. Предохраняйте структуру документа от разрастания. Новички часто используют много div`ов как будто это ячейки таблицы, не повторяйте эту ошибку, используйте и другие элементы для создания разметки. Обдумайте все возможности прежде чем добавлять новый div, часто можно избежать этой необходимости используя некоторые свойства CSS. [Ryan Parr]
- Сводите к минимуму число свойств. Работайте умнее, а не тяжелее с CSS. Это правило включает несколько подправил: если не уверенны нужно ли добавлять свойство не добавляйте его, если не уверены, зачем добавляете свойство не добавляйте его, если видите, что свойство используется в разных местах, подумайте нельзя ли его добавить только один раз. [CSSing]
- Сводите к минимуму число селекторов. Исключите необязательные селекторы. Чем меньше используется селекторов, тем меньше селекторов необходимо для переназначения стилей и тем проще исправить проблемы. [Jonathan Snook]
- Сведите к минимуму количество хаков. Используйте только хорошо известные и документированные ошибки в браузерах. Часто мне приходится видеть хаки там, где они не нужны, поэтому прежде чем использовать хак исследуйте свою проблему (в этом вам может помочь Google). [10 Quick Tips for an easier CSS life]
Используйте константы для ускорения разработки. Константы это фиксированные значения, которые можно использовать в коде. Один из способов обойти отсутствие констант в CSS, использовать комментарии в начале файла, чтобы определить «константы». Очень удобно определять, таким образом, цвета и быстро заменять их значения по всему документу с помощью «поиска и замены». [Rachel Andrew]
# /* # Dark grey (text): #333333 # Dark Blue (headings, links) #000066 # Mid Blue (header) #333399 # Light blue (top navigation) #CCCCFF # Mid grey: #666666 # */
- Используйте систему имен. Использование системы для имен идентификаторов и классов может сохранить много времени при исправлении багов, и обновлении документов. В больших CSS документах можно быстро запутаться, если имена абсолютно разные и не придерживаются системы правил. Я рекомендую использовать паттерн parent_child. [10 CSS Tips]
- Давайте классам и идентификаторам семантические имена. Необходимо исключить имена, отражающие оформление. Если назвать элемент right-col, всегда есть вероятность что после изменения CSS «right-col» будет отображаться с левой стороны страницы, в таком случае недоразумения неизбежны, лучше исключить имена отражающие оформление. [Garrett Dimon]
- Группируйте селекторы с общими атрибутами. Если несколько элементов, классов или идентификаторов используют одно и то же свойство, можно сгруппировать селекторы чтобы не указывать это свойство несколько раз. [Roger Johansson]
- Изолируйте свойства, которые собираетесь использовать несколько раз. Если необходимо часто использовать одно и то же свойство, изолируйте его чтобы не повторять каждый раз, к тому же это даст возможность изменять оформление всех элементов сайта использующих его. [5 Steps to CSS Heaven]
- Используйте идентификаторы и классы как можно выше в иерархии документа. По возможности, используйте комбинированные селекторы, не бойтесь использовать длинные селекторы. Длинные селекторы могут сделать CSS более понятным и уменьшают шансы class- или div- мании. [Chric Casciano]
- Учитесь использовать каскадную природу CSS. Представьте, что у вас есть два похожих элемента с минимальными отличиями — вы можете создать CSS для каждого из них, или создать один CSS для обоих, а потом использовать дополнительные свойства, чтобы один из них выглядел иначе. [5 Steps to CSS heaven]
- Используйте теги
<small>,<em>и<strong>. Иногда нужно выделить часть текста, в таком случае не стоит использовать div или классы, используйте семантические теги. [Mike Rundle’s 5 CSS Tips]
1.4 Кодинг: Используйте сокращения
- Краткие шестнадцатеричные представления цвета. В шестнадцатеричных представлениях цветов, которые состоят из трех пар одинаковых цифр, можно пропустить каждую вторую цифру,
#000то же самое что и#000000,#369то же самое что и#336699. [Roger Johansson] Определяйте псевдо классы для ссылок в порядке LoVe/HAte: Link, Visited, Hover, Active. Чтобы упорядочить определения псевдо классов для ссылок размещайте их в порядке «link-visited-hover-active», или если короче «LVHA». Псевдо класс focus, может быть помещен в конце этого списка, но прочитайте это объяснение, прежде чем использовать его. [Eric Meyer]
a:link { color: blue; } a:visited { color: purple; } a:hover { color: purple; } a:active { color: red; }- Определяйте margin, padding или border в порядке TRouBLed: Top, Right, Bottom, Left. При использовании стенографических свойств margin, padding или border, располагайте значения по часовой стрелке, начиная сверху: Top, Right, Bottom, Left. [Roger Johansson]
Используйте стенографические свойства. Используйте стенографические свойства
margin,padding,font,borderи другие.margin: top right bottom left; margin:1em 0 2em 0.5em; (margin-top: 1em; margin-right: 0; margin-bottom: 2em; margin-left: 0.5em;)
border:width style color; border:1px solid #000;
background: color image repeat attachment position; background:#f00 url(background.gif) no-repeat fixed 0 0;
font: font-style (italic/normal) font-variant (small-caps) font-weight font-size/line-height font-family; font: italic small-caps bold 1em/140% "Lucida Grande",sans-serif;
1.5 Кодинг: Типографика
- Чтобы работать с em как с px, установите font-size для тега body 62.5%. Размер шрифта по умолчанию 16px используя это правило, мы задаем величину em равную примерно 10px (16 x 62.5% = 10). Это позволяет легко задавать в em размеры соответствующие пиксельным величинам, к примеру 1.3em примерно равно 13px. [Jonathan Snook]
Используйте универсальную кодировку символов. Хотелось бы использовать одну универсальную кодировку символов подходящую для большинства случаев. К счастью она существует, это UTF-8, которая основана на Unicode. Установить кодировку страницы можно с помощью следующего кода. [20 pro tips]
<meta http-equiv="content-type" content="text/html;charset=utf-8" />Управляйте регистром с помощью CSS. Если нужно чтобы текст был написан заглавными буквами, вместо того чтобы переписывать его позвольте сделать эту работу CSS. Следующий код трансформирует все заголовки в верхний регистр. [20 pro tips]
h1 { text-transform: uppercase; }Используйте малые прописные с помощью CSS. Свойство
font-variantиспользуется для вывода текста малыми прописными, это значит что все буквы в нижнем регистре будут преобразованы в заглавные, но с меньшим размером шрифтаh1 { font-variant: small-caps; }Предусматривайте все возможности — указывайте тип шрифта. Когда указан конкретный шрифт, который должен использоваться в дизайне, это делается в надежде на то, что этот шрифт установлен у пользователя, но нужно предусмотреть и случай когда необходимого шрифта нет, для этого можно определить альтернативные шрифты, как показано ниже, очень важно закончить список типом необходимого шрифта. [Getting into good coding habits]
p { font-family: Arial, Verdana, Helvetica, sans-serif; }- Используйте 1.4em - 1.6em для высоты строки. Чтобы сделать текст читабельным используйте line-height:1.4em, длину строк около 10 слов, и достаточно контрастные цвета. Чисто черный на белом фоне слишком контрастен для ярких CRT дисплеев, я стараюсь использовать чуть затемненный белый
#fafafaи темно серый#333333.[Christian Montoya] - Устанавливайте размер шрифта 100.01% для элемента html. Значение 100.01% для размера шрифта компенсирует несколько багов в различных браузерах. Во-первых, установка размера шрифта в процентах (вместо em) исключает проблему в IE/Win с непропорциональным ростом или уменьшением размера шрифта, если он будет установлен в em для других элементов. Во-вторых, некоторые версии Opera могут отображать 100% шрифт слишком мелко по сравнению с другими браузерами. С другой стороны у Safari проблемы с размером шрифта 101%. Сейчас лучшее решение это использовать значение 100.01% для этого свойства. [CSS: Getting into good habits]
1.6 Кодинг: Отладка
Добавляйте border чтобы увидеть контейнеры. Используйте тестовые стили, такие как границы или цвет фона при отладке документа. Хорошо работает
div { border:1px red dashed; }, можно использовать и* { border: 1px solid #ff0000; }. Обратите внимание на инструменты которые могут помочь при отладке страницы. [Chric Casciano] Использование границ для отдельных элементов может помочь обнаружить их перекрытие, или лишние отступы которые не всегда легко увидеть. [CSS Crib Sheet]* { border: 1px solid #f00; }- При отладке в первую очередь проверяйте, все ли элементы закрыты. Если после незначительных изменений в коде ваша прекрасная разметка сломалась, причиной тому может быть незакрытый элемент. [10 CSS Tips]
2.1 Технические хитрости: Идентификаторы, Классы
- 1 ID, много классов. Идентификаторы, идентификаторы элементов должны быть уникальны в пределах страницы, напротив множество элементов могут использовать одно и то же имя класса. Имена классов и идентификаторов могут содержать символы A-Z, a-z, 0-9 и дефис(-), не могут начинаться с дефиса или цифры (смотрите спецификацию CSS2) [Roger Johansson]
- Имена элементов, используемые в селекторах, чувствительны к регистру. При использовании CSS с документом XHTML, имена элементов в селекторах чувствительны к регистру, чтобы избежать неприятностей я рекомендую использовать нижний регистр для имен элементов в CSS селекторах. Имена классов и идентификаторов чувствительны к регистру и в HTML и в XHTML, поэтому избегайте смешивания регистров в селекторах. [Roger Johansson]
- Классы и идентификаторы должны быть правильными. Имена классов и идентификаторов должны начинаться с буквы, идентификаторы должны быть уникальными, их имена должны отражать функциональность элемента, а не его оформление. [CSS Best Practices]
- Можно использовать несколько классов для одного элемента. Это позволяет написать несколько правил, определяющих различные свойства, и применять их по необходимости.[Roger Johansson]
2.2 Технические хитрости: Используйте все возможности селекторов
Roger Johansson опубликовал чрезвычайно полезную серию статей о селекторах в CSS 2.1, некоторые полезные моменты перечислены ниже.
Селекторы дочерних элементов. Селектор дочернего элемента указывает на элемент, который является непосредственным потомком другого элемента, данный селектор состоит из двух или более селекторов элементов разделенных знаком «>», родительский элемент располагается слева от этого знака. Следующее правило действительно для всех элементов strong являющихся непосредственными потомками div. [Roger Johansson]
div > strong { color:#f00; }Селекторы соседних элементов. Селектор соседних элементов состоит из двух простых селекторов и символа «+» между ними. Данный селектор указывает на элемент, следующий за первым. Элементы должны имеет один и тот же родительский элемент и первый элемент должен располагаться непосредственно перед вторым. [Roger Johansson]
p + p { color:#f00; }Селекторы атрибутов. Эти селекторы можно использовать для сопоставления правил к элементам на основании наличия или значения атрибутов. Есть четыре способа использования селекторов атрибутов.
[att]
Элементы для которых установлен атрибут att, независимо от значения этого атрибута.[att=val]
Элементы значение атрибута att которых в точности равно val.[att~=val]
Элементы атрибут att которых содержит список значений разделенных пробелами, одно из которых равно val. В этом случае val не может содержать пробелов.[att|=val]
Если значением атрибута att элемента является список разделенных дефисом слов, начинающийся со слова "val". Сопоставление всегда начинается с начала значения атрибута. В первую очередь это необходимо для сопоставления отдельным участкам кода языка (например, атрибутlangв HTML илиxml:langвXHTML), как описано в стандарте RFC1766.Следующее правило применяется ко всем элементам p для которых определен атрибут title:
p[title] { color:#f00; }Селектор сопоставляющий правило всем элементам div которые имеют атрибут class со значением error:
div[class=error] { color:#f00; }Можно использовать и множественные селекторы атрибутов, это дает возможность отбора элементов по нескольким атрибутам. Ниже представлен пример правила применяемого к элементам blockquote которые имеют атрибут класс в точности равный “quote” и атрибут cite (независимо от значения этого атрибута):
blockquote[class=quote][cite] { color:#f00; }- Используйте селекторы потомков. Селекторы потомков помогут избежать использования множества классов в разметке. [Roger Johansson]
2.3 Технические хитрости: Оформление ссылок
- Будьте осторожны со стилями для ссылок. Обратите внимание на то, что классический якорь (
<a name="anchor">) реагирует на псевдо классы:hoverи:active. Чтобы исключить это, используйте в качестве якоря идентификаторы элементов, или немного более заумный синтаксис:link:hover,:link:active. [Dave Shea] Указывайте отношение документов для ссылок. Атрибут rel предназначен для указания отношения текущей страницы к документу указанному в атрибуте href.
a[rel~="nofollow"]::after { content: "\2620"; color: #933; font-size: x-small; } a[rel~="tag"]::after { content: url(http://www.technorati.com/favicon.ico); }Здесь мы используем селектор атрибутов для списка значений разделенных пробелами. Ссылки, для которых установлен
nofollowбудут обозначены темно красным черепом, а те для которых установлен tag будут обозначены иконкой Technocrati. [Handy CSS]Внешние ссылки можно отметить автоматически. Многие использует нестандартное значение
rel="external", чтобы выделить ссылки на внешние сайты, добавлять его к каждой ссылке трудоемкая и необязательная работа. Следующее правило добавляет стрелку после каждой ссылки ведущей на внешний сайт. [Handy CSS]a[href^="http://"]:not([href*="smashingmagazine.com"])::after { content: "\2197"; }Убрать точки вокруг ссылок можно с помощью
outline:none;.a:focus { outline: none; }
2.4 Технические хитрости: CSS-техники
- Используйте идентификатор для тега body. Во многих случаях использование идентификатора для тега body позволяет управлять оформлением элементов в зависимости от того, на какой странице находится пользователь. К тому же это дает возможность изменять оформление документа не меняя файл стилей и страницу. [Ryan Parr, Переключатель стилей, Адаптивная разметка]
- С помощью CSS можно создавать колонки одинаковой высоты. Техника создания колонок одинаковой высоты без использования фоновых изображений. Создание колонок одинаковой высоты с помощью фоновых изображений.
- Вертикальное выравнивание с помощью CSS. Представьте, что у вас есть элемент меню высотой 2em, вы можете легко отцентрировать текст по вертикали, задав line-height: 2em. [Evolt.org]
- Используйте псевдо элементы и классы. Псевдо классы и псевдо элементы можно использовать для форматирования элементов не представленных в иерархии документа, например, нет таких элементов как первая строка параграфа или первая буква строки. Можно использовать псевдо классы
:first-child,:hover,:active,:focus,:first-line,:first-letter,:before,:afterи другие. - Использование изображения для тега <hr> может быть хорошим дополнением к странице. [CSS: Best Practices]
Можете использовать один и тот же (X)HTML код для навигации на всех страницах. Многие сайты подсвечивают в навигации текущее местонахождение пользователя, но это может быть неудобно потому что необходимо менять HTML код навигации на каждой странице. Можно ли этого избежать? [Ten More CSS Tricks you may not know]
<ul> <li><a href="#" class="home">Home</a></li> <li><a href="#" class="about">About us</a></li> <li><a href="#" class="contact">Contact us</a></li> </ul>Добавьте идентификатор к тегу body, он должен отражать текущее место пользователя и изменяться когда он переходит на другую страницу.
#home .home, #about .about, #contact .contact { commands for highlighted navigation go here }Используйте
margin: 0 auto;для горизонтального центрирования разметки. Чтобы отцентрировать элемент по горизонтали нужно задать его ширину и горизонтальные поля. [Roger Johansson]<div id="wrap"> <!-- Your layout goes here --> </div>#wrap { width:760px; /* Change this to the width of your layout */ margin:0 auto; }Добавить CSS стили можно и к RSS. Можно сделать намного больше используя XSL, но и CSS сделает RSS более привлекательными. [Pete Freitag]
<?xml version="1.0" ?> <?xml-stylesheet type="text/css" href="http://you.com/rss.css" ?>
Скрыть CSS от старых браузеров. Чтобы скрыть CSS файл от старых браузеров используйте директиву
@import. [Roger Johansson]@import "main.css";
- Всегда устанавливайте margin и padding для блочных элементов. [10 CSS Tips]
- Устанавливайте width или margin и padding. Я использую следующее правило, если устанавливаю для элемента width, то не устанавливаю для него margin и padding и наоборот. Если не следовать этому правилу, можно получить множество проблем, особенно когда ширина задана в процентах. Поэтому я сначала устанавливаю ширину контейнеров, а потом поля и отступы для дочерних элементов. [Jonathan Snook]
- Исключите одновременное применение padding/borders и width к элементам. IE5 неверно использует модель представления документа в виде блоков, это может привести к тому, что страница превратиться в мешанину. Один из способов исправить эту проблему применять padding к родительскому элементу, а width к дочернему. [CSS Crib Sheet]
Предоставляйте стили для печати. Добавить файл, содержащий стили для печати можно точно таким же способом, как и обычный файл CSS:
<link rel="stylesheet" type="text/css" href="print.css" media="print"><style type="text/css" media="print"> @import url(print.css); </style>- это гарантирует, что эти стили будут использоваться только для печати и не повлияют на внешний вид страницы на экране. В стилях для печати необходимо использовать черный текст на белом фоне и удалить все лишние элементы. 15 минут на подготовку к печати, More about CSS-based print-Layouts. [20 pro tips]
2.5 Технические хитрости: Исправляем баги IE
Поддержка полупрозрачных PNG в IE. Теоретически изображения в формате PNG поддерживают различные уровни прозрачности, но отсутствие их поддержки в Internet Explorer 6, не позволяет широко использовать это их достоинство. [CSS Tips, Outer-Court.com]
#regular_logo { background:url('test.png'); width:150px; height:55px; } /* \ */ * html #regular_logo { background:none; float:left; width:150px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src='test.png', sizingMethod='scale'); } /* */Min-widthиmax-widthв IE. Для этого можно использовать выражения. [Ten More CSS Trick you may not know]#container { min-width: 600px; max-width: 1200px; width:expression(document.body.clientWidth < 600? "600px" : document.body.clientWidth > 1200? "1200px" : "auto"); }В IE можно использовать условные комментарии. Самый безопасный способ задать специальные стили для IE/Win это использовать условные комментарии. Использование условных комментариев вместо хаков сводит вероятность проблем в будущем к минимуму. Так их можно использовать чтобы подключить файл стилей, содержащий исправления для IE/Win [Roger Johansson]
<!--[if IE]> <link rel="stylesheet" type="text/css" href="ie.css" /> <![endif]-->
Кодинг: Поиск вдохновения
- Экспериментируйте с CSS. Экспериментируйте с фоновыми изображениями, цветами, наследованием, выравниванием и селекторами. Play with positive and negative margins. [Chric Casciano]
- Учитесь у других. Исследуйте хорошие сайты, HTML код любого сайта легко доступен, смотрите какие методы используют другие разработчики и перенимайте те которые могут быть полезны и вам. [20 pro tips]
Источники и полезные ресурсы
- CSS Tips and Tricks by Roger Johansson
- (The Only) Ten Things To Know About CSS by John Manoogian
- CSS Crib Sheet by Dave Shea
- My Top Ten CSS Tricks [CSS Tutorials] by Trenton Moss
- CSS Tips by Philipp Lenssen
- Top CSS Tips by Jonathan Snook
- Ten CSS tricks — corrected and improved by Tantek ?elik
- Ten More CSS Trick you may now know by Trenton Moss
- CSS techniques I use all the time by Christian Montoya
- CSS Tip Flags by Douglas Bowman
- My 5 CSS Tips by Mike Rundle
- 5 Steps to CSS Heaven by Ping Mag
- Handy CSS by Lachlan Hunt
- Erratic Wisdom: 5 Tips for Organizing Your CSS by Thame Fadial
- 15 CSS Properties You Probably Never Use (but perhaps should) by SeoMoz
- 10 CSS Tips You Might Not Have Known About by Christopher Scott
- A List Apart: Articles: 12 Lessons for Those Afraid of CSS and Standards by Ben Henick
- Tips for a better design review process by D. Keith Robinson
- 20 pro tips - .net magazine by Jason Arber
- CSS Best Practices by Richard K Miller
- 10 Quick Tips for an Easier CSS Life by Paul Ob
- 10 CSS Tips from a Professional CSS Front-End Architect by 72 DPI in the shade team blog
- Web Design References: Cascading Style Sheets by Laura Carlson
- Getting Into Good Coding Habits by Adrian Senior

Стоит упомянуть, что из перечисленных хитрых селекторов css 2.1 ни один не работает ни в одной версии эксплорера.
Много нового
Очень интересный материал. Много нового. Неужели современные браузеры поддерживают все что здесь написали :-)
В IE7 работают все селекторы из раздела 2.2, проверено собственноручно и обжалованию не подлежит.
Есть, здравые мысли конечно, но их немного. Ну и селекторы конечно не порадовали. И не надо петь песню про ИЕ7.
Селекторы те же самые, что и в спецификации CSS, а вы каких ожидали?
В IE7 эти селекторы работают замечательно, вот пример.
Другое дело, что часто они пременяются вместе со свойством content и псевдо классом :after, которые в IE7 не работают.
Спасибо
Статья неплохая, даже я узнал кое что новое. Например про то, что в XML можно использовать обычный CSS. Класс. Теперь наверно смогу заставить себя переделать фиды некоторых сайтов :) Впрочем, почти все через FeedBurner отдается, так что не очень актуально.
Отличная статья!!
Всё чему я учился 5 лет, на одной страничке, ужас...
http://www.communitymx.com/content/article.cfm?cid=FAF76&print=true
перевод этой статьи есть вроде на xhtml.ru
Да уж бездна инфы только толку?! Перевод так себе... много противоречивой инфы, например начиная от запрета хаков(хотя это не хаки а фильтры) и в тоже время широкое их использование в примерах. Ничего не сказано о продакшн CSS. Короче всё в кашу. Кстати говоря - не стоит в одну кучу сбрасывать все линки на якобы превосходные техники CSS от разных людей. У каждого свои взгляды на CSS надо самому решать каким путём идти. Я конечноже за семантику + вот уже совсем откозался от ID селекторов - они тока мешают а плюс только в том что они выше приоритетом чем class. В девелопменте можете создавать сколько угодно CSS файлов, хоть на каждую кнопочку, на продакшене обязательно сжать в один фаил и дать имя "styleshee20080101.css", а то смешно бывает когда к серверу 15 HTTP только за CSS, а уникальное име присваивать надо для того чтобы в случае замены CSS и XHTML у пользователей таблица стилей бралась с сервака а не из кэша, а то абра кадабра будет.
1 пункт - уже бред, .width100 { width: 100%; } и тд. - фактически возврат к инлайновым описаниям. Еще бы предложили .border1{ border: 1px soilid #000;}, который по сути будет означать - назад в прошлый век. Как их потом переопределять? через important?
Их нужно удалять, а не переопределять, хотя я не могу представить зачем такое может понадобиться, обычно поэкспериментировать с разметкой можно при помощи FireBug.
Относитесь пожалуйста к идеям как к идеям, а не правилам или рекомендациям идея может быть полезной, или не очень, а может быть и вредной. Поток идей, пусть даже от экспертов, всегда нужно фильтровать, в данном случае это не требует больших усилий.
- это называеться Капитель
ну, или псевдо капитель.
HTML Validator для Firefox проверит это и многое другое автоматически.
Тоже в своё время пришёл к этому, но сейчас оперативнее использовать Firebug или WebDeveloper.
Очень понравилось. Достаточно полезно и действительно в общем более, чем познавательно любому, пытающемуся стать топ-кодером.
Но воспринимать все, конечно же, нужно с точки зрения поставленных задач и конкретных случаев, а эта статья, если кто не понял, не постулат или аксиома, а лишь рекомендации и ИДЕИ, и в большинстве крайне необходимые любому кодеру!
Спасибо за статью, кое - что полезное для себя извлек.