Разметка css страницы – Поговорим об HTML. Современное применение языка разметки — учебник CSS

Содержание

Основы CSS: разметка страниц

Создание сайтов – это работа не для людей со слабыми нервами. Помимо знаний нужно обладать креативным мышлением, задатками перфекциониста и филигранной точностью при разметке страницы. CSS в этом вопросе просто незаменим. И знать его основы необходимо каждому вебмастеру.

Что такое CSS?

Тем, кто знаком с HTML, не нужно рассказывать, что это язык разметки страницы. Но его создатели решили добавить в него теги, отвечающие за внешний вид и дизайн. Вот только при таком подходе код страницы становился слишком объемным и практически нечитабельным. Естественно, этот путь вел в никуда, поэтому было принято комплексное решение: HTML отвечает за разметку страниц, CSS – за визуальное оформление.

Аббревиатура CSS расшифровывается как Cascading Style Sheets (каскадная таблица стилей). Она состоит из параметров, что отвечают за визуальное оформление объектов на странице.

Преимущества CSS

Каскадная таблица стилей позволяет вебмастеру не только создать красивый ресурс, но и сделать код читабельным, значительно сократив его размер. Используя CSS, можно задавать такие параметры, что невозможны в HTML-разметке страницы.

С CSS можно буквально в несколько кликов изменять внешний вид страниц ресурса. Это очень удобно, особенно если сайт многостраничный. Все изменения дизайна производятся в каскадной таблице стилей, а не путем замены параметров на каждой странице ресурса. И только благодаря CSS можно осуществить блочную разметку.

Подключение CSS

Говоря о базовых принципах CSS, первым делом нужно научиться подключать каскадную таблицу стилей к HTML-файлу. Этот процесс достаточно прост. Первым делом необходимо создать HTML-документ. Для тех, кто еще не знает, его создают в программе «Блокнот». Потом при помощи функции «Сохранить как» необходимо задать расширение HTML.

Точно таким же образом создается и каскадная таблица стилей, только файлу следует задать расширение css. Полученный документ нужно сохранить в той же папке, где и HTML файлы. Допустим, документ таблицы стилей носит название style.css. Чтобы подключить его к HTML-документу, необходимо воспользоваться тегом <link>, что отвечает за подключение внешних файлов. Между тегами <head>, необходимо вписать следующее:

Пожалуй, это один из самых удобных способов подключения внешних файлов.

Правило CSS

Изучение CSS разметки должно начинаться с изучения синтаксиса. В каскадной таблице стилей не существует тегов, скриптов или параметров. Здесь есть только правило, которому необходимо следовать. Состоит оно из селектора и блока стилей. Допустим, в каскадной таблице стилей задана позиция: body{background:black; color:white}.

Здесь body и есть селектором, отвечающим за стилевое форматирование тела сайта; background:black и color:white - это свойства и их значения. Они записываются через точку с запятой. Такая позиция делает фон сайта черным, а текст белым.

Селекторы

Что ж, продолжаем интенсивное введение в CSS. Разметку страниц будет достаточно сложно сделать без знаний о селекторах. Если со свойствами и их значениями все понятно, то дополнительные знания о селекторах помогут сделать желаемую разметку страницы.

Что же нужно знать о селекторах? Во-первых, их разновидности:

  • Идентификатор. В качестве селекторов могут использоваться названия элементов страниц. В случае, когда, к примеру, необходимо выделить какой-то абзац текста другим цветом, добавляют идентификатор. Его задают параметром id.
Стоит помнить, что один идентификатор можно использовать только раз. В этом примере селектор получил название pink, если нужен еще один идентификатор, то ему просто нужно присвоить другое имя (pink2, green и т. д.).

Классы. Селектор по классу используется, если для нескольких объектов нужно задать одинаковые параметры. К примеру, для двух абзацев текста необходимо задать красный цвет.

Объектов с классами может быть сколько угодно.

Для одного и того же объекта можно указать и класс, и идентификатор - это не противоречит CSS разметке. Но поскольку идентификатор имеет больший приоритет, то для объекта будет использован именно его стиль. При разметке страницы в CSS это стоит учитывать.

