Css уроки: Уроки по HTML и CSS

Содержание

Открываем блочную модель | WebReference

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

В процессе мы обсудим тему, известную как блочная модель и как она работает с HTML и CSS. Мы также рассмотрим несколько новых свойств CSS и используем некоторые значения размеров, о которых рассказывали в уроке 3. Давайте начнём.

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

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

display

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

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

p {
  display: block;
}

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

p {
  display: inline;
}

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

p {
  display: inline-block;
}

Демонстрация inline-block

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

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

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

div {
  display: none;
}

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

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

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

Это стоит повторить: Каждый элемент на странице представляет собой прямоугольный блок.

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

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

Работа с блочной моделью

Каждый элемент представляет собой прямоугольный блок и есть несколько свойств, которые устанавливают размер этого блока. Внутренность блока определяется шириной и высотой элемента, который может быть задан свойством display, содержимым элемента или свойствами width и height. padding и затем border расширяют размеры блока наружу от ширины и высоты элемента. Наконец, любой указанный margin идёт за пределами рамки.

Каждая часть блочной модели соответствует свойству CSS: width, height, padding, border и margin.

Взглянем на эти свойства внутри некоторого кода:

div {
  border: 6px solid #949599;
  height: 100px;
  margin: 20px;
  padding: 20px;
  width: 400px;
}

В соответствии с блочной моделью общая ширина элемента может быть рассчитана по следующей формуле:

margin-right + border-right + padding-right + width + padding-left + border-left + margin-left

Для сравнения, в соответствии с блочной моделью общая высота элемента может быть рассчитана по следующей формуле:

margin-top + border-top + padding-top + height + padding-bottom + border-bottom + margin-bottom

Рис. 4.02. Блочная модель включает базовую высоту и ширину плюс padding, border и margin

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

Ширина: 492px = 20px + 6px + 20px + 400px + 20px + 6px + 20px
Высота: 192px = 20px + 6px + 20px + 100px + 20px + 6px + 20px

Блочная модель, без сомнения, одна из наиболее запутанных частей HTML и CSS. Мы устанавливаем значение свойства width как 400 пикселей, но фактическая ширина нашего элемента 492 пикселя. По умолчанию блочная модель коробка аддитивна. Таким образом, для определения фактического размера блока мы должны принять во внимание поля, границы и отступы для всех четырёх сторон блока. Наша ширина включает не только значение свойства width, но и размер левого и правого поля, левую и правую границу, левые и правые отступы.

Пока многие из этих свойств не несут большого смысла и это нормально. Для уточнения давайте поближе посмотрим на все эти свойства width, height, padding, border и margin, которые формируют блочную модель.

width и height

У каждого элемента есть ширина и высота по умолчанию. Эта ширина и высота может быть равна нулю, но браузеры по умолчанию отображают каждый элемент с размером. В зависимости от того, как отображается элемент, ширина и высота по умолчанию может быть соответствующей. Если элемент является ключевым в макете страницы, для него может потребоваться задать определённые значения свойств width и height. В этом случае значения свойств для не строчных элементов могут быть указанными.

width

По умолчанию ширина элемента основана на значении display. У блочных элементов ширина по умолчанию 100% и занимает всё доступное горизонтальное пространство. Строчные и строчно-блочные элементы расширяются и сжимаются горизонтально для размещения их содержимого. Строчные элементы не могут иметь фиксированный размер, таким образом, ширина и высота относятся только к не строчным элементам. Чтобы задать определённую ширину для не строчных элементов, используйте свойство width:

div {
  width: 400px;
}
height

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

div {
  height: 100px;
}

Размеры строчно-блочных элементов

Пожалуйста, помните, что строчные элементы не принимают свойства width и height и любые их значения. Блочные и строчно-блочные элементы, однако, принимают свойства width и height и соответствующие им значения.

margin и padding

В зависимости от элемента, браузеры могут применять отступы и поля по умолчанию для элемента, чтобы помочь с удобочитаемостью. Мы, как правило, видим это на текстовых элементах. Поля и отступы по умолчанию для этих элементов могут отличаться от браузера к браузеру и от элемента к элементу. В уроке 1 мы обсуждали использование сброса CSS чтобы все эти значения по умолчанию стали нулевыми. Это позволяет нам работать с нуля и задать собственные значения.

margin

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

