Css grid: верстаем адаптивный журнальный макет в 20 строк

Ширина и высота элемента

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


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

Предположим, что мы хотим установить стиль элемента общую ширину 350 пикселей:

Пример

div {    width: 320px;    padding: 10px;    border: 5px solid gray;    margin: 0;}

Вот вычисление:

320px (ширина) + 20px (отступ слева + справа) + 10px (граница слева + справа) + 0px (поля слева + справа)= 350px

Общая ширина элемента должна быть рассчитана так:

Общая ширина: элемента = ширина + левый отступ + правый отступ + левая граница + правая граница + левое поля + правое поля

Общая высота элемента должна быть рассчитана так:

Общий высота: = высота + отступ сверху + нижний отступ + верхняя граница + нижняя граница + верхняя граница + нижнее поле

Примечание для старых IE: Интернет Explorer 8 и более ранние версии, подключить свойства и в ширину. Чтобы устранить эту проблему, обязательно добавьте на странице HTML.

Инструменты разработчика

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

Чтобы увидеть Инструменты разработчика в Google Chrome, откройте меню, выберите «Дополнительные инструменты», а затем «Инструменты разработчика». После этого откроется панель в нижней части окна браузера, которая предлагает несколько инструментов для проверки нашего кода.

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

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

Поиграйте с инструментами разработчика, будь они в Google Chrome, Mozilla Firefox, Apple Safari или других браузерах; можно многое узнать просматривая наш код. Я вообще оставляю панель инструментов всегда открытыми при написании HTML и CSS. И также часто проверяю код других сайтов, чтобы увидеть, как они сделаны.

Рис. 4.04. Инструменты разработчика Google Chrome, которые помогают нам проверять HTML и CSS на любой странице

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

Резюме


Возьмите пирожок и погладьте себя по голове. Я подожду.

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

Вкратце, в этом уроке мы говорили о следующем:

  • Как отображаются разные элементы.
  • Что такое блочная модель и почему она так важна.
  • Как изменить размер элементов с учётом высоты и ширины.
  • Как добавить к элементам margin, padding и border.
  • Как изменить размер элементов и влияние блочной модели.

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

Блочная вёрстка сайта

Блочная вёрстка сайта с каждым днём становится всё более популярной, за счёт того что она более гибкая.

Делается в виде отдельных блоков, которые выстраиваются один за другим и для каждого из которых прописываются свои стили (цвета, размеры, положение и т.д.) Создание такой страницы похоже на строительство дома из кубиков. Вы выстраиваете кубики разных размеров так как Вам хочется чтобы при этом получился дом. И при желании Вы можете в любой момент поменять местами какие то кубики.

Достоинства:

  • очень гибкая в плане задания и изменения стилей для отдельных блоков
  • позволяет легко реализовывать даже самые сложные дизайн-макеты
  • позволяет легче реализовывать адаптивный дизайн (адаптивную вёрстку)
  • при необходимости легко преобразуется в табличную вёрстку (точнее сказать можно сделать так чтобы блоки отдельных элементов рассматривались браузером как ячейки таблицы)
  • загрузка блоков происходит быстрее чем таблиц.

Недостатки:

  • при вёрстке макета из нескольких колонок возможны перескакивания блоков на новую строку при масштабировании браузера
  • значительно сложнее добиться кроссбраузерности
  • сложнее в освоении чем табличная

Для чего нужна каскадная таблица стилей

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

В таблице стилей мы прописываем стили (правила) оформления. Каждое правило состоит из селектора и блока объявлений. Селектор определяет, на какие части документа распространяется правило. Блок объявлений помещается в фигурные скобки и состоит из одного или более объявлений, разделенных точкой с запятой. На самом деле это очень просто. Вот как выглядит простейшее правило с двумя свойствами для двух селекторов в таблице стилей:

селектор, селектор {    свойство: значение;   свойство: значение;{

Например, для назначения шрифта абзацу (HTML-элементу p) пишем такое правило:

p { font-family: arial, helvetica, sans serif; }

Оно указывает использовать в абзацах данной веб-страницы шрифт Arial. Если он недоступен — использовать следующий по списку (Helvetica или Sans Serif).

А вот правило CSS, которое создает скругленные углы для картинки headerTiny.png.

a {    float: left;   height: 40px;   line-height: 40px;   padding-left: 0.8em;   padding-right: 0.8em;   border-top-left-radius: 8px;   border-top-right-radius: 8px;   background-image: url(images/headerTiny.png);   background-repeat: repeat-x;}

Таблицу стилей можно хранить в отдельном файле .css и применять для многих страниц. Или прописать стили конкретно в коде HTML-страницы, обрамив тегами <style>.

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

html {    font-size: 62.5%;   font-family: serif;}body {   font-size: 1.8rem;   line-height: 1.618;   max-width: 38em;   margin: auto;   color: #4a4a4a;   background-color: #f9f9f9;   padding: 13px;}@media (max-width: 684px) {   body {      font-size: 1.53rem;   }}@media (max-width: 382px) {   body {      font-size: 1.35rem;   }}h1, h2, h3, h4, h5, h6 {   line-height: 1.1;   font-family: Verdana, Geneva, sans-serif;   font-weight: 700;   overflow-wrap: break-word;   word-wrap: break-word;   -ms-word-break: break-all;   word-break: break-word;   -ms-hyphens: auto;   -moz-hyphens: auto;   -webkit-hyphens: auto;   hyphens: auto;}h1 {   font-size: 2.35em;}h2 {   font-size: 2em;}h3 {   font-size: 1.75em;}h4 {   font-size: 1.5em; }h5 {   font-size: 1.25em; }h6 {   font-size: 1em;}

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

Как видите, CSS просто указывает стиль оформления для элементов HTML и всего документа в целом. Это поля, особые шрифты для заголовка, подзаголовков и основного текста, цвет фона и так далее. Непросто подобрать все эти значения, чтобы было красиво. Но зато здесь открывается простор для творчества.

Сам язык CSS очень простой. Точнее, он был достаточно прост в начале. Предполагалось, что владелец существующего сайта просто подключит стиль — и получит «конфетку» HTML+CSS с красивым оформлением. Затем при необходимости легко и быстро изменит оформление сайта, немного отредактировав файл CSS. Но потом начались сложности.

Как отображаются элементы?

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

display

Как именно отображаются элементы — как блочные или строчные или как-то ещё, определяется свойством display. Каждый элемент содержит значение свойства display по умолчанию, но как и с любым другим значением свойств, это значение может быть переписано. Есть немало значений для свойства display, но наиболее распространённые это block, inline, inline-block и none.

Мы можем изменить значение свойства display элемента, выбрав этот элемент в CSS и задав новое значение свойства display. Значение block сделает этот элемент блочным.

Значение inline сделает этот элемент строчным.

Самое интересное это значение inline-block. Его использование позволит элементу вести себя как блочный, включая все свойства блочной модели (которые мы вскоре рассмотрим). Однако, элемент будет отображаться на строке с другими элементами, а не будет начинаться с новой строки по умолчанию.

Пространство между строчно-блочными элементами

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

В заключение, используя значение none полностью скрываем элемент и отображаем страницу, словно элемента не существует. Любые элементы, вложенные в такой элемент, также будут скрыты.

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

CSS стили


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

Float

Для начала, давайте познакомимся со свойством, которое позволяет расположить блок DIV справа или слева на странице или относительно родительского контейнера.

Свойство float имеет четыре значения: none, right, left, inherit.

Нас интересует значение «слева» и «справа».

Значение float указывает на то, с какой стороны будет отображаться наш блок. Все прочие блоки будут обтекать его с противоположной стороны.

В нашем случае, для блока навигации мы должны указать значение left, а для основного контента значение right. Вот как это будет выглядеть в файле стилей:

.nav {
float:left;
}

.content {
float:right;
}

Кстати, можно задать свойство только для блока навигации. Блок с контентом будет автоматически расположен справа от навигации. Это будет достигнуто, благодаря обтеканию, которое получается при задании свойства float.

Отступы в CSS: margin и padding

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

Давайте представим, что нам необходимо сделать таким образом, чтобы наш основной блок MAIN, имел небольшой отступ от шапки сайта. Это можно реализовать, если назначить для блока div с классом main, свойство margin. Оно отвечает за внешние отступы блока.

Свойство margin имеет следующие значения: {1,4} | inherit.

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

Есть возможность задавать только определенный отступ, например с верхней стороны. Это как раз наш случай. Вот как это будет реализовано:

.main {
margin-top:10px;
}

Теперь наш блок main будет иметь верхний отступ в 10 пикселей.

Теперь давайте оформить блок с навигацией и контентом. Представьте, что у нас уже есть готовый сайт. Все ссылки в навигации вплотную прилегают к левому краю страницы. А текст в блоке контента наоборот, вплотную прилегает к правой стороне. Довольно не приятное оформление. Нам нужно сделать внутренние отступы.

За это отвечает свойство padding, имеющее следующие значения: {1, 4} | inherit

Здесь тот же принцип, что и со свойством margin — можно задавать отступ для каждой стороны отдельно.


Давайте для начала отодвинем ссылки в навигации от левого края на 15 пикселей. Затем текст в блоке контента на 20 пикселей от правой стороны. В итоге наш CSS код немного дополнится:

.nav {
float:left;
padding-left: 15px;
}

.content {
float:right;
padding-right: 20px;
}

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

Видео к статье:

Блочная верстка

Вся веб-страница делится на смысловые блоки. Давайте сверстаем блоками схему, представленную выше.

В папке «My site» создайте файл block.html. Вставьте в него следующий код:

<!DOCTYPE html>
<html>
<head>
    <title>Блочная верстка</title>
    <link rel="stylesheet" href="style.css">
</head>
    <body>
	<div id="header"></div>
	<div id="main"></div>
	<div id="footer"></div>
    </body>
</html>

В первую очередь обратите внимание, что файл стилей остался тот же style.css. В body появились 3 новых тега div, у каждого из которых свой id

div (англ. division — раздел) — один из самых часто используемых тегов. Он представляет из себя блок. Но об этом чуть позже. Сейчас в файл style.css вставьте код, чтобы в итоге он выглядел так:

body{
	background-color: gray;
}
#header{
	background-color: #fff;
}
.h1{	
    font-size: 30px;
    color: #000;
    text-align: center;
    margin: 0;
    padding-top: 20px;
    padding-bottom: 20px;
}
#header{
	background-color: #126b6a;
	height: 20vh;
}
#main{
	background-color: #51ede4;
	height: 60vh;
}
#footer{
	background-color: #126b6a;
	height: 20vh;
}

