СSS уже давно стал стандартом для создания веб-сайтов. Если вы являетесь ярым разработчиком или дизайнером, вы должны быть знакомы с ним. CSS является мостом между программированием и дизайном, и любой веб профессионал должен иметь некоторые представление о нём.
Если бы Вы хотели изучить больше тонкостей CSS, то это самое подходящее время, чтобы запустить свой любимый текстовый редактор и проследовать этому уроку, так как мы рассмотрим наиболее распространенные приёмы практического использования CSS.
Мы начнем с того, что вы могли бы назвать основными свойствами и возможностями CSS, те, которые мы обычно используем, чтобы построить веб-сайт на CSS:
4. Нумерованные против маркированных списков
Как только Вы освоитесь с основами, мы рассмотрим некоторые трюки, чтобы не только построить ваш CSS сайт с нуля, но и сделать несколько аксессуаров к нему.
10. PSD в HTML
Большинство начинающих путают padding и margin и используют их неправильно. Такие вещи, как использование height для создания отступа можете привести к ошибкам и несоответствиям. Понятия padding и margin являются основополагающими для использования CSS.
Padding является внутренним пространством элементов, а margin - внешним. Разница станет видна если Вы примените фон и границы для элемента. В отличие от padding, margin не подпадает под фон или границу элемента, поскольку он является отступом вне фактического элемента. Взгляните на изображения:


Значения margin и padding устанавливаются по часовой стрелке, начиная с самого верха.
Практический пример: Вот заголовок <h2> между двумя параграфами. Как видите, margin создает отступы между абзацами, а padding (где вы видите фон серым цветом) дает свободное пространство около самого заголовка.

В вышеупомянутом примере с заголовком значения для отступов были бы:
Чтобы упростить этот код в дальнейшем, мы будем используем технику оптимизации, названную "стенографией", которая сокращает повторный код. Применение техники стенографии сократило бы код до этого:
Вот то, на что был бы похож CSS код целиком для этого заголовка:
Подсказка:
Помните, что padding добавляется к ширине вашего элемента. Например, если Вы определили для Вашего элемента ширину в 100 пикселей, и у Вас слева и справа отступы по 10 пикселей, то в сумме элемент будет занимать 120 пикселей в ширину.
100px (элемент) + 10px (левый padding) + 10px (правый padding) = 120px (полная ширина элемента)
Однако margin расширяет пространство под элемент, но непосредственно сам элемент не затрагивает. С помощью margin особенно удобно выстраивать в линию слои или списки.
Float - фундаментальный элемент в строительстве сайтов на основе СSS, который можно использовать при выравнивании изображения, слоя или колонки. Скорей всего Вы уже знаете, как выровнять элементы в HTML, используя align. Float работает подобным образом.
Согласно HTML Dog "cвойство float определяет, должен ли блок фиксированной ширины сдвигаться направо или налево, с окружающим контентом, выравненный вокруг него".

Значение float: left; выравнивает элемент влево, а также может быть использован для создания столбцов при разметке слоев. Давайте посмотрим на практические ситуации, в которых Вы можете использовать float: left;

Значение float: right; выравнивает элемент вправо, а окружающие его элементы обтекают слева.
Подсказка:
Поскольку блочные элементы, как правило, охватывают 100% ширины своего родительского контейнера, то использование float: right; перебрасывает элемент на новую строку. Это также относится к простому тексту, который находиться рядом с ним, потому что обтекаемый элемент не может "ужаться" в той же строке.

Вы можете исправить эту проблему одним из двух способов:
1. Измените порядок разметки HTML в обратную сторону так, что вы вызываете элемент с float первым, а также соседний элемент вторым.

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

Internet Explorer 6 (IE6), как многие знают, удваивает margin элемента с float. То, что вы изначально определяли, как ьargin отступ в 5 пикселей - становится отступом в 10 пикселей в IE6.

Простой трюк, чтобы обойти эту ошибку, это добавить display: inline; к элементу с float.
Вот так:
Дополнительные ресурсы:
CSS-Tricks: Всё про Floats (англ.)
Дни использования HTML-тега <center> давно канули в лету. Давайте рассмотрим разные способы центрирования элемента.
Вы можете выравнять текст горизонтально используя свойство text-align. Это довольно просто сделать, но имейте в виду, когда Вы центрируете линейные элементы Вы должны добавить display: block. Это позволяет браузеру определять границы, чтобы выравнять Ваш элемент.
Чтобы горизонтально выровнять не текстовые элементы, используйте свойство margin. W3C говорит, “Если и margin-left и margin-right имею значения auto, их используемые значения равны. Это горизонтально выравнивает по центру элемент относительно границ блока.”
Горизонтальное выравнивание может быть достигнуто, тогда, когда устанавлены левые и правые отступы к значению auto. Это - идеальный метод горизонтального выравнивания неоснованных на тексте элементов; например, слои и изображения. Но, когда Вы выравниваете по центру слоя или элементы без указанной ширины, Вы должны определить ширину для этого, чтобы это работало.
Чтобы выравнять по центру слой:
Чтобы выравнять по центру изображение:
Вы можете вертикально выравнивать текстовые элементы используя свойство line-height, которое позволяет определить величину вертикального расстояния между строками в тексте. Это свойство идеально подходит для вертикального выравнивания заголовков и других текстовых элементов. Просто соотносите line-height с высотой элемента.