div {
  margin: 20px;
}

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

padding

Свойство padding очень похоже на свойство margin, однако располагается внутри границ элемента. Свойство padding используется, чтобы задать пространство непосредственно внутри элемента. Вот код:

div {
  padding: 20px;
}

Свойство padding в отличие от margin работает вертикально для строчных элементов. Вертикальный padding может сливаться со строкой выше или ниже данного элемента, но будет отображаться.

margin и padding для строчных элементов

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

Отступы и поля работают как обычно для блочных и строчно-блочных элементов.

Установка margin и padding

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

Свойства margin и padding существуют в обычном и сокращённом виде. При использовании сокращённого свойства margin, чтобы установить одно значение для всех четырёх сторон элемента мы задаём одно значение:

div {
  margin: 20px;
}

Чтобы установить одно значение для верхней и нижней стороны, а другое значение для левой и правой стороны элемента, укажите два значения: вначале сверху и снизу, затем слева и справа. Здесь для <div> мы задаём отступы 10 пикселей сверху и снизу и 20 пикселей слева и справа:

div {
  margin: 10px 20px;
}

Чтобы установить уникальные значения для всех четырёх сторон элемента, укажите эти значения в следующем порядке: сверху, справа, снизу и слева, двигаясь по часовой стрелке. Здесь мы задаём для <div> отступы 10 пикселей сверху, 20 пикселей справа, 0 пикселей снизу и 15 пикселей слева.

div {
  margin: 10px 20px 0 15px;
}

Использование свойства margin или padding с любым числом значений считается сокращением. В обычной записи мы можем установить значение только для одной стороны используя уникальные свойства. После имени каждого из свойств (margin или padding в данном случае) идёт дефис и сторона блока, к которой должно применяться значение: top, right, bottom или left. Например, свойство padding-left принимает только одно значение и установит левое поле для этого элемента, свойство margin-top принимает только одно значение и установит верхний отступ для этого элемента.

div {
  margin-top: 10px;
  padding-left: 6px;
}

Когда мы хотим определить только одно значение margin или padding, то лучше использовать обычную запись. Это сохраняет наш код наглядным и помогает избежать путаницы по пути вниз. Например, вы действительно хотите установить margin в 0 сверху, справа и слева элемента или же на самом деле хотите установить margin снизу в 10 пикселей? Использование обычной записи для свойств и значений помогает нам это делать осмысленно. С другой стороны, когда имеешь дело с тремя или более значениями, сокращение невероятно полезно.

Цвет отступов и полей

Свойства margin и padding полностью прозрачны и не принимают какие-либо цветовые значения. Но будучи прозрачными они показывают цвет фона связанных элементов. Для margin мы видим цвет фона родительского элемента, а для padding видим цвет фона элемента, к которому применяется padding.

Границы

Границы располагаются между отступами и полями, создавая рамку вокруг элемента. Для свойства border требуется три значения: ширина, стиль и цвет. Сокращённая запись для border задаётся этом же порядке — ширина, стиль, цвет. В обычной записи эти три значения могут быть разбиты по свойствам border-width, border-style и border-color. Обычная запись полезна для изменения или переписывания отдельного значения границы.

Ширина и цвет границ могут быть определены с помощью обычных единиц размера и цвета CSS, как описано в уроке 3.

У границ может быть различный внешний вид. Наиболее распространённые значения solid, double, dashed, dotted и none, но есть и несколько других на выбор.

Вот код для сплошной серой границы толщиной 6 пикселей для всех четырёх сторон <div>:

div {
  border: 6px solid #949599;
}

Демонстрация border

Границы для отдельных сторон

Как и со свойствами margin и padding границы могут быть размещены на одной стороне элемента за раз при желании. Это требует новых свойств: border-top, border-right, border-bottom и border-left. Значения для этих свойств такие же, как и для border: ширина, стиль и цвет. При желании можно сделать так, чтобы граница появлялась только внизу элемента:

div {
  border-bottom: 6px solid #949599;
}

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

div {
  border-bottom-width: 12px;
}

Такое довольно специфичное свойство границы включают в себя ряд разделённых дефисом слов, начинающихся с border, затем идёт выбранная сторона — top, right, bottom или left, а затем width, style или color, в зависимости от желаемого свойства.

Радиус границы

Пока мы рассматриваем границы и их разные свойств, нам нужно изучить свойство border-radius, которое позволяет нам закруглять углы элемента.

Свойство border-radius принимает единицы размера, в том числе проценты и пиксели, которые определяют радиус скругления углов элемента. Единственное значение закругляет все четыре угла элемента в равной степени; два значения закругляют левый верхний/правый нижний и правый верхний/левый нижний углы в таком порядке; четыре значения закругляют левый верхний, правый верхний, правый нижний и левый нижний углы в таком порядке.

При рассмотрении порядка, когда несколько значений применяются к свойству border-radius (заодно к margin и padding), помните, что они идут по часовой стрелке, начиная с левого верхнего угла элемента.

div {
  border-radius: 5px;
}

Демонстрация border-radius

Свойство border-radius также может быть разбито на ряд свойств, которые позволяют нам изменить радиусы отдельных углов элемента. Эти свойства начинается с border, продолжаются с положения угла по вертикали (top или bottom) и горизонтали (left или right) и завершаются radius. Например, для изменения правого верхнего угла <div> может быть использовано свойство border-top-right-radius.

div {
  border-top-right-radius: 5px;
}

Размеры блока

До сих пор блочная модель была аддитивной. Если вы установили для width 400 пикселей, затем добавили 20 пикселей padding и border 10 пикселей на каждой стороне, фактическая полная ширина элемента становится 460 пикселей. Помните, мы должны сложить значения свойств width, padding и border вместе, чтобы получить реальную полную ширину элемента.

Блочная модель, однако, может быть изменена, чтобы вычисления происходили иначе. CSS3 ввёл свойство box-sizing, которое позволяет нам точно менять, как блочная модель работает и как вычисляются размеры элемента. Это свойство принимает три основных значения — content-box, padding-box и border-box, каждое из которых оказывает несколько разное влияние на вычисление размера блока.

content-box

Значение content-box является значением по умолчанию, оставляя блочную модель в качестве аддитивной. Если мы не используем свойство box-sizing, то это будет значением по умолчанию для всех элементов. Размер элемента начинается со свойств width и height, далее к ним добавляются значения свойств padding, border или margin .

div {
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
}

Свойства и значения специфичные для браузера

Что означают все эти дефисы и буквы в свойстве box-sizing?

Когда был представлен CSS3, браузеры постепенно начали поддерживать разные свойства и значения, включая свойство box-sizing, путём добавления вендорных префиксов. Когда части спецификации CSS3 будут завершены и выпущены новые версии браузеров, эти префиксы станут всё менее и менее актуальными. Со временем префиксы вряд ли будут проблемой, однако, они всё ещё обеспечивают поддержку некоторых старых браузеров. Мы можем работать с ними время от времени и, возможно, даже захотим использовать их, если нам нужна поддержка старых браузеров.

Вендорные префиксы можно увидеть для свойств и значений, всё зависит от спецификации CSS. Здесь они показаны для свойства box-sizing. Разработчики браузеров были свободны в выборе, когда использовать префикс, а когда нет. Таким образом, одни свойства и значения требуют префиксы для некоторых браузеров, а другие нет.

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

Для справки, наиболее распространённые префиксы изложены здесь:

  • Mozilla Firefox: -moz-
  • Microsoft Internet Explorer: -ms-
  • Webkit (Google Chrome и Apple Safari): -webkit-
padding-box

Значение padding-box изменяет блочную модель путём включения всех значений свойства padding внутри width и height элемента. При использовании значения padding-box, если у элемент width равно 400 пикселей и padding 20 пикселей вокруг всех сторон, фактическая ширина останется 400 пикселей. При увеличении padding на любое значение, размер содержимого внутри элемента сжимается пропорционально.

Если мы добавим border или margin, эти значения будут добавлены к свойствам width или height для вычисления полного размера блока. Например, если мы добавим border 10 пикселей и padding 20 пикселей вокруг всех сторон элемента, у которого width 400 пикселей, фактическая полная ширина будет 420 пикселей.

div {
  box-sizing: padding-box;
}
border-box

Наконец, значение border-box изменяет блочную модель так, чтобы любые значения свойств border или padding включались внутри width и height элемента. При использовании значения border-box, если для элемента указаны width 400 пикселей, padding 20 пикселей и border 10 пикселей вокруг всех сторон, фактическая ширина останется 400 пикселей.

Если мы добавим margin, эти значения должны учитываться для расчёта полного размера блока. Независимо от того, какое значение свойства box-sizing применяется, любые значения margin не будут добавляться в вычисления полного размера элемента.

div {
  box-sizing: border-box;
}

Рис. 4.03. Различные значения box-sizing позволяют по разному вычислять ширину элемента и блока целиком

Выбор размера блока

Вообще говоря, лучшее значение box-sizing для применения — это border-box. Это значение намного упрощает нам математику. Если мы хотим, чтобы весь элемент был 400 пикселей в ширину, он останется 400 пикселей в ширину, независимо от того, какие значения padding или border мы к нему добавляем.

Кроме того, мы можем легко смешивать значения длины. Скажем, мы хотим, чтобы наш блок занимал 40% в ширину. Добавление padding 20 пикселей и border 10 пикселей для всех сторон элемента не сложно и мы по-прежнему можем гарантировать, что фактическая ширина нашего блока останется 40%, несмотря на использование пикселей в другом месте.

Единственный недостаток свойства box-sizing в том, что как часть спецификации CSS3 она не поддерживается во всех браузерах, особенно не хватает поддержки в старых версиях. К счастью, это становится всё менее и менее актуальным, поскольку выходят новые версии. Скорее всего, мы можем безопасно использовать свойство box-sizing, но если вы заметили какие-то проблемы, стоит посмотреть с каким браузером они связаны.

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

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

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

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

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

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

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

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

На практике

Давайте перепрыгнем обратно к нашему сайту Styles Conference к центральной части страницы и добавим ещё немного содержимого.

  1. Начнём настройку размера нашего блока с версии border-box, которая упростит установку размеров всех наших элементов. В нашем файле main.css, чуть ниже сброса, добавим комментарий, чтобы определить код для создания нашей сетки и макета сайта. Мы положим всё это ниже сброса, чтобы они шли в правильном порядке в каскаде.

    Отсюда мы можем использовать универсальный селектор *, наряду с универсальными псевдоэлементами *:before и *:after для выбора всех мыслимых элементов и изменения box-sizing на border-box. Помните, что мы собираемся включить вендорные префиксы для свойства box-sizing, так как это относительно новое свойство.

    /*
      ========================================
      Сетка
      ========================================
    */
    
    *,
    *:before,
    *:after {
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
  2. Далее мы хотим создать класс, который будет служить контейнером для наших элементов. Мы можем использовать этот класс для различных элементов, чтобы установить общую ширину, выровняв элементы по центру страницы и применить некоторые общие горизонтальные поля.

    Чуть ниже набора универсальных селекторов создадим селектор класса container. В этом селекторе зададим width как 960 пикселей, padding слева и справа по 30 пикселей, margin сверху и снизу как 0, а слева и справа как auto.

    Установка width сообщает браузеру какая ширина элемента с классом container однозначно должна быть. Использование margin слева и справа как auto в сочетании с width позволяет браузеру автоматически выставить равные левые и правые поля для элемента, таким образом, выровняв его по центру на странице. Наконец, padding слева и справа гарантирует, что наше содержимое не занимает непосредственно края элемента и обеспечивает небольшое пространство для содержимого.

    .container {
      margin: 0 auto;
      padding-left: 30px;
      padding-right: 30px;
      width: 960px;
    }
  3. Теперь у нас есть класс container доступный для использования, пойдём вперёд и применим этот класс в HTML к элементам <header> и <footer> на каждой странице, включая файлы index.html, speakers.html, schedule.html, venue.html и register.html.

    <header>...</header>
    
    <footer>...</footer>
  4. Пока мы здесь, давайте расположим по центру остальное содержимое наших страниц. На главной странице (файл index.html) добавим класс container к каждому элементу <section> на странице, по одному на героя нашего раздела (раздел, который представляет нашу конференцию) и одному для раздела тизеров.

    <section>...</section>

    Кроме того, обернём все элементы <h2> на каждой странице элементом <section> с классом container.

    <section>
      <h2>...</h2>
    </section>

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

  5. Теперь, когда всё наше содержимое выровнено по центру, установим некоторое вертикальное пространство между элементами. Для начала разместим 22-пиксельный нижний margin для некоторых заголовков и абзацев. Мы добавим и прокомментируем стили ниже стилей сетки.

    /*
      ========================================
      Типографика
      ========================================
    */
    
    h2, h4, h5, h5, p {
      margin-bottom: 22px;
    }

    Мы намеренно пропустили <h3> и <h6>, так как по дизайну не требуются отступы для элементов <h3> и мы не будем использовать любые элементы <h6> в данный момент.

  6. Давайте также попробуем наши силы в создании границ и некоторых закругленных уголков. Мы начнём с размещения кнопки в верхней части элемента <section> на главной странице, чуть ниже заголовка.

    Ранее мы добавили элемент <a> внутри <section>. Давайте добавим классы btn и btn-alt к этой ссылке.

    <a>...</a>

    Теперь создадим некоторые стили для этих классов в нашем CSS. Ниже нашего набора правил типографики сделаем новый раздел для кнопок.

    Для начала добавим класс btn и применим некоторые общие стили, которые будут для всех кнопок. Мы хотим, чтобы у всех кнопок был border-radius 5 пикселей. Кнопки должны отображаться как inline-block, поэтому мы можем добавить поля со всех четырёх сторон без проблем и уберём все margin.

    /*
      ========================================
      Кнопки
      ========================================
    */
    
    .btn {
      border-radius: 5px;
      display: inline-block;
      margin: 0;
    }

    Мы также хотим включить стили, характерные для этой кнопки, которые делаем с помощью класса btn-alt. Сюда добавим однопиксельную рамку серого цвета, padding 10 пикселей сверху и снизу и padding 30 пикселей слева и справа от кнопки.

    .btn-alt {
      border: 1px solid #dfe2e5;
      padding: 10px 30px;
    }

    Применение двух классов btn и btn-alt к одному элементу <a> позволяет накладывать эти стили, отображая их для одного элемента.

  7. Поскольку мы работаем с главной страницей, давайте также добавим небольшой padding к элементу <section>, содержащий наш элемент <a> с классами btn и btn-alt. Мы сделаем это путём добавления атрибута class со значением hero к элементу <section>, наряду с классом container, так как это будет ведущий раздел нашего сайта.

    <section>
      ...
    </section>

    Далее мы хотим создать новый раздел в файле CSS для стилей главной страницы и как только будем готовы, станем использовать класс hero, чтобы установить padding для всех четырёх сторон элемента <section>.

    /*
      ========================================
      Главная страница
      ========================================
    */
    
    .hero {
      padding: 22px 80px 66px 80px;
    }

Наш сайт начинает складываться воедино, особенно главная страница.

Рис. 4.05. Главная страница Styles Conference постепенно принимает форму после нескольких обновлений

Демонстрация и исходный код

Ниже вы можете просмотреть сайт Styles Conference в его нынешнем состоянии, а также скачать исходный код сайта на данный момент.

Просмотр сайта Styles Conference или Скачать исходный код

Универсальный селектор

На первом этапе данного упражнения мы представили универсальный селектор. В CSS звёздочка (*) это универсальный селектор, который выбирает каждый элемент. Вместо перечисления всех отдельных элементов мы можем использовать звёздочку для выбора всех элементов.

Псевдоэлементы :before и :after также упомянутые на этом этапе — это элементы, которые могут динамически генерироваться через CSS. Мы не станем применять эти элементы в нашем проекте, однако, при упоминании универсального селектора также хорошим тоном будет включить эти псевдоэлементы на случай, если они когда-нибудь появятся.

Резюме

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

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

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

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

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

Ресурсы и ссылки

Автор и редакторы

Автор: Шэй Хоу

Последнее изменение: 11.08.2018

Редакторы: Влад Мержевич

Введение в CSS — Изучение веб-разработки

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

Перед запуском этого модуля вы должны иметь:

  1. Базовое знакомство с использованием компьютеров и пассивным использованием Интернета (то есть, просматривая его, потребляя контент).
  2. Базовая рабочая среда, описанная в разделе Установка базового программного обеспечения, и понимание того, как создавать файлы и управлять ими, подробно описано в разделе Работа с файлами.
  3. Основное знакомство с HTML, как описано в модуле Введение в HTML.

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

Этот модуль содержит следующие статьи, в которых вы ознакомитесь со всеми основными теориями CSS и сможете проверить некоторые навыки.

Что такое CSS?
CSS (Каскадные таблицы стилей) позволяет создавать великолепно выглядящие веб-страницы, но как же это работает? Эта статья объясняет, что такое CSS с помощью простого примера синтаксиса, а также охватывает некоторые ключевые термины о языке.
Начало работы с CSS
В этой статье мы возьмём простой HTML-документ и применим к нему CSS, изучая некоторые практические вещи о языке.
Как структурирован CSS
Теперь, когда у вас есть представление о том, что такое CSS и как его использовать, пришло время немного углубиться в структуру самого языка. Мы уже встречали множество концепций, обсуждаемых здесь; вы можете вернуться к этому, чтобы повторить, если вы находите какие-либо более поздние концепции запутанными.
Как работает CSS
Мы изучили основы CSS — для чего он нужен и как писать простые таблицы стилей. В этом уроке мы рассмотрим, как браузер берёт CSS и HTML и превращает их в веб-страницу.
Использование ваших новых знаний
С учётом того, что вы узнали за последние несколько уроков, вы должны обнаружить, что вы можете форматировать простые текстовые документы с использованием CSS, чтобы добавить к ним свой собственный стиль. Эта статья даёт вам шанс сделать это.
Intermediate Web Literacy 1: Intro to CSS
Отличный базовый курс от Mozilla, в котором рассматриваются и тестируются многие навыки, о которых говорилось в модуле Введение в CSS. Узнайте о стилях элементов HTML на веб-странице, селекторах CSS, атрибутах и значениях.

CSS Псевдо-классы. Уроки для начинающих. W3Schools на русском


Что такое Псевдо-классы?

Псевдо-класс используется для определения особого состояния элемента.

Например, его можно использовать для:

  • Стилизации элемента, когда пользователь наводит на него курсор
  • Стилизации посещённых и непосещённых ссылок по-разному
  • Стилизации элемента, когда он находится в фокусе

Синтаксис

Синтаксис псевдо-классов:

selector:pseudo-class {
  property:value;
}


Якорные псевдо-классы

Ссылки могут отображаться по-разному:

Пример

/* непосещенная ссылка */
a:link {
  color: #FF0000;
}

/* посещенная ссылка */
a:visited {
  color: #00FF00;
}

/* курсор над ссылкой */
a:hover {
  color: #FF00FF;
}

/* выбранная (активная) ссылка */
a:active {
  color: #0000FF;
}

Попробуйте сами »

Примечание: a:hover ДОЛЖЕН прийти после a:link и a:visited в определении CSS для того, чтобы быть эффективным! a:active ДОЛЖЕН прийти после a:hover в определении CSS, чтобы быть эффективным! Имена псевдо-классов не чувствительны к регистру.


Псевдо-классы и CSS-классы

Псевдо-классы можно комбинировать с CSS-классами:

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


Наведение курсора на <div>

Пример использования псевдо-класса :hover на элементе <div>:


Простая всплывающая подсказка

Наведите указатель мыши на элемент <div> чтобы отобразить элемент <p> (например, всплывающую подсказку):

Наведите указатель мыши на меня, чтобы отобразить элемент <p>.

Опачки! А вот и я!


CSS — Псевдо-класс :first-child

Псевдо-класс :first-child соответствует заданному элементу, который является первым дочерним элементом другого элемента.

Соответствует первому элементу <p>

В следующем примере селектор соответствует любому элементу <p>, который является первым дочерним элементом любого элемента:


Соответствует первому элементу <i> во всех элементах <p>

В следующем примере селектор соответствует первому элементу <i> во всех элементах <p>:


Сопоставить все элементы <i> во всех первых дочерних элементах <p>

В следующем примере селектор сопоставляет все элементы <i> в элементах <p>, которые являются первыми дочерними элементами другого элемента:


CSS — Псевдо-класс :lang

Псевдо-класс :lang позволяет определять специальные правила для разных языков.

В приведенном ниже примере :lang определяет кавычки для элементов <q> с lang="no":

Пример




q:lang(no) {
  quotes: «~» «~»;
}

<p>Какой-то текст <q lang=»no»>Цитата в параграфе</q> Какой-то текст.</p>

</body>
</html>

Попробуйте сами »

Больше примеров

Добавить разные стили к гиперссылкам
Этот пример демонстрирует, как добавить другие стили к гиперссылкам.

Использование :focus
Этот пример демонстрирует, как использовать псевдо-класс :focus.


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


Все CSS Псевдо-классы

СелекторПримерОписание
:activea:activeВыбирает активную ссылку
:checkedinput:checkedВыбирает каждый проверенный элемент <input>
:disabledinput:disabledВыбирает каждый отключенный элемент <input>
:emptyp:emptyВыбирает каждый элемент <p>, который не имеет дочерних элементов
:enabledinput:enabledВыбирает каждый включенный элемент <input>
:first-childp:first-childВыбирает все элементы <p>, которые являются первым потомком своего родителя
:first-of-typep:first-of-typeВыбирает каждый элемент <p> который является первым элементом <p> своего родителя
:focusinput:focusВыбирает элемент <input> который имеет фокус
:hovera:hoverВыбирает ссылки при наведении мыши
:in-rangeinput:in-rangeВыбирает элементы <input> со значением в указанном диапазоне
:invalidinput:invalidВыбирает все элементы <input> с недопустимым значением
:lang(language)p:lang(it)Выбирает каждый элемент <p> со значением атрибута lang, начинающимся с "it"
:last-childp:last-childВыбирает все элементы <p>, которые являются последним дочерним элементом своего родителя
:last-of-typep:last-of-typeВыбирает каждый элемент <p>, который является последним элементом <p> своего родителя
:linka:linkВыбирает все не посещенные ссылки
:not(selector):not(p)Выбирает каждый элемент, который не является элементом <p>
:nth-child(n)p:nth-child(2)Выбирает каждый элемент <p>, который является вторым дочерним элементом своего родителя
:nth-last-child(n)p:nth-last-child(2)Выбирает каждый элемент <p>, который является вторым дочерним элементом своего родителя, считая от последнего дочернего элемента
:nth-last-of-type(n)p:nth-last-of-type(2)Выбирает каждый элемент <p>, который является вторым элементом <p> своего родителя, считая от последнего потомка
:nth-of-type(n)p:nth-of-type(2)Выбирает каждый элемент <p> который является вторым элементом <p> своего родителя
:only-of-typep:only-of-typeВыбирает каждый элемент <p> который является единственным элементом <p> своего родителя
:only-childp:only-childВыбирает каждый элемент <p> который является единственным потомком своего родителя
:optionalinput:optionalВыбирает элементы <input> без атрибута "required"
:out-of-rangeinput:out-of-rangeВыбирает элементы <input> со значением вне указанного диапазона
:read-onlyinput:read-onlyВыбирает элементы <input> с указанным атрибутом "readonly"
:read-writeinput:read-writeВыбирает элементы <input> без атрибута "readonly"
:requiredinput:requiredВыбирает элементы <input> с указанным атрибутом "required"
:rootrootВыбирает корневой элемент документа
:target#news:targetВыбирает текущий активный элемент #news (при нажатии на URL, содержащий это имя якоря)
:validinput:validВыбирает все элементы <input> с допустимым значением
:visiteda:visitedВыбирает все посещенные ссылки

Все CSS Псевдо-элементы

СелекторПримерОписание
::afterp::afterВставляет контент после каждого элемента <p>
::beforep::beforeВставляет контент перед каждым элементом <p>
::first-letterp::first-letterВыбирает первую букву каждого элемента <p>
::first-linep::first-lineВыбирает первую строку каждого элемента <p>
::selectionp::selectionВыбирает часть элемента, которая выбрана пользователем

css tutorials for beginners — ComputerMaker.info

Author admin To read 6 minutes.

HTML CSS Tutorial

Practice

Advanced course

Practice

Adaptive

Advanced stuff

Practice

In order to make a website, you need to know many different web languages.

Languages HTML и CSS designed for site layout (layout is the placement of site elements in the right places). Language PHP is needed for programming the site (with its help, you can, for example, register users). Language JavaScript is needed in order to ‘revive’ the site: for example, to make changing pictures (slider).

HTML language

Language HTML — this is the basis of web sites, with its help the skeleton of the page that you see in the browser is created.

If we compare a page of a site and a regular paper book, then the site, like a book, has paragraphs and headings. The book contains the title of the entire book (in fact, the most important title), there are titles of chapters, paragraphs in these chapters, and so on.

Headings, paragraphs and other blocks can also be highlighted on the site page. This is done with HTML tags.

What are HTML tags?

HTML tags Are special commands for the browser. They tell him what, for example, should be considered a page title, and what a paragraph.

Tags are built according to this principle: corner, then the name of the tag, and then the corner>, like this:. The tag name can be composed of English letters and numbers. Examples of tags:

Tags are usually written in pairs — the opening tag and the corresponding closing tag. The difference between opening and closing tags is that there is a slash / in the closing tag after the corner.

— this is how I opened the p tag, and so —

— I closed it. Anything between the opening and closing tags is affected by our tag.

There are tags that do not need to be closed, for example,
or .

Attributes

Tags can also contain attributes — special commands that extend the action of the tag.

Attributes are placed inside the opening tag in the following format:.

Quotation marks can be any — single or double, it is permissible not to put them at all if the attribute value consists of one word (but this is not desirable).

CSS language

Language CSS extends the capabilities of the HTML language. It allows you to change colors, fonts, background, in general, make the beauty of the site. And HTML, respectively, is responsible for the structure of the site.

So let’s get started

So, armed with some preliminary theoretical knowledge, let’s start a detailed study of the HTML language in practice.

CSS3 Tutorials | # 1 — creating styles on the site

Video tutorial

CSS is the language that is responsible for the design, change the look of the page. It allows you to style every HTML and XHTML element. Nothing prevents you from applying styles to various XML files, such as XUL, SVG.

A clean HTML document will still look unfinished if not styled. Cascading Style Sheets (full name from CSS) help define the view in which all HTML tags will be displayed on the user’s screen.

CSS style Is a specific rule that tells the web browser the formatting rules for each element. By formatting we mean: changing the color of text, element background, font, shadows, position on the screen, etc.

To create a working CSS style, there are 2 main parts that need to be correctly specified:

  • Selector — indicates the target element to which the style is assigned;
  • Styles block — tells the browser the necessary formatting rules.

Example:

In this example, the selector is a div, which means that all the styles in the block below will be applied to every div element on the page.

Styles are always indicated in curly braces. They should be strictly in parentheses, not outside them. In this example, the output will be a div block with a red background, 100 pixels wide and 60 pixels high.

All commands have a property, followed by a value. Illustration based on the same example:

The property sets a specific style. There are a lot of similar properties, in our case — this is the background color… The value is always indicated after the colon. For example, the background-color property is set to RED… This repaints the background color to red.

There is always a semicolon at the end of a command. This symbol is the divider that separates the commands.

The list of different styles is commonly referred to as a style sheet or CSS. There are several different methods for specifying styles.

Html attributes and css styles

Most HTML elements support styling through attributes. For example, it is possible for individual elements to specify the width and height attributes (width with height). Attributes are specified directly in the HTML file. You need to be careful with them.

On the one hand Is a convenient way to specify styles for a specific block (values ​​in attributes have the highest priority), all other tags that match common selectors will be styled from the CSS file.

On the other hand — this spoils the HTML code, it ceases to be clean. In the case of editing, it is inconvenient to find and change styles for different files, unnecessary confusion appears.

Validity check

CSS During the creation of styles, it is often unclear about the correctness of their specification and correctness. In this case, the CSS validator, available via the link, comes to the rescue.

In today’s world, sometimes having your own website is just as important as having a phone number or email address. Unfortunately, not everyone can make a beautiful professional website on their own, and sometimes even a curve does not work out. Ordering from programmers is also not an ideal solution, since not everyone can afford it.

Free HTML website templates will help you get out of this situation. HTML site template is a set of ready-made static pages for a site of a certain subject. Using such a template, you can create a simple website in just a couple of hours, if you have a basic knowledge of HTML markup. In the HTML section, you will get this knowledge if you spend a couple more hours studying, and if you don’t regret your time on the CSS section, you will be able to fully control the design of HTML site templates and customize them completely to suit your needs.

Another indisputable advantage of website templates is that they are usually written by professionals. A professional website template means not only a beautiful and modern design, but also the way the code is written. Search engines look at how your website is written, whether the code is SEO optimized or not, on the basis of this, they lower or increase your positions in the search results. Therefore, a good site should not only be beautiful and modern, which is important, but also correctly written in terms of code.

Download free HTML website templates and create your projects in no time.

CSS — Уроки

Войти