Идентификаторы и классы можно применять для любых объектов. И если возникает необходимость задать один стиль для текста и картинки, то можно не указывать имя элемента, как это было в примере (p#pink, p.red). Можно просто поставить точку или решетку. Также селекторы можно группировать. Например, h2, h3, h4{color:red; font-sixe:17px}.

Разметка страниц

Изучая разметку страниц, можно понять, что существует несколько ее разновидностей:

  • Табличная. Когда еще не было каскадной таблицы стилей, эта разметка была основной. Она позволяла максимально точно разместить объекты ресурса друг от друга. Но код получается слишком большим и плохо индексируется поисковиками. Еще один недостаток такого метода – скорость загрузки. Пока не загрузится вся таблица, пользователь не увидит даже начало текста.
  • Блочная. Сейчас это основной способ разметки страниц. Его использование стало возможным только благодаря развитию и совершенствованию таблицы стилей.

Преимущества блочной верстки

Блочная разметка страницы средствами CSS имеет несколько неопровержимых преимуществ. Во-первых, стиль объектов находится отдельно от HTML документа, что значительно повышает читабельность кода и позволяет быстро производить визуальные изменения. Во-вторых, есть возможность наложить один слой на другой, а это в несколько раз облегчает процесс позиционирования. Естественно, такие сайты быстрее загружаются и индексируются поисковыми системами. Разметка страницы в CSS позволяет легко задавать современные визуальные эффекты.

Единственный недостаток такого подхода – разное «понимание» браузерами. Некоторые отображают ресурс в таком виде, в каком видит его веб-мастер. Но есть браузеры, что искажают изображение, поэтому при большом количестве классов и селекторов необходимо использовать хаки, что сделают код кроссбраузерным.

Как сделать блочную верстку сайта?

Первое, с чего стоит начать, - с создания макета. Это должно быть обычное изображение с расширением psd. После его создания (приобретения или скачивания) необходимо разрезать изображение на блоки и поместить в одну папку (желательно отдельную). Эти фрагменты будут использоваться, как фон для блоков.

В HTML документе для блочной верстки используют тег <div>. Все, что находится в его пределах, принято называть слоем, и формат этого слоя задается в каскадной таблице стилей при помощи классов или идентификаторов.

Первое, что нужно сделать после того, как макет сайта будет разрезан на части, в HTML задать структуру сайта, используя тег <div>, и присвоить для каждого слоя свой селектор. Например, если это меню, то так и написать: id=menu. После чего нужно подключить каскадную таблицу стилей и задать для каждого слоя свои параметры. Самый простой код имеет следующий вид.

Задаем параметры

На примере хорошо видно, как задаются параметры для блоков CSS. Позиционирование разметки страницы задано в пикселях, хотя в большинстве случаев лучше использовать проценты. В окне браузера этот сайт будет иметь вид «скроенного из разных частей полотна» так как в примере были использован только цвет области блока. Но если заменить его фоновым изображением, то можно получить не только красивый, но и достаточно функциональный продукт.

Между тегами <div> можно писать любую необходимую информацию с нужным форматированием. Любой текст, написанный в пределах этого тэга, сразу же накладывается слоем на форматированный блок. Объекты между <div> будут автоматически уменьшаться, чтобы не выходить за размеры блока.

Этот пример - лишь небольшая часть всего того, с чем должен будет столкнуться веб-мастер, работая над качественными характеристиками ресурса. При создании хорошего веб-ресурса, нередко могут быть использованы хаки для приобретения функции кроссбраузерности. Редактировать коды страниц можно в специальных редакторах, что значительно упрощает работу, хотя не избавляет веб-мастера от необходимости ручного редактирования.

Создать сайт самостоятельно может каждый. Главное - понимать, что и CSS, и HTML были созданы людьми и предназначены для людей. Основы разметки страниц доступны всем, а создание веб-ресурсов не только прерогатива избранных, но и может быть вполне обыденной деятельностью каждого желающего.

фиксированная и непостоянная — учебник CSS

С развитием настольных компьютеров и мобильных устройств появилась необходимость создавать такие сайты, дизайн которых легко подстраивался бы под любой размер экрана. Адаптивность стала жизненно необходимым свойством сайта, поскольку на него может зайти как пользователь ПК, так и пользователь планшета или смартфона. И если раньше адаптивный дизайн считался чем-то необязательным, то сейчас сайт, который не подстраивается под любой тип устройства, пользователи сочтут устаревшим.

Чаще всего страницы сайта создаются на основе фиксированной либо относительной (непостоянной) ширины. Ниже мы опишем плюсы и минусы каждого варианта, а также поговорим про адаптивный веб-дизайн.

Фиксированная ширина страницы

Веб-страница с фиксированной шириной позволяет хорошо контролировать разметку. Ширина в данном случае задается в пикселях. С фиксированным контейнером вы можете быть уверены, что все элементы страницы будут находиться на своих местах без риска съехать и развалить верстку. И каким бы широким ни был экран, сайт с фиксированной шириной будет смотреться на нем прилично и читабельно.

Недостатком фиксированной ширины можно назвать то, что если экран пользователя меньше, чем ширина блока-контейнера, где содержится контент веб-страницы, то на экране появится жутко неудобная горизонтальная полоса прокрутки. В случае со смартфоном пользователю придется приближать веб-страницу и также прокручивать ее горизонтально, чтобы, скажем, прочитать текст.

Непостоянная ширина страницы

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

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

Адаптивный дизайн страницы

Золотая середина и наилучшее решение для современного сайта — это адаптивный веб-дизайн. Суть его заключается в создании нескольких вариаций разметки с коррекцией ширины контейнера в зависимости от размеров экрана. Например, для настольных компьютеров можно установить ширину страницы в 960 пикселей, для планшетов — ширину этой же страницы в 700 пикселей, а для всех смартфонов вообще задать непостоянную ширину в процентах. Таким образом вы можете превратить, к примеру, большой трехколоночный макет в узкий одноколоночный, если сайт просматривается с небольшого экрана.

Определять стили для страницы, основываясь на ширине окна браузера, можно благодаря медиазапросам (Media Queries). Как вы наверняка помните, мы уже пробовали знакомиться с ними на практике ранее в книге.

Чуть позже в данном разделе мы обязательно вернемся к технике создания адаптивного дизайна. А пока что далее в книге пойдет речь о таком понятии как блочная верстка.

Основы CSS: разметка страниц

Создание сайтов – это работа не для людей со слабыми нервами. Помимо знаний нужно обладать креативным мышлением, задатками перфекциониста и филигранной точностью при разметке страницы. CSS в этом вопросе просто незаменим. И знать его основы необходимо каждому вебмастеру.

Что такое CSS?

Тем, кто знаком с HTML, не нужно рассказывать, что это язык разметки страницы. Но его создатели решили добавить в него теги, отвечающие за внешний вид и дизайн. Вот только при таком подходе код страницы становился слишком объемным и практически нечитабельным. Естественно, этот путь вел в никуда, поэтому было принято комплексное решение: HTML отвечает за разметку страниц, CSS – за визуальное оформление.

css разметка страницы

Аббревиатура CSS расшифровывается как Cascading Style Sheets (каскадная таблица стилей). Она состоит из параметров, что отвечают за визуальное оформление объектов на странице.

Преимущества CSS

Каскадная таблица стилей позволяет вебмастеру не только создать красивый ресурс, но и сделать код читабельным, значительно сократив его размер. Используя CSS, можно задавать такие параметры, что невозможны в HTML-разметке страницы.

С CSS можно буквально в несколько кликов изменять внешний вид страниц ресурса. Это очень удобно, особенно если сайт многостраничный. Все изменения дизайна производятся в каскадной таблице стилей, а не путем замены параметров на каждой странице ресурса. И только благодаря CSS можно осуществить блочную разметку.

Подключение CSS

Говоря о базовых принципах CSS, первым делом нужно научиться подключать каскадную таблицу стилей к HTML-файлу. Этот процесс достаточно прост. Первым делом необходимо создать HTML-документ. Для тех, кто еще не знает, его создают в программе «Блокнот». Потом при помощи функции «Сохранить как» необходимо задать расширение HTML.

Точно таким же образом создается и каскадная таблица стилей, только файлу следует задать расширение css. Полученный документ нужно сохранить в той же папке, где и HTML файлы. Допустим, документ таблицы стилей носит название style.css. Чтобы подключить его к HTML-документу, необходимо воспользоваться тегом <link>, что отвечает за подключение внешних файлов. Между тегами <head>, необходимо вписать следующее:

Пожалуй, это один из самых удобных способов подключения внешних файлов.

Правило CSS

Изучение CSS разметки должно начинаться с изучения синтаксиса. В каскадной таблице стилей не существует тегов, скриптов или параметров. Здесь есть только правило, которому необходимо следовать. Состоит оно из селектора и блока стилей. Допустим, в каскадной таблице стилей задана позиция: body{background:black; color:white}.

Здесь body и есть селектором, отвечающим за стилевое форматирование тела сайта; background:black и color:white - это свойства и их значения. Они записываются через точку с запятой. Такая позиция делает фон сайта черным, а текст белым.

блочная разметка страниц средствами css

Селекторы

Что ж, продолжаем интенсивное введение в CSS. Разметку страниц будет достаточно сложно сделать без знаний о селекторах. Если со свойствами и их значениями все понятно, то дополнительные знания о селекторах помогут сделать желаемую разметку страницы.

Что же нужно знать о селекторах? Во-первых, их разновидности:

  • Идентификатор. В качестве селекторов могут использоваться названия элементов страниц. В случае, когда, к примеру, необходимо выделить какой-то абзац текста другим цветом, добавляют идентификатор. Его задают параметром id.

интенсивное введение в css разметка страницыСтоит помнить, что один идентификатор можно использовать только раз. В этом примере селектор получил название pink, если нужен еще один идентификатор, то ему просто нужно присвоить другое имя (pink2, green и т. д.).

Классы. Селектор по классу используется, если для нескольких объектов нужно задать одинаковые параметры. К примеру, для двух абзацев текста необходимо задать красный цвет.

блоки css позиционирование разметка страницы

Объектов с классами может быть сколько угодно.

Для одного и того же объекта можно указать и класс, и идентификатор - это не противоречит CSS разметке. Но поскольку идентификатор имеет больший приоритет, то для объекта будет использован именно его стиль. При разметке страницы в CSS это стоит учитывать.

Идентификаторы и классы можно применять для любых объектов. И если возникает необходимость задать один стиль для текста и картинки, то можно не указывать имя элемента, как это было в примере (p#pink, p.red). Можно просто поставить точку или решетку. Также селекторы можно группировать. Например, h2, h3, h4{color:red; font-sixe:17px}.

изучение css разметки

Разметка страниц

Изучая разметку страниц, можно понять, что существует несколько ее разновидностей:

  • Табличная. Когда еще не было каскадной таблицы стилей, эта разметка была основной. Она позволяла максимально точно разместить объекты ресурса друг от друга. Но код получается слишком большим и плохо индексируется поисковиками. Еще один недостаток такого метода – скорость загрузки. Пока не загрузится вся таблица, пользователь не увидит даже начало текста.
  • Блочная. Сейчас это основной способ разметки страниц. Его использование стало возможным только благодаря развитию и совершенствованию таблицы стилей.

о базовых принципах css

Преимущества блочной верстки

Блочная разметка страницы средствами CSS имеет несколько неопровержимых преимуществ. Во-первых, стиль объектов находится отдельно от HTML документа, что значительно повышает читабельность кода и позволяет быстро производить визуальные изменения. Во-вторых, есть возможность наложить один слой на другой, а это в несколько раз облегчает процесс позиционирования. Естественно, такие сайты быстрее загружаются и индексируются поисковыми системами. Разметка страницы в CSS позволяет легко задавать современные визуальные эффекты.

Единственный недостаток такого подхода – разное «понимание» браузерами. Некоторые отображают ресурс в таком виде, в каком видит его веб-мастер. Но есть браузеры, что искажают изображение, поэтому при большом количестве классов и селекторов необходимо использовать хаки, что сделают код кроссбраузерным.

css разметка страницы

Как сделать блочную верстку сайта?

Первое, с чего стоит начать, - с создания макета. Это должно быть обычное изображение с расширением psd. После его создания (приобретения или скачивания) необходимо разрезать изображение на блоки и поместить в одну папку (желательно отдельную). Эти фрагменты будут использоваться, как фон для блоков.

В HTML документе для блочной верстки используют тег <div>. Все, что находится в его пределах, принято называть слоем, и формат этого слоя задается в каскадной таблице стилей при помощи классов или идентификаторов.

Первое, что нужно сделать после того, как макет сайта будет разрезан на части, в HTML задать структуру сайта, используя тег <div>, и присвоить для каждого слоя свой селектор. Например, если это меню, то так и написать: id=menu. После чего нужно подключить каскадную таблицу стилей и задать для каждого слоя свои параметры. Самый простой код имеет следующий вид.

разметка страниц css

Задаем параметры

На примере хорошо видно, как задаются параметры для блоков CSS. Позиционирование разметки страницы задано в пикселях, хотя в большинстве случаев лучше использовать проценты. В окне браузера этот сайт будет иметь вид «скроенного из разных частей полотна» так как в примере были использован только цвет области блока. Но если заменить его фоновым изображением, то можно получить не только красивый, но и достаточно функциональный продукт.

блочная разметка страниц средствами css

Между тегами <div> можно писать любую необходимую информацию с нужным форматированием. Любой текст, написанный в пределах этого тэга, сразу же накладывается слоем на форматированный блок. Объекты между <div> будут автоматически уменьшаться, чтобы не выходить за размеры блока.

Этот пример - лишь небольшая часть всего того, с чем должен будет столкнуться веб-мастер, работая над качественными характеристиками ресурса. При создании хорошего веб-ресурса, нередко могут быть использованы хаки для приобретения функции кроссбраузерности. Редактировать коды страниц можно в специальных редакторах, что значительно упрощает работу, хотя не избавляет веб-мастера от необходимости ручного редактирования.

интенсивное введение в css разметка страницы

Создать сайт самостоятельно может каждый. Главное - понимать, что и CSS, и HTML были созданы людьми и предназначены для людей. Основы разметки страниц доступны всем, а создание веб-ресурсов не только прерогатива избранных, но и может быть вполне обыденной деятельностью каждого желающего.

Интенсивное введение в CSS. Разметка страницы

  1. Где мы находимся

В своей предыдущей статье посвященной CSS я рассказывал о базовых принципах CSS и типовых случаях его использования. Были рассмотрены основы CSS, возможные виды селекторов, структура HTML с точки зрения CSS. Я перечислил наиболее распространенные свойства CSS и показал как они могут задаваться для элементов страницы. Я уделил достаточно внимания свойствам CSS отвечающие за отступы и границы, отрисовку текста, картинок, ссылок и списков. Наконец остановился на свойствах специфичных для стилизации таблиц.

Все это хорошо, но по прежнему открытым остается вопрос использования стилей CSS для формирования структуры и разметки страницы. Раньше, когда о CSS мало кто знал и он только формировался как действенная технология, для этих целей практически повсеместно использовались таблицы. Они как правило занимали все место на странице и с помощью ячеек таблицы задавались регионы для размещения отдельных секций. Наличие таких свойств как colspan и rowspan, которые соответственно позволяют склеивать несколько колонок на строке и несколько строк в колонке, придавало еще большую гибкость разметке заданную таким образом. Очень часто в качестве содержимого ячейки использовались вложенные таблицы, которые в свою очередь могли иметь свои вложенные таблицы. Такая структура страницы в случае ее больших объемов становилась тяжелой, трудноподдерживаемой и совсем не гибкой. Скажем для того что бы перенести секцию с одной стороны страницы на другую в отдельных слуаях приходилось часами сидеть и вручную переписывать разметку заново.

Теперь же с использованием CSS все стало намного проще. Достаточно отделить содержимое требуемой секции в отдельный слой с помощью тега div и просто задать для него правила позиционирования на странице с помощью свойств CSS. В случае если позже появится необходимость перенести данную секцию в противоположную сторону страницы – достаточно просто изменить свойства CSS не трогая при этом кода самой страницы. Все очень просто и удобно. Однако для того что бы это простота была очевидной нужно немного поглубже познакомиться с данными возможностями.

В данной статье я расскажу о том какие способы разметки страницы бывают, как ими пользоваться и как их создавать. Но начнем со всего попорядку.
  1. Варианты разметки страницы.

Как правило все страницы можно разделить на три категории:

  • Страницы с фиксированной шириной. Такие страницы имеют ограницение на ширину для своих элементов и вне зависимости от того какой размер окна браузера – ширина используемого региона фиксирована и не изменяется в процесе работы со страницей. Подобные страницы используются в тех местах где устанвлены жесткие требования к отображению элементов страницы и неконтроллируемое расползание каких то элементов попросту недопустимо. В подобных случаях как правило устанавливают фиксированную ширину тега body и центрируют страницу по ширине окна браузера. Самая распространенное значение ширины для страниц с фиксированной шириной: 960px – такой размер позволяет хорошо выглядеть странице при разрешении экрана начиная с 1024х768.

  • Страницы с плавающей шириной. – У данного типа страниц ширина его элементов не задана, и они свободно изменяют свои размеры, растекаясь по всему экрану или родительской секции и занимая все свободное место. Такой подход наиболее целесообразно применять в случае если основной целью страницы является отображение текста. В других же случаях применение подобных подходов может сделать из вас дон-Кихота, бессмысленно сражающегося с ветрянной мельницей, коей в вашем случае будет браузер.

  • «Эластичные страницы». Данные страницы совмещают в себе оба подхода. Элементы таких страниц имеют фиксированную ширину, но способны растягиваться или сжиматься в зависимости от ширины окна браузера в предустановленных диапазонах. Для таких целей можно использовать свойства min-height, min-width, max-height и max-width, о которых я упоминал в первой части.

Для того что бы добиться наилучших результатов, часто имеет смысл объеденить все три подхода к разметке страницы: скажем все вспомогательные и навигационные секции – в которых недопустимо неконтролируемое растекание элеметнов - сделать фиксированными по ширине, а центральную панель сделать «эластичной» или вовсе позволить ей занимать все пространство, остающееся после фиксированных секций в окне браузера.

  1. Способы разметки страницы

CSS позволяет эффективно реализовать разметку, используя различные приемы и техники. К наиболее распространенным приемам относятся плавающие слои (в англоязычных источниках, данный прием может называться float layout) и абсолютное позиционирование (absolute positioning). Причем, субъективно, разметка абсолютного большинства сайтов использует именнно плавающие слои. Далее я постараюсь рассмотреть каждый из этих приемов более детально.

  1. Плавающие слои

Плавающие слои реализуются посредством манипуляций со свойством float для эементов страницы. С помощью этого свойства слой, параграфы и прочие элементы можно позиционировать по левой или правой правой стороне страницы или внешнего контейнера. Для этого необходимо задать свойство float с соответсвующим значением: float: left, right, none;. Остальное содержимое страницы будет «окружать» данный элемент прижатый к одной из сторон. Очень важный момент, который необходимо учесть, что содержимое будет окружать элеметн с float только когда оно определено ниже этого тега в коде страницы и его ширина не больше оставшейся ширины страницы или внешнего контейнера. Поэтому в данном случае очень важно определить последовательность описания элеметнов страницы в HTML файле.

Иногда бывают ситуации, когда необходимо сделать так что бы какое то содержимое не окружало float-элемент а отрисовывалось ниже этого элемента. Примером такой ситуации может быть панель-footer, которая несмотря ни на что всегда должна быть в самом низу страницы. Здесь на помощь может прийти свойство clear которое принимает следующие значения: clear: left; right; both; none. Данное свойство принуждает содержимое отрисовываться ниже float-элемента. Причем с помощью значений этого свойства можно задать к каким float-элементам это относится: с левым выравниманием, с правым и с тем и с тем или ни к тому ни к другому. Так, если у вас есть элемент с float:left, для того что бы остальное содержимое отобразить ниже и не позволить ему окружить данный элемент следует также использовать clear:left.

Однако описанной функциональности разумеется недостаточно для эффективной реализации разметки страницы. Теперь самое время разобраться с приемами для более тонкой настройки разметки. В сулчае плавающих слоев положение элемента страницы по горизонтали как правило задают с помощью CSS свойства margin, которое, как мы уже знаем, используется для задания расстояния от границы одного элемента до другого элемента. На первый взгляд это может показаться несколько странным и не практичным. Однако, это только на первый взгляд. Уникальной особенностью данного свойства является то, что для него можно задавать отрицательные значения, смещая таким образом элемент влево относительно его исходного положения. Ну а соответственно положительно значение смещает элемент вправо (на самом деле разумеется элемент остается на своем месте, просто добавление свойства margin для элеметна визуально смещает его на заданное значение).

Таким образом, можно для элеметнов задать фиксированную ширину и высоту с помощью width и height соответственно, указать требуемые значения float и margin и радоваться результату. Дальнейшие действия ограничены только вашим воображением и смекалкой. В качестве примера, я хочу показать как можно было бы разметить страницу. Ниже представлен пример страницы разбытый на секции и код CSS-файла и HTML-страницы.

view image
Index.htmlMain.css
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<link rel="stylesheet" type="text/css" href="css/main.css">

<title>Main Page</title>

</head>

<body>

<div>

<br />

<br />

</div>

<div>

</div>

<div>

</div>

<div>

</div>

<div>

</div>

<div>

</div>

<div>

</div>

</body>

</html>

/*clear browser predefined values*/

html, body, h2, h3, h4, h5, h5, h6, p, ol, ul, li, pre, code, address,

variable, form, fieldset, blockquote {

padding: 0;

margin: 0;

font-size: 100%;

font-weight: normal;

}

html

{

background: #C2C2C2;

}

/*defining margin-left: auto; and margin-right: auto; we place tha body content to the center of the screen*/

body

{

width: 1000px;

height: 1000px;

margin-left: auto;

margin-right: auto;

background: #FFF;

}

#topmenu

{

clear:right;

}

#login

{

text-align: center;

width: 300px;

background: #F2F2F2;

float: right;

margin: 2px;

padding: 5px;

border: 1px solid #FD8000;

border-left: 5px solid #FD8000;

}

/*common panels of the sites*/

.mainpanel

{

background: #F2F2F2;

border: 1px solid #FD8000;

border-top: 20px solid #FD8000;

margin: 1px;

padding: 0px;

}

#main

{

width: 518px;

height: 605px;

margin-left: 205px;

}

#top-lsidebar

{

width: 200px;

height: 186px;

float: left;

padding: -5px;

}

#bottom-lsidebar

{

width: 200px;

height: 396px;

clear: left;

float: left;

}

#top-rsidebar

{

width: 270px;

height: 605px;

float: right;

margin-right: 2px;

}

#footer

{

width: 1000px;

height: 30px;

background: #FD8000;

clear:both;

}

  1. Абсолютное позиционирование

Абсолютное позиционирование, как я уже говорил, используется не так часто, как плавающие слои, однако тоже заслуживает внимания. Иногда бывает так, что прием плавающих слоев оказывается неприемлимым по каким то причинам, и поэтому все что нам остается в такой ситуации – это абсолютное позиционирование. Однако чаще всего абсолютное позиционирование используется для месного позиционирования – указания размещения одного элемента относительно положения другого. Так или иначе знать о данном приеме нужно обязательно.

В основе данного приема лежит использование свойства position, которое может принимать следующие значения: position: absolute, relative, fixed, static. Значение absolute – задает позицию элемента в координатах экрана, или родительского элемента, как будет показано ниже. relative – определяет позицию относительно места по умолчанию. При указании смещения с использованием данного значения, на странице остается «дырка», поэтому как правило, использовать его таким образом не стоит, как можно – чуть попозже. fixed – Указывает позицию на экране, вне зависимости от скрола, то есть сколько бы вы не прокручивали скрол бар – элемент все равно останется на своей позиции. Значение static - нормальное позиционирование, если для элеметна не указан тип позиционирования, данное значение применяется по умлочанию.

После того как задано свойство position для элемента, имеет смысл указать свойства определяющие координаты элемента: top, bottom, left и right. Так, указав для какого либо элемента position: absolute, можно задать его положение с помощью вышеперечисленных свойств относительно той или иной границы окна браузера. Однако, если мы говорим об каком либо элементе который, скажем, находится внутри слоя, то абсолютное позиционирование такого элемента осуществляется относительно границ этого самого слоя.

Что бы пояснить сказанное, рассмотрим простой пример. Допустим у нас имеется заголовок а внутри заголовка задана картинка. Тогда ее положение относительно этого самого заголовка можно задать так:

h2 { position: relative; }

h2 img {

position: absolute;

top: 0;

right: 0;

}

То есть используя для заголовка свойство position: relative;, мы как бы говорим осуществлять позиционирование «относительно меня», ну а свойство position: absolute;

осуществляет позиционирование относительно границ родительского элемента. Как и для предыдущего приема, я предоставлю пример, что бы было понятно, что и как следует использовать.

view image
Index.htmlMain.css
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<link rel="stylesheet" type="text/css" href="main.css">

<title>Main Page</title>

</head>

<body>

<div>

<h2>banner</h2>

<br />

</div>

<div>

<div>

<h2>main</h2>

</div>

<div>

<h2>left</h2>

</div>

<div>

<h2>right</h2>

</div>

<div>

<h2>footer</h2>

<br />

</div>

</div>

</body>

</html>

html, body, h2, h3, h4, h5, h5, h6, p, ol, ul, li, pre, code, address,

variable, form, fieldset, blockquote {

padding: 0;

margin: 0;

font-size: 100%;

font-weight: normal;

}

html

{

background: #c2c2c2 ;

}

body

{

width: 1000px;

height: 1000px;

margin-left: auto;

margin-right: auto;

background: #FFF ;

}

/*common panels of the sites*/

.mainpanel

{

background: #F2F2F2;

border: 1px solid #FD8000;

border-top: 20px solid #FD8000;

margin: 1px;

padding: 1px;

}

.mainpanel h2

{

margin-top: -20px;

color: #FFF;

font-weight: bold;

text-transform: capitalize;

}

#content

{

position: relative;

}

#main

{

position: absolute;

left: 205px;

width: 584px;

height: 300px;

}

#left

{

position: absolute;

left: 0px;

width: 200px;

height: 300px;

}

#right

{

position: absolute;

right: 0px;

width: 200px;

height: 300px;

}

#footer

{

position: absolute;

top: 330px;

left: 0px;

right: 0px;

}

  1. И что дальше?

Вот собственно наверное и все по разметке. Дальнейшие нюансы использования CSS для данной задачи уже будут специфичны для вашего проекта, браузера и требований. Разумеется о многом я не рассказал и сейчас. Не предостерег вас по поводу специфики разметки страницы для IE 6.0 (о, да, по этому впрору отделную книгу писать). Там много чего, даже из того, о чем я говорил, не будет работать или будет работать не так как хотелось бы вам. А для того что бы заработало, нужно пользоваться магическими заклинаниями вроде * html или zoom : 1; Ничего не рассказал о том, как боротся с возникающими проблемами при разметке, когда панели ползут непонятно куда и зачем ( а это поверте, случится, и причем не раз, и не только с вамиJ). Не рассказал про свойство z-index, это очень важно, особенно в случае с абсолютным позиционированим, когда содержимое одного элемента перекрывает содержимое другого. Не рассказал про такое чудесное свойство overflow, которое помогает бороться с содержимым панелей, которому не сидится внутри и так и хочется выпрыгнуть за пределы своего слоя. И еще много-много-много чего, о чем я промолчал. Не потому что я глупый, просто немного ленивыйJ

table» — Блог Академии — HTML Academy

Восстановление подмоченной репутации CSS-таблиц

Антигерой — один из центральных персонажей фильма, книги или пьесы, не обладающий обычными героическими качествами.

Использование таблицы в разметке — щекотливая тема. Для многих веб-разработчиков табличная вёрстка — табу. Хотя существует множество доводов против этого, большинство разработчиков не могут внятно объяснить, почему нельзя использовать табличную разметку, кроме того, что «таблицы — это плохо».

Импульс от давнего начала движения против использования HTML-таблиц был силен. Он оказал влияние на многие поколения разработчиков, заставив их думать, что любое использование таблиц — зло.

Надо признаться, я один из тех разработчиков, кто избегает табличной вёрстки даже для представления табличных данных. Мало того, я даже упрекал своих коллег, когда они использовали display: table для колоночной разметки (или разметки «Holy Grail»).

Оглядываясь назад, я понимаю, что с упрямством, достойным лучшего применения, тратил огромное количество времени на то, чтобы «заточить» CSS под нужную мне задачу.

Два типа табличной разметки

Использовать таблицы в вёрстке можно двумя способами: это HTML-таблица и CSS-таблица.

HTML-таблица — это когда для создания таблицы используется нативный HTML-тег <table>, а CSS-таблица — это имитация того же поведения, но с помощью CSS-свойств.

Есть ключевое различие

Как и те, кто учился по «CSS Zen Garden», я испытываю отвращение к табличной вёрстке в HTML. Сам того не понимая, я позволял обманчивым предубеждениям ввести себя в заблуждение, преувеличивая взаимосвязь между HTML- и CSS-таблицами.

Если нечто выглядит, работает и ведёт себя как таблица, то оно ведь должно быть таблицей? Неправильно!

На самом деле, у CSS-таблиц есть одно ключевое отличие от HTML-таблиц: они могут перестать быть таблицами, стоит только изменить их CSS-свойства. А HTML-таблицы на такое не способны. Это открывает перед нами широкие возможности выборочного использования в вёрстке нужных табличных особенностей.

Ниже вы найдёте несколько примеров использования display: table:

Динамическое вертикальное выравнивание по центру

Нажимайте на кнопку, чтобы добавить строчки.

Это, пожалуй, самый распространённый способ использования display: table. С его помощью можно получить истинное выравнивание по вертикали элементов с динамической высотой.

Есть также другой, более короткий, способ вертикального выравнивания, который может вас заинтересовать:

Динамическое горизонтальное выравнивание по центру

Чтобы горизонтально расположить по центру динамический элемент, можно сделать его блочно-строчным (display: inline-block). Затем внешнему контейнеру этого элемента нужно задать свойство text-align: center. Недостаток этого способа состоит в «побочном эффекте» выравнивания текста по центру. Все дочерние элементы внутри контейнера унаследуют свойство text-align: center, которое может переопределить существующие свойства.

Благодаря @mojtabaseyedi я нашёл новый способ выравнивать динамические элементы по горизонтали без побочных эффектов. Нужно применить к динамическому элементу display: table и margin: auto.

Адаптивная вёрстка

Уменьшите окно до <480px, чтобы увидеть адаптивность в действии.

Как я уже упоминал, CSS-таблица может вести себя не как таблица, когда это необходимо. Переключив у элемента свойство display с table-cell на block, мы сможем расположить элементы в стопку.

Порядок следования меняется с 1-2-3 на 2-3-1

Можно даже изменить порядок следования блочных элементов. Подробнее об этом приёме можно почитать здесь.

Динамический прилипающий подвал

Динамический прилипающий подвал

Прилипающий подвал должен соответствовать двум требованиям:

  1. Подвал должен прилипать к низу страницы, когда основного контента слишком мало, чтобы заполнить всю страницу по высоте.
  2. Подвал должен следовать в потоке как обычно, если объём контента превышает высоту страницы.

Если вы когда-нибудь искали решение этой задачи, то вам, возможно, попадались эти полезные варианты от Chris Coyier и Ryan Fait.

Эти решения отлично работают, но у них есть один недостаток: подвал должен быть фиксированной высоты. Эту проблему можно обойти средствами JavaScript, но я всё же предпочитаю использовать для этого CSS. С помощью display: table можно сделать прилипающий подвал с динамической высотой.

Разметка «Holy Grail»

Разметка «Holy Grail» (от A List Apart) — это вариант разметки страницы с шапкой, тремя равными по высоте колонками (две фиксированных боковых колонки и тянущийся центр) и прилипающим подвалом.

Разметка «Holy Grail»

Такая разметка должна по мере возможности удовлетворять следующим требованиям:

  1. Центральная колонка должна тянуться, а боковые — иметь фиксированную ширину.
  2. Центральная колонка может идти первой в разметке.
  3. Любая колонка может быть больше остальных по высоте.

Разметка «Holy Grail» с помощью display: table

В примере выше показана разметка «Holy Grail». Можете менять размеры окна, чтобы средняя колонка тянулась по ширине; также можно добавить контент, чтобы посмотреть, как работает прилипающий подвал. Единственное требование, которому эта разметка не соответствует, — это пункт 2: «Центральная колонка может идти первой в разметке».

Наверно, это нужно для поисковой оптимизации. То есть если соображения SEO для вас не стоят на первом месте, с помощью display: table вы сравнительно легко сделаете разметку «Holy Grail».

Вы шутите? Flexbox всё решит!

Это действительно так. Ознакомьтесь, например, с решением вышеприведённых задач с помощью flexbox от Phillip Walton. Однако, я бы не торопился его применять. На долю IE8 и IE9 до сих пор приходится 32% рынка десктопных браузеров — а это слишком много пользователей, чтобы отказываться от них ради удовольствия применить flexbox. Если только ваш сайт не рассчитан целиком на мобильный трафик — в чём я сильно сомневаюсь, — стоит выбрать display: table.

Уточнение: Я работаю на консалтинговую компанию, поэтому заинтересован в поддержке десктопов. Но если вам нужно поддерживать только мобильные браузеры, можете смело использовать flexbox.

Заключение

Надеюсь, с помощью приведённых примеров мне удалось продемонстрировать полезные свойства несправедливо пренебрегаемого display: table. Однако должен подчеркнуть, что CSS-таблицы — не панацея для разметки. Используйте их уместно, это позволит вам избежать длительных ночей правки CSS-кода.

принцип работы — учебник CSS

Один из методов создания разметки веб-страниц основывается на свойстве float. Мы изучали его во втором разделе учебника и показывали базовый пример использования float для верстки макета с несколькими колонками.

На изображении ниже показан еще один пример того, как создать четырехколочный макет при помощи свойства float:


Пример разметки с float

Каждая колонка занимает ¼, или 25% всей ширины экрана. Четыре колонки выстраиваются одна за другой, четко помещаясь в один ряд, поскольку их ширина в сумме составляет 100%. Если увеличить ширину колонки даже на одну долю процента либо добавить сбоку margin, последняя колонка переместится вниз, поскольку уже не будет помещаться в родительский контейнер:


Съезжающие элементы float

Чтобы поменять колонки местами, начиная отсчет не слева направо, а наоборот, нужно всего лишь поменять значение свойства float с left на right:


Смена мест колонок float

Обратите внимание, что значение свойства clear для элемента #footer мы также изменили на противоположное. В данном случае, чтобы облегчить задачу и избавиться от необходимости изменять значение свойства сброса обтекания при изменении свойства float, достаточно записать clear: both — тогда обтекание для футера будет отменено с двух сторон сразу.

Поскольку по умолчанию блочные элементы занимают всю ширину экрана, важно определять через CSS ширину для float-элементов, чтобы освободить горизонтальное место под эти элементы и, собственно, увидеть сам эффект обтекания. Ширина может быть как фиксированной, так и относительной (как в нашем примере).

Допустим, если мы укажем фиксированную ширину 960 пикселей для родительского контейнера, содержащего четыре плавающих блока шириной 25% каждый, то ширина одного блока составит 240 пикселей:


Равная ширина колонок float

К слову, чтобы родительский блок .container был горизонтально выровнен по центру, а не прилегал к левому краю, мы добавили к нему свойство margin со значением auto. Это сокращенная запись, но вы можете добиться того же эффекта, если запишете стили отдельно для левого и правого полей (только они играют роль в горизонтальном центрировании):


.container {
    margin-left: auto;
    margin-right: auto;
}

Изменение порядка колонок

Свойство float позволяет не только менять визуальный порядок следования колонок, но и перемещать любые из них выборочно. Можно перенести три столбца вправо, а один — влево и т. д. Главное, чтобы всем столбцам хватило места в одном ряду.

Возможность такого перемещения позволяет не привязываться к порядку размещения блоков в HTML. К примеру, если ваш сайдбар должен находиться слева на странице, но вы не хотите, чтобы в HTML-документе он располагался первым, как на примере ниже, вам на помощь придет float.


Верстка с float

У вас может возникнуть вопрос, зачем важен порядок тегов в HTML. Что ж, во-первых, это может быть обычное нежелание видеть в HTML-коде сначала длинный перечень второстепенной информации (которая часто содержится в сайдбаре), и только затем — основное содержимое. Во-вторых, присутствие в верхней части документа большого количества маловажного контента может создавать неудобства для людей, которые используют экранный диктор, ведь программа будет читать сначала текст сайдбара, после чего перейдет к информации, которая интересует посетителя.

Еще одна причина — поисковые системы. Нередко роботы читают лишь небольшой отрывок кода HTML, и, если ваша веб-страница весьма длинная, а важная для поисковых систем информация находится где-то в ее конце, робот может до нее не дойти.

На скриншоте ниже показано, каким образом можно изменить порядок следования HTML-тегов, при этом сохранив внешний вид страницы идентичным. Мы обернули блок с основным контентом и первый сайдбар в тег <div> с классом .wrapper. Это дало возможность внутри него поменять местами два вышеупомянутых элемента.


Изменения порядка float-блоков без затрагивания HTML

Как видите, визуально всё осталось неизменным, но в HTML-структуре произошли изменения. Теперь основное содержимое находится в начале страницы, что делает сайт более доступным для пользователей с экранным диктором, а также для поисковых систем, у которых есть квоты относительно сканируемой информации.

Вложенные float-элементы

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

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

Немного о grid-системах

Сетка (англ. grid) использовалась дизайнерами еще до эры Интернета. Grid-система — это набор колонок и рядов, которые помогают правильно разместить элементы макета.

Самая распространенная grid-система имеет 12 колонок одинаковой ширины, между которыми, как правило, есть небольшое расстояние. Такое количество столбцов вовсе не означает, что вам нужно создавать сайт с двенадцатью колонками. Вы можете сделать макет с любым количеством колонок, разделив 12-колоночную сетку на группы. Допустим, если макет состоит из трех колонок, то можно сделать эти колонки одинаковой ширины, каждая из которых будет занимать 4 столбца grid-системы. Либо под две колонки отвести половину сетки (6 столбцов), тогда как третья колонка займет оставшееся пространство сетки (еще 6 столбцов).

Пример того, как выглядит 12-колоночная сетка:

12-колоночная grid-система

Подобная сетка гибкая и простая в использовании, она позволяет создавать разнообразные макеты, в то же время придерживаясь общей измерительной схемы. Зачастую в CSS grid-системах есть ряды и колонки, которые через классы именуются как .row и .column (либо .col) соответственно. Колонки помещаются в ряды, а внутрь колонок — содержимое либо вложенные ряды с колонками. Одним из распространенных CSS-фреймворков, которые используют grid-систему, является Bootstrap.


Далее в учебнике: проблемы float-элементов.

Отправить ответ

avatar
  Подписаться  
Уведомление о