Для вертикального выравнивания НЕ текстовых элементов используйте абсолютное позиционирование. Трюк этой методики заключается в том, что Вы должны указать высоту и ширину выравниваемого элемента. Со свойством position: absolute элемент помещается в соответствии его начальной позиции (0, 0: левый верхний угол). В изображении ниже, красная точка указывает на начальную позицию элемента 0,0 перед применением отрицательного значения отступа margin. Используя отрицательные верхний и левый отступы margin мы можем отлично отцентрировать элемент и горизонтально, и вертикально.

Вот CSS код для вертикального и горизонтального выравнивания:
Нумерованный список <ol> является списком, пункты которого отмечены числами. Маркированный список <ul> является списком, пункты которого отмечены графическими буллетами (кружочки, квадратики и т.д.).
По умолчанию, оба из этих списков очень просты. Но с помощью CSS, Вы можете легко настроить их и придать необычный вид. Чтобы сохранить код валидным и семантически верным следует использовать списки только для содержания, которое перечислено подобным списку образом. Но списки могут использоваться и для других целей. Например для разнообразных многократных колонок или навигационных меню.
Полые кружочки скучны и могут не привлечь должного внимания к контенту, который они сопровождают. Вы можете исправить это с помощью простого, но эффективного приёма: удалить дефолтные кружочки и заменить их маленькими фоновыми изображениями для каждого элемента списка.
Вот CSS для настройки графических буллетов:

Большинство меню основанных на CSS построены на списках. Разъясним ситуацию. Вот подробная информация о том, как сделать из обычного маркированного списка горизонтальное навигационное меню.
HTML: начните с обычного маркированного списка с ссылками в каждом элементе списка.
CSS: мы удаляем дефолтные граффические булеты (как мы это сделали, когда заменяли их на иконки) с помощью свойства list-style: none. Затем, мы выравниваем каждый элемент списка влево (с помощью float: left) так, что навигационное меню становиться горизонтальным, где каждый элемент следует один за другим слева направо.
HTML тег заголовка очень важен для SEO. Но частое употребление этих тегов может выглядеть крайне уныло. Почему бы не поправить их с помощью CSS и наслаждаться красивым внешним видом и хорошо оптимизированным контентом?
Как только у Вас появится основной набор свойств для стайлинга заголовков, Вы сможете встраивать заголовки в тексты и настраивать их под определенный текст в отдельности.

HTML будет выглядеть так:
А вот так CSS:
Согласно W3Schools.com: "свойство overflow определяет, что произойдет если содержание элемента переполнится за пределы контейнера, окружающего его". Посмотрите на эти примеры, чтобы понять, как это работает:

Визуально, overflow: auto выглядит, как iframe, но гораздо более SEO дружественный. Он автоматически добавляет полосы прокрутки (горизонтальную, вертикальную или обе), когда содержание внутри элемента превышает поле элемента или границу.
Свойство overflow: scroll работает так же, но полосы прокрутки появляются вне зависимости от того, превышает ли содержание границы элемента или нет.
И, наконец, свойство overflow: hidden скрывает содержание элемента, если оно превышает границу элемента.
Подсказка: У Вас бывало, что родительский элемент не полностью обертывал свой дочерний элемент? Вы можете исправить это, сделав родительский элемент обтекаемым с помощью float.
В некоторых случаях, плавающие влево или вправо элементы не являются приемлемым решением. Например, если вы хотите центрировать контейнер или не хотите определять точную ширину. В этом случае, использование overflow: hidden в вашем родительском контейнере полностью упакует любого обтекаемого дочернего элемента внутри него.

Позиционирование (относительное - relative, абсолютное - absolute, фиксированные - fixed и статичное - static) является одним из наиболее мощных свойств CSS. Это позволяет позиционировать элементы с помощью точных координат, что дает Вам свободу и творчество для разработки вне шаблонов. Вы должны сделать три вещи при использовании позиционирования:
С position: relative элемент помещается в своем естественном окружении. Например, если относительно расположенный элемент находиться слева от изображения, установка верхней и левой координаты на 10px - переместит элемент толькр на 10 пикселей сверху и 10 пикселей слева. Относительное позиционирование также обычно используются для определения новой точки координат (X и Y) абсолютно позиционируемых вложенных элементов.
По умолчанию положение каждого элемента находитсяя в верхнем левом углу (0,0) окна браузера. Когда Вы присваиваете элементу относительное позиционирование, а потом позиционирование дочернего элемента измените на абсолютное, то он будет позиционироваться по отношению к родительскому элементу т.е. точка (0,0) теперь будет находиться в левом верхнем углу родительского элемента, а не окна браузера.