Здесь добавились стили для header, main и footer. Каждому из них задан цвет и высота

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

Высота задана не в пикселях (px), а в vh. vh — это относительная величина. И измеряется она относительно высоты окна Вашего браузера. Это как бы проценты от высоты Вашего браузера. То есть, если, например, высота окна браузера 100px, то 2vh станут равны 2px.

Откройте block.html в браузере.

Если блоку div не задать никакую высоту, и внутри блока не будет ничего (никакого текста или изображения), то блок никак не отобразится на экране, потому что его высота будет 0.

Ширина же div по умолчанию равна ширине родительского элемента. Конечно, ее можно изменить задав, например, в пикселях так — width: 10px; .

Дизайн сайта

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

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

Что такое блочная модель:

Блочная модель в CSS, это и есть блочные элемент в HTML, то есть вы будите работать с обычными блокам в HTML.

Из чего состоит блочная модель:

А работать с ней очень просто, суть в том, что каждый элемент, имеет несколько параметров, это content, padding, border и margin, как на этой картинки.

Давайте разберём эту картинку, что тут, да как.

  • Content — это то что посередине и выделен синим цветом, это как понятно из названия, хранит контент/данные;
  • Padding — Это внутренние отступы, от контента, нужна для разделение рамок и контента, отмечено зелёным цветом;
  • Border — Рамка элемента, она не обязательно должна быть вокруг, может быть только с одной стороны, отмечено жёлтым;
  • Margin — Внешние отступу, используется для того, что бы отделить блоки, отмечено оранжевым;

С этим читают