HTML+CSS Fundamentals

HTML Fundamentals

ПОТОК ДОКУМЕНТА

Поток документа (flow) - порядок отображения элементов на странице.

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

БЛОЧНЫЕ ЭЛЕМЕНТЫ

  • Блочные (block) элементы расположены один под другим
     
  • Такие элементы имеют ширину, высоту, отступы
     

  • Блоки занимают всю ширину родительского элемента. Например, если задать им фон, то фон будет виден по всей ширине родительского элемента
     

  • Так как блочный элемент занимает всю ширину, его внутренние элементы могут быть выровнены горизонтально, т.е. к левому, правому краю, посередине и по всей ширине

БЛОЧНЫЕ ЭЛЕМЕНТЫ

  • Блочный элемент может быть внутри другого блочного элемента
     
  • Свойства строчных элементов не предназначены для блочных элементов, например, вертикальное выравнивание (vertical-align)

СТРОЧНЫЕ ЭЛЕМЕНТЫ

  • В строчные (inline) элементы допускается вставлять текст и другие строчные элементы
     
  • В строчные элементы запрещено вставлять блочные
     

  • Высота строчных элементов не контролируется свойством height
     

  • Ширина пропорциональна ширине контента

СТРОЧНЫЕ ЭЛЕМЕНТЫ

  • Строчные элементы расположены друг за другом в строке, могут переноситься на следующую строку при необходимости
  • Строчным элементам можно задать вертикальное выравнивание

СТРОЧНО-БЛОЧНЫЕ ЭЛЕМЕНТЫ

  • В строчно-блочных (inline-block) элементах возможно размещать текст или блочные элементы
     

  • Высота элемента рассчитывается автоматически браузером на основе контента
     

  • Ширина равна ширине контента с учетом отступов и границ

СТРОЧНО-БЛОЧНЫЕ ЭЛЕМЕНТЫ

  • Inline-block элементы расположены в одной строке и переносятся на следующую при необходимости

  • Могут быть выровнены по вертикали

  • Допускается установка ширины и высоты

СПЕЦСИМВОЛЫ

HTML интерпретирует символы <, >, &, " и др. как специальные. При необходимости их использования они заменяются на, соответственно, &lt;, &gt;, &amp;, &quot;.

КАСКАД

КАСКАД

  • CSS являются каскадными таблицами стилей. Это показывает, как стили применяются к элементам документа.

  • CSS-каскад называется так, потому что объявления стилей "каскадируются" на элементы из многих источников.

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

НВ CSS действует наследование. Но не все свойства могут наследоваться. Например, свойство text-size передается потомкам, а padding - нет.

СЕЛЕКТОРЫ

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

СЕЛЕКТОР ПО ТЕГУ

Классы определяют группу тегов.

СЕЛЕКТОР ПО КЛАССУ

Для выбора уникального элемента используются ID. На странице не должно быть более одного элемента с одинаковыми ID.

СЕЛЕКТОР ПО ID

Универсальный селектор *. Этот селектор позволяет выбрать абсолютно все элементы страницы.

УНИВЕРСАЛЬНЫЙ СЕЛЕКТОР

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

СЕЛЕКТОР ПОТОМКОВ

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

CHILD-СЕЛЕКТОР

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

SIBLING-КОМБИНАТОР

Этот комбинатор аналогичен General Sibling Combinator, но позволяет выбрать только смежные элементы.

Adjacent Sibling Комбинатор

Данный селектор позволяет выбрать элементы с определенными атрибутами. Объявляется в квадратных скобках 

СЕЛЕКТОР ПО АТРИБУТУ

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

ПСЕВДО-КЛАСС

Используется формула (an + b). Описание:

a - размер цикла,

n - счетчик (начинается с 0),

и b - шаг цикла.

Также в CSS можно определять псевдо-элементы с помощью ::

ПСЕВДО-ЭЛЕМЕНТ

СПЕЦИФИЧНОСТЬ CSS

Браузер руководствуется специфичностью селекторов при выборе свойств CSS, которые наиболее релевантны для элемента и будут к нему применены.

  1. Инлайновые стили
  2. ID (# или ID селектора)
  3. Классы, атрибуты, псевдо-классы
  4. Элементы и псевдоэлементы, включая :before и :after.

ВЕС СТИЛЕЙ

При использовании !important в объявлении свойства, оно перекрывает любое другое объявление.

 

Использование !important считается плохой практикой, его стоит избегать, т.к. оно затрудняет дебаггинг из-за нарушения естественного каскадирования ваших стилей.

!important 

  • Универсальный селектор * обладает нулевым весом
     

  • Псевдо-элементы имеют вес (0, 0, 0, 1) в отличие от псевдо-классов (0, 0, 1, 0)
     

  • Псевдо-класс :not() не добавляет специфичности селектору
     

  • Значение !important может перекрыться только другим !important, определенным в CSS позже. Можно считать, что его вес составляет 1, 0, 0, 0, 0

ВАЖНЫЕ ЗАМЕЧАНИЯ

CSS Layout

СВОЙСТВО: DISPLAY

inline

Основные значения свойства display:

block

inline-block

HTML-теги: <span>, <a>, <input> ...

HTML-теги: <div>, <p>, <h1> ...

HTML-теги: <button>, <select> ...

СВОЙСТВО: FLOAT

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

http://htmlbook.ru/css/float

CLEARING FLOATS

Чтобы запретить обтекание элемента с какой-либо стороны следует использовать cвойство clear. В этом случае блок будет под элементом. Основные значения: both, right, left.

 

Пример использования: 

CLEARING FLOATS

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

Overflow:hidden для контейнера может помочь в таком случае

FLOATS LAYOUT

FLEX

Text

  • Верстка флексами более эффективна. Она позволяет выравнивать элементы и распределять пространство между ними в контейнере, даже когда их размер не известен и/или может изменяться (flex = гибкий).
  • Свойство flex определяет, как элемент может расширяться или сжиматься в своем флекс-контейнере. Это свойство объединяет свойства flex-grow, flex-shrink иflex-basis.

  • CSS-columns не работают с флекс-боксами, как и float, clear и vertical-align.

  • Для выравнивания по вертикали используются align-content (для родителя) и align-items (для потомков)

АНАЛОГИЧНЫЙ ПРИМЕР С FLEX

FLEX-ДЕМО

СВОЙСТВО: POSITION

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

 

static

absolute

relative

fixed

sticky

isn't fully supported http://caniuse.com/#feat=css-sticky

GRID

CSS Grid Layout - это двумерная система, которая может обрабатывать как колонки так и строки.

Двумя основными компонентами CSS Grid являются контейнер сетки и дочерние элементы (прямые потомки).

ЗАДАНИЯ

  1. Зайти на сайт http://flukeout.github.io/, пройти все уровни
  2. Создать html документсо следующими полями (используя типы input - email, url):

http://htmlbook.ru/samcss Самоучитель CSS

http://css.yoksel.ru/css-selectors Css-селекторы, часть 1

http://css.yoksel.ru/css-selectors-part2 Css-селекторы, часть 2

http://css.yoksel.ru/specifity/ Сколько весят селекторы?

http://css.yoksel.ru/pages/css-selectors.html Таблица селекторов

http://htmlbook.ru/css/cat/pseudoclass Псевдоклассы

http://htmlbook.ru/css/cat/pseudoelement Псевдоэлементы

 https://css-tricks.com/specifics-on-css-specificity Specifics on CSS Specificity

http://habrahabr.ru/post/137588 Взвешиваем селекторы CSS

http://cssspecificity.com CSS Specifity

https://events.yandex.ru/lib/talks/560 CSS: Селекторы, псевдоклассы. Специфичность и наследование

http://webhitech.ru/articles/selectors-performance-part-1 Селекторы и производительность

ИЗУЧИТЬ

HTML+CSS fundamentals

By aneelia

HTML+CSS fundamentals

  • 532