Элемент со свойством position: absolute может быть размещён где угодно с координатами X и Y. о умолчанию его основная позиция - точка (0,0), верхний левый угол видимого окна браузера. Он игнорирует все правила природного потока и не зависит от окружающих элементов.
Позиция элемента со свойством position: fixed также отсчитывается от верхнего левого угла окна браузера. Разница от абсолютного позиционирования в том, что элемент будет оставаться на том же самом месте, даже если пользователь будет прокручивать страницу вверх-вниз или вбок. Свойство z-index определяет порядок элементов по z-оси. Чем выше значение z-index тем "выше" будет находится элемент.
Подумайте о z-index, как о способе разбиения страницы на слои:

htmlbook.ru - свойство z-index
Теперь, когда вы поняли основы, прочувствуйте CSS еще глубже. Ниже приведены некоторые общие методы для укрепления знаний и верски макета или изображения. Я также призываю Вас создать свой собственный сайт с нуля, используя чистый CSS.
Фоновые изображения могут пригодиться для многих визуальных эффектов. Если вы добавите повторяющиеся фоновые изображения для покрытия большей площади или добавите стильные заставки к навигации, то это вашу страницу к жизни. Заметим, однако, что по умолчанию свойство фона исключается. При создании страниц, имейте в виду, что элементы которые имеют фоновые изображения - включают в себя признаки изображения.
Поскольку размеры мониторов становятся больше и больше, то большие фоновые изображения становятся намного популярнее. Взгляните на подробный туториал от Nick La из WebDesigner Wall, как добиться этого эффекта: 
Также, рекомендую прочитать его статью: "Работа и ошибки с крупным фоновым изображением"
Как Вам известно, пока что не все стандартные браузеры поддерживают пользовательские шрифты размещенные на сайте. Но вы можете заменить текст на изображения различными способами. Один довольно простой метод заключается в использовании свойства text-indent. Больше всего используется с заголовками.
Этот тег заменяет структурированный html текст на картинку
Вам может иногда понадобиться указать ширину и высоту (так же как с display: block если элемент inline)
Техника css спрайтов , в которой Вы используете позиционирования фона, чтобы показывать только небольшой отрывок более большого изображения (большее изображение, являющееся фактически многократными изображениями, вставленными в сетку и слитые в один файл).

CSS спрайты обычно используются с иконками и наведением мыши на элемент или с активным состоянием изображения, которые заменили ссылки и элементами навигации. Зачем использовать CSS Sprites? CSS Sprites сохраняет время загрузки страницы и сократит CSS.
Чтобы узнать больше о CSS спрайты, ознакомьтесь с ресурсом ниже!
Таинство CSS Sprites: методы, инструменты и учебные материалы (англ.)
Вы можете применить CSS к изображениям разными способами. Многие дизайнеры потратили не малые усилия, чтобы сделать очень стильные шаблоны для них. Один простой трюк на чистом CSS заключается в создании двойной рамки.

HTML будет выглядеть так:
А CSS вот так:
У зарубежного дизайнера Nick La из WebDesigner Wall есть отличная статья по стайлингу изображений. Очень много разных способов. Рекомендую к прочтению.
Теперь, когда вы узнали основы CSS, пришло время проверить свои навыки и построить свой собственный сайт с нуля! Ниже приведены некоторые подробные учебники, одни из лучших в зарубежном Интернете.


Веб технологии развиваются и расширяются стремительным образом. Так что у Вас не будет лучшего времени, чем сейчас, чтобы постичь самые современные стандарты и тренды веб строительства. Надеюсь, что методы описанные здесь помогут Вам стать настоящим CSS ниндзя.) Удачи, и продолжайте учиться.
Статья является переводом. Источник. За наводку спасибо Dimox'у (@Dimox_ru)
Комментариев: 7
Spasiba =]
Всегда пожалуйста :]
ZeH3dc tljajsogbmxe, [url=http://qlopoovzexqt.com/]qlopoovzexqt[/url], [link=http://qaxeiqvbuvyi.com/]qaxeiqvbuvyi[/link], http://lzovokujvboi.com/
спасибо это первый сайт на котором внятно объясняется что такое флоат. как ни удивительно так много статей в инете а понять не мог а тут сразу схватил и все. люблю такие статьи когда в 15 минут идею схватить можно
Рад, что пригодилось.
Я старался переводить! (:
ну я на инглише тоже шпарю но попытки прочитать w3c добром не кончились слова то все знаю а смысл ускользает. Там очень мутный текст. Скажем так после прочтения абзаца образ в голове в 80% не совпадает с изображение в firefox.
вот бы еще прояснить ситуацию с display:block и inline образно как наследование и переопределиние css свойств происходит
а то я попробовал
Cake
Salad
Drink
где в css для span прописал большие размеры чем для остальных так как пользователь выбрал эту секцию.
и с удивлением обнаружил что не сработало.
потом методом экспериментов сделал все таки но так и понял в чем фишка. То ли так надо делать
Salad
вообщем ясности нет.
div Cake /div
div span h3 Salad /h3 /span /div
div Drink /div
вот так наверное :)