HTML page. Block
Блокова модель
box-sizing: content-box | border-box | inherit
В інструментах розробника, на вкладці Computed
- modern-normalize (підключено тут)
- Геометрія: верх (top), право (right), низ (bottom) і ліво (left)
padding: 10px 15px 20px 25px;
margin-bottom: 20px
border: 5px solid tomato;
border-radius: 10px;
- Дізнатися тип будь-якого елемента можна в довіднику
display: block
- Горизонтальне центрування блокових елементів
margin-right: auto; margin-left: auto;
- or margin: 0 auto;
- Рядкові елементи display: inline Їх ширина і висота залежать тільки від вмісту, явно задати їх не можна. Тобто властивості width і height не мають жодного ефекту. Тобто вони ігнорують значення верхніх і нижніх margin, padding і border Зате left right працюють
- Картинкам надати примусово display: block;
- inline-block/ a href="" class="link"/ display: inline-block;/ можна задати вертикальні поля та іншу геометрію.
- Ховаємо елементи display: none / не можна анімувати / .is-active (js)
Псевдокласи
- Псевдокласи
:first-child і :last-child
/ Псевдоклас :last-child вибирає останній елемент в колекції сусідів. /.list-item {margin-bottom: 12px;} / .list-item:last-child {margin-bottom: 0; }
- Аналогічно працює :first-child, застосовуючи стилі до першого елемента в колекції сусідів.
.list-item:not(:last-child) {}
- Псевдоклас
:nth-child(an+b)
- Наприклад, якщо a = 2, а b = 1, то an+b = 2n+1. Ця формула вибере всі непарні елементи.
- N-й елемент
.list-item:nth-child(5) {}
- Парні і непарні елементи
.list-item:nth-child(2n) {}
- Від N-го елемента
.list-item:nth-child(n + 6) {}
- Кожен N-й елемент
.list-item:nth-child(3n + 1) {}
- Псевдоклас
:nth-last-child(an+b)
відлік ведеться з кінця колекції .list-item:nth-last-child(3) - До N-го елемента
.list-item:nth-last-child(-n + 3)
Flexbox
Властивості контейнера flex
- Game Flexbox froggy
- Game Flexbox Playground
display: flex | inline-flex
flex-direction: row | row-reverse | column | column-reverse;
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly
-
justify-content: flex-start
justify-content: flex-end
justify-content: center
justify-content: space-between
align-items: stretch | flex-start | flex-end | center | baseline
flex-wrap: nowrap | wrap | wrap-reverse
- wrap - дозволяє елементам перестрибувати на інші рядки, які за замовчуванням розташовуються зверху вниз (вздовж поперечної осі).
- Сітка елементів
-
-
Lorem ipsum dolor
Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro atque excepturi facilis molestias eius earum at officia.
-
Lorem ipsum dolor
Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro atque excepturi facilis molestias eius earum at officia.
-
Lorem ipsum dolor
Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro atque excepturi facilis molestias eius earum at officia.
-
Lorem ipsum dolor
Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro atque excepturi facilis molestias eius earum at officia.
-
Lorem ipsum dolor
Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro atque excepturi facilis molestias eius earum at officia.
-
Lorem ipsum dolor
Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro atque excepturi facilis molestias eius earum at officia.
-
- Set the width of the elements:
flex-basis: calc((100% - 20px) / 3);
- Властивість flex-basis - це заміна width для flex-елементі
gap. row-gap та column-gap
align-content: flex-start | flex-end | center | space-between | space-around | space-evenly | stretch
Flex Приклад 1
- Hello 1
- Hello 2
- Hello 3
- Hello 4
- Hello 5
- Hello 6
- Hello 7
- Hello 8
- Hello 9
display: flex; justify-content: space-around; align-items: center;
Flex Приклад 2
- flex-wrap
- wrap
- gap
- row-gap
- column-gap
- flex-basis
- calc
- Hello 8
- Hello 9
display: flex; flex-wrap: wrap; gap: 10px;
Flexbox
Властивості flex елемента - дітей контейнера
-
Властивість flex-basis: auto | значення
Визначає початковий розмір елемента перед розподілом вільного простору. Значенням може бути будь-яка валідна величина: пікселі, відсотки, rem тощо. Для flex-елементів - це заміна властивості width, але з деякими особливостями. У прикладах цього уроку для всіх flex-елементів задавався саме flex-basis, а не width
Якщо вказані обидві властивості, flex-basis і width, то властивість width ігнорується Властивості
min-width і max-width
працюють як обмежувачі розміру елемента, навіть якщо у нього вказаний flex-basis, а не width Властивість flex-basis може визначати висоту, а не ширину елемента. Це відбувається у разі, якщо головна вісь - вертикальна. -
Властивість
flex-grow: частка
За замовчуванню у всіх елементів flex-grow = 0
якщо у всіх елементів встановлено однакове значення цієї властивості, то вони займуть однакову кількість місця в контейнері. А ось, якщо всім задати значення 1, а одному елементу 2, то він спробує зайняти в два рази більше місця, ніж будь-який інший елемент.
-
Гумовий контент SideBar
Приклад
Main content Гумовий - flex-grow: 1;
-
Footer завжди внизу
Приклад
Тут контент.
Якщо контенту менше ніж може бути, контейнер не стягується. Він завжди рознянутий на весь екран. Nostrum reiciendis suscipit, culpa nam rem, libero delectus similique amet architecto qui deleniti expedita odio accusamus sint ratione nesciunt magni!flex-grow: 1;
-
Властивість flex-shrink
Визначає здатність елемента, у разі потреби, займати менше місця (стискатися), ніж його початковий розмір. Значення задається як пропорція (частка). За замовчуванням у всіх елементів встановлено значення 1, тобто елементи будуть стискатися у разі потреби. Від'ємні значення задавати не можна. Використовується досить рідко
-
Властивість align-self
align-self: auto | flex-start | flex-end | center | baseline | stretch
Дозволяє елементу змінити своє положення на поперечній осі, перевизначивши для себе значення властивості align-items від контейнера. Аналогу для головної осі не існує, елемент може змістити себе тільки на поперечній осі.
-
Властивість order
За замовчуванням елементи розташовуються у тому порядку, в якому вони вказані в HTML-файлі. Використовуючи властивість order можна візуально змінити порядок розташування елементів вздовж головної осі. При цьому, в HTML-коді нічого не зміниться.