Базовые правила построения CSS

Думаю сегодня я Америку не открою, но все же некоторые забывают простые и очевидные вещи. Хотя начинающим верстальщикам урок будет полезен.

Продолжаем копилку знаний!

 И так, "кроссбраузерность" что это и с чем ее едят. Кроссбраузерность - это свойство сайта корректно отображаться и работать во всех браузерах. Коль мы повели речь о кроссбраузерности, следовательно некоторые браузеры отображают свойства тегов по разному, поэтому начиная писать css стиль для сайте, следует сначала обнулить все свойства тегов. Я это делаю так:

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, blockquote, pre, a, abbr, acronym, address, big , cite, code, del, dfn, font, img, ins, kbd, q, s, samp, small, strike, sub, sup, tt, var, center, dl, dt, dd, ul, li, fieldset, form, label, legend, table, caption {
  background: transparent;
  border: 0;
  font-family: inherit;
  font-size: 100%;
  font-style: inherit;
  font-weight: inherit;
  margin: 0;
  padding: 0;
  outline: 0;
  vertical-align: baseline;
}
table {border-collapse:collapse;border-spacing:0;}

не забываем про HTML5 и добавляем новые или давно забытые теги:

article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
  outline: none;
}

// на всякий случай принудительно объявим блочный метод
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
  display: block;
} 

для наглядности я привел каждое свойство с новой строки, но почему то мне привычней писать в одну строку. Так и читается лучше и поиск по свойствам не заставляет насиловать скролл. Да и пробелов стараюсь ставить как можно меньше, эта привычка осталась со времен dial-up интернет-соединения. А выглядеть это будет так:

article {margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;outline:none;}

Перейдем к шрифтам. Я привык размеры шрифтов привязывать к базе, основной font я описываю в теге body, причем использую универсальное свойство, которое многие игнорируют. Заголовки объявляю в процентах от базового. Пример:

// где 12px - размер шрифта
//     1.4 - межстрочное расстояние (интерлиньяж). Можно указывать и фиксированный интерлиньяж в px
body {
  font: 12px/1.4 Tahoma, sans-serif;
}
h1 {font-size: 180%;}
h2 {font-size: 160%;}
h3 {font-size: 140%;}
h4 {font-size: 120%;}

Если мы часто пользуемся классами(class) в написании контента, я описываю универсальные классы с float, который склеивается с другими. Думаю не для никого не секрет что классы можно склеивать class="atrib float_left cs_other". Чаще всего такая техника используется с графическим контентом (img)

.float-left {
  float: left;
}
 
.float-right {
  float: right;
}

Еще один класс без которого я не представлю верстки - clearfix, отменяющий обтекание.

.clearfix, #clearfix {
  clear:both;
}

Я постарался описать те базовые элементы верстки без которых по моему не обойтись ни одному верстальщику, хотя их конечно же гораздо больше.

Чуть позже я постараюсь описать технику создания анимации по средствам CSS3 без использования JS и фреймворков.