Начало работы
Введение
CSS обладает богатыми возможностями и представляет собой нечто большее, чем просто компоновка страниц.
Внешняя таблица стилей
``html {.wrap}
Внутренняя таблица стилей
``html
#### Инлайн-стили
``html {.wrap}
<h2 style="text-align: center;">Выравнивание текста по центру</h2>
<p style="color: blue; font-size: 18px;">Синий, 18-пунктовый текст</p>
Добавить класс
``html
!important
``css .post-title { color: blue !important; }
Отменяет все предыдущие правила стилизации.
### Селектор
``css
h1 { }
#job-title { }
div.hero { }
div > p { }
См: Selectors
Цвет текста
``css color: #2a2aff; цвет: зеленый; color: rgb(34, 12, 64, 0.6); color: hsla(30 100% 50% / 0.6);
См: [Цвета](#css-colors)
### Фон
``css
background-color: blue;
background-image: url("nyan-cat.gif");
background-image: url("../image.png");
См: Фоны
Шрифт
``css .page-title { font-weight: bold; font-size: 30px; font-family: “Courier New”; }
См: [Шрифты](#css-fonts)
### Положение
``css
.box {
position: relative;
top: 20px;
left: 20px;
}
См. также: Position
Анимация
``css
анимация: 300 мс линейная 0 с бесконечная;
анимация: bounce 300ms linear infinite;
См: [Анимация](#css-animation)
### Комментарий
``css
/* Это однострочный комментарий */
/* Это
многострочный комментарий */
Flex-макет
``css div { display: flex; justify-content: center; } div { display: flex; justify-content: flex-start; }
См: [Flexbox](#css-flexbox) | [Flex Tricks](#css-flexbox-tricks)
### Разметка сетки
``css
#container {
display: grid;
grid: repeat(2, 60px) / auto-flow 80px;
}
#container > div {
background-color: #8ca0ff;
ширина: 50px;
height: 50px;
}
См: Grid Layout
Переменные и счетчики
``css счетчик-установка: подраздел; счетчик-инкремент: подраздел; счетчик-сброс: подраздел 0;
:root { –bg-color: brown; } element { background-color: var(–bg-color); }
См: [Динамический контент](#css-dynamic-content)
Селекторы CSS
-----------
### Примеры {.row-span-2}
#### Селектор групп
``css
h1, h2 {
цвет: красный;
}
Селектор цепочки
``css h3.section-heading { цвет: синий; }
#### Селектор атрибутов
``css
div[attribute="SomeValue"] {
background-color: red;
}
Селектор первого ребенка
``css p:first-child { font-weight: bold; }
#### Селектор отсутствия детей
``css
.box:empty {
фон: lime;
высота: 80px;
width: 80px;
}
Основной
* |
Все элементы |
div |
Все теги div |
.classname |
|
#idname |
Элемент с идентификатором |
div,p |
Все div и параграфы |
#idname * |
Все элементы внутри #idname |
См. также: Тип / Класс / ID / Универсальный селекторы |
Комбинаторы
Селектор | Описание |
---|---|
div.classname |
Div с определенным именем класса |
div#idname |
Div с определенным ID |
div p |
Абзацы внутри div’ов |
div > p |
Все теги pна один уровень в глубину div |
div + p |
P-теги сразу после div |
div ~ p |
P-теги, которым предшествует div |
См. также: Смежные / Родные / Детские селекторы |
Селекторы атрибутов
a[target] |
|
a[target="_blank"] |
|
a[href^="/index"] |
|
`[class | =“chair”]` |
[class*="chair"] |
|
[title~="chair"] |
|
a[href$=".doc"] |
Заканчивается на .doc |
[type="button"] |
Указанный тип |
См. также: Селекторы атрибутов
Псевдоклассы действий пользователя
a:link |
Ссылка в нормальном состоянии |
a:active |
|
a:hover |
|
a:visited |
Псевдоклассы
p::after |
Добавить содержимое после p |
p::before |
Добавить содержимое перед p |
p::first-letter |
Первая буква в p |
p::first-line |
Первая строка в p |
::selection |
Выбранная пользователем |
::placeholder |
Атрибут Placeholder |
:root |
Корневой элемент документа |
:target |
|
div:empty |
|
p:lang(en) |
|
:not(span) |
Элемент, не являющийся span |
Входные псевдоклассы
input:checked |
Проверенные входы |
input:disabled |
Отключенные входы |
input:enabled |
Включенные входы |
input:focus |
Вход имеет фокус |
input:in-range |
Значение в диапазоне |
input:out-of-range |
Значение входа вне диапазона |
input:valid |
Ввод с действительным значением |
input:invalid |
Ввод с недопустимым значением |
input:optional |
Нет обязательного атрибута |
input:required |
Ввод с обязательным атрибутом |
input:read-only |
С атрибутом readonly |
input:read-write |
Без атрибута readonly |
input:indeterminate |
С состоянием indeterminate |
Структурные псевдоклассы
p:first-child |
Первый ребенок |
p:last-child |
Последний ребенок |
p:first-of-type |
Первый из некоторого типа |
p:last-of-type |
|
p:nth-child(2) |
|
p:nth-child(3n42) |
|
p:nth-last-child(2) |
Второй ребенок сзади |
p:nth-of-type(2) |
Второй p своего родителя |
p:nth-last-of-type(2) |
…сзади |
p:only-of-type |
|
p:only-child |
Единственный ребенок своего родителя |
Шрифты CSS
Свойства
Свойство | Описание |
---|---|
font-family: |
<font> |
font-size: |
<size> |
letter-spacing: |
<size> |
line-height: |
<number> |
| font-weight:
| <number> / bold / normal |
| font-style:
| <номер> / курсив / нормальный |
| text-decoration:
| underline / none |
| text-align:
| left / rightcenter / justify |
| text-transform:
| capitalize / uppercase / lowercase |
{.left-text}
См. также: Font
Сокращение
style | weight | size (required) | line-height | family | ||
---|---|---|---|---|---|---|
font: |
italic |
400 |
14px |
/ |
1.5 |
sans-serif |
style | weight | size (required) | line-height |
Пример
``css font-family: Arial, sans-serif; font-size: 12pt; letter-spacing: 0.02em;
### Case {.row-span-2}
``css
/* Hello */
text-transform: capitalize;
/* HELLO */
text-transform: uppercase;
/* привет */
text-transform: lowercase;
@font-face
``css @font-face { font-family: ‘Glegoo’; src: url(’../Glegoo.woff’); }
Цвета CSS
------------
### Именованный цвет
``css
цвет: красный;
цвет: оранжевый;
цвет: tan;
цвет: rebeccapurple;
Шестнадцатеричный цвет
``css color: #090; цвет: #009900; color: #090a; цвет: #009900aa;
### rgb() Цвета
``css
color: rgb(34, 12, 64, 0.6);
color: rgba(34, 12, 64, 0.6);
color: rgb(34 12 64 / 0.6);
color: rgba(34 12 64 / 0.3);
color: rgb(34.0 12 64 / 60%);
color: rgba(34.6 12 64 / 30%);
Цвета HSL
color: hsl(30, 100%, 50%, 0.6);
color: hsla(30, 100%, 50%, 0.6);
color: hsl(30 100% 50% / 0.6);
color: hsla(30 100% 50% / 0.6);
color: hsl(30.0 100% 50% / 60%);
color: hsla(30.2 100% 50% / 60%);
Другое
цвет: наследуется;
цвет: начальный;
color: unset;
цвет: прозрачный;
color: currentcolor; /* ключевое слово */
Фоны CSS
Свойства
Свойство | Описание |
---|---|
background: |
(Shorthand) |
| background-color:
| См: Цвета|
| background-image:
| url(…) |
| background-position:
| left/center/righttop/center/bottom |
| background-size:
| cover X Y |
| background-clip:
| border-boxpadding-boxcontent-box |
| background-repeat:
| no-repeatrepeat-xrepeat-y |
| | background-attachment:
| scroll/fixed/local |
{.left-text}
Сокращение
color | image | positionX | positionY | size | repeat | attachment | ||
---|---|---|---|---|---|---|---|---|
background: |
#ff0 |
url(a.jpg) |
left |
top |
/ |
100px auto |
no-repeat |
fixed; |
background: |
#abc |
url(b.png) |
center |
center |
/ |
cover |
repeat-x |
local; |
color | image | posX | posY | size | repeat | attach… |
Примеры
``css {.wrap} background: url(img_man.jpg) no-repeat center;
background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;
background: rgb(2,0,36); background: linear-gradient(90deg, rgba(2,0,36,1) 0%, rgba(13,232,230,1) 35%, rgba(0,212,255,1) 100%);
CSS Модель коробки
------------
### Максимумы/минимумы
``css
.column {
max-width: 200px;
ширина: 500px;
}
См. также: max-width / min-width / max-height / min-height
Margin / Padding
``css .block-one { margin: 20px; padding: 10px; }
См. также: [Margin](https://developer.mozilla.org/en-US/docs/Web/CSS/margin) / [Padding](https://developer.mozilla.org/en-US/docs/Web/CSS/padding)
### Размер ящика
``css
.container {
box-sizing: border-box;
}
См. также: Box-sizing
Видимость
``css .invisible-elements { видимость: скрытый; }
См. также: [Видимость](https://developer.mozilla.org/en-US/docs/Web/CSS/visibility)
### Ключевое слово Auto
``css
div {
margin: auto;
}
См. также: Margin
Переполнение
``css .small-block { overflow: scroll; }
См. также: [Переполнение](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow)
CSS-анимация {.cols-5}
---------
### Короткое обозначение {.col-span-5 .secondary}
| | name | duration | timing-function | delay | count | direction | fill-mode | play-state |
|--------------|----------|----------|-----------------|---------|------------|---------------------|-----------|------------|
| `анимация:` | `bounce` | `300ms` | `linear` | `100ms` | `infinite` | `alternate-reverse` | `both` | `reverse` |
| | name | duration | timing-function | delay | count | direction | fill-mode | play-state |
### Свойства {.row-span-2 .col-span-2}
| Свойство | Значение |
|------------------------------|--------------------------------------------------------|
| `анимация:` | _(сокращение)_ |
| `animation-name:` | \<name> |
| `animation-duration:` | \<time>ms |
| `animation-timing-function:` | ease / linear / ease-in / ease-out / ease-in-out |
| ``animation-delay:`` | \<time>ms |
| ``animation-iteration-count:`` | infinite / \<number> |
| ``направление анимации`` | нормальное / обратное / альтернативное / альтернативно-обратное |
| ``animation-fill-mode:`` | none / forward / backwards / both / initial / inherit |
| ``animation-play-state:`` | normal / reverse / alternate / alternate-reverse |
{.left-text}
См. также: [Анимация](https://developer.mozilla.org/en-US/docs/Web/CSS/animation)
### Пример {.col-span-3}
``css
/* @keyframes duration | timing-function | delay |
iteration-count | direction | fill-mode | play-state | name */
анимация: 3s ease-in 1s 2 reverse both paused slidein;
/* @keyframes duration | timing-function | delay | name */
анимация: 3s linear 1s slidein;
/* @keyframes duration | name */
анимация: 3s slidein;
анимация: 4s linear 0s infinite alternate move_eye;
анимация: bounce 300ms linear 0s infinite normal;
анимация: bounce 300ms linear infinite;
анимация: bounce 300ms linear infinite alternate-reverse;
анимация: bounce 300ms linear 2s infinite alternate-reverse forwards normal;
Javascript Event
``js .one(‘webkitAnimationEnd oanimationend msAnimationEnd animationend’)
CSS Flexbox {.cols-2}
-------
### Простой пример
``css
.container {
display: flex;
}
``css .container > div { flex: 1 1 auto; }
### Контейнер {.row-span-2}
.container {
``css
display: flex;
display: inline-flex;
flex-direction: row; /* ltr - по умолчанию */
flex-direction: row-reverse; /* rtl */
flex-direction: column; /* top-bottom */
flex-direction: column-reverse; /* bottom-top */
``css flex-wrap: nowrap; /* однострочный / flex-wrap: wrap; / многострочный */
```css
align-items: flex-start; /* вертикальный выравнивание по верху */
align-items: flex-end; /* вертикальный выравнивание по низу */
align-items: center; /* вертикальный выравнивание по центру */
align-items: stretch; /* одинаковая высота для всех (по умолчанию) */
justify-content: flex-start; /* [xxx ] */
justify-content: center; /* [ xxx ] */
justify-content: flex-end; /* [ xxx] */
justify-content: space-between; /* [x x x] */
justify-content: space-around; /* [ x x x ] */
justify-content: space-evenly; /* [ x x x ] */
}
Child
.container > div {
``css /* Это: */ flex: 1 0 auto;
/* Эквивалентно этому: */ flex-grow: 1; flex-shrink: 0; flex-basis: auto;
``css
order: 1;
``css align-self: flex-start; /* left / margin-left: auto; / right */
}
Приемы CSS Flexbox
--------------
### Вертикальный центр
``css
.container {
display: flex;
}
.container > div {
width: 100px;
высота: 100px;
margin: auto;
}
Вертикальный центр (2)
``css .container { display: flex;
/* вертикальный */ align-items: center;
/* горизонтальный */ justify-content: center; }
### Переупорядочивание
``css
.container > .top {
порядок: 1;
}
.container > .bottom {
порядок: 2;
}
Мобильная верстка
.container {
display: flex;
flex-direction: column;
}
.container > .top {
flex: 0 0 100px;
}
.container > .content {
flex: 1 0 auto;
}
Верхний бар фиксированной высоты и область содержимого динамической высоты.
Таблицеподобный
``css
.container { display: flex; }
/* значения ‘px’ здесь - это просто предлагаемые проценты */ .container > .checkbox { flex: 1 0 20px; } .container > .subject { flex: 1 0 400px; } .container > .date { flex: 1 0 120px; }
Таким образом, создаются колонки, имеющие разную ширину, но размеры которых зависят от обстоятельств.
в зависимости от обстоятельств.
### Вертикальный
``css
.container {
align-items: center;
}
Вертикально центрирует все элементы.
Левый и правый
``css .menu > .left { align-self: flex-start; } .menu > .right { align-self: flex-end; }
CSS Grid Layout
------------
### Колонки шаблона сетки
``css
#grid-container {
display: grid;
ширина: 100px;
grid-template-columns: 20px 20% 60%;
}
fr Относительная единица измерения
``css .grid { display: grid; width: 100px; grid-template-columns: 1fr 60px 1fr; }
### Зазор между сетками
```css
/* Расстояние между строками составляет 20px*/
/*Расстояние между столбцами 10px*/
#grid-container {
display: grid;
grid-gap: 20px 10px;
}
CSS Сетка уровней блоков
``css #grid-container { display: block; }
### CSS grid-row
Синтаксис CSS:
- grid-row: grid-row-start / grid-row-end;
#### Пример
``css
.item {
grid-row: 1 / span 2;
}
CSS Inline Level Grid
``css #grid-container { display: inline-grid; }
### minmax() Функция
```css {.wrap}
.grid {
display: grid;
grid-template-columns: 100px minmax(100px, 500px) 100px;
}
grid-row-start & grid-row-end
Синтаксис CSS:
- grid-row-start: auto|row-line;
- grid-row-end: auto|row-line|span n;
Пример
``css grid-row-start: 2; grid-row-end: span 2;
### CSS grid-row-gap
``css
grid-row-gap: length;
Любое законное значение длины, например px или %. По умолчанию используется значение 0
CSS grid-area
``css .item1 { grid-area: 2 / 1 / span 2 / span 3; }
### Обоснование элементов
```css
#container {
display: grid;
justify-items: center;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-gap: 10px;
}
CSS grid-template-areas
``css .item { grid-area: nav; } .grid-container { display: grid; grid-template-areas: ’nav nav . .’ ’nav nav . .’; }
### Обосновать себя
```css
#grid-container {
display: grid;
justify-items: start;
}
.grid-items {
justify-self: end;
}
Элементы сетки позиционируются справа (в конце) от строки.
Выравнивание элементов
``css #container { display: grid; align-items: start; grid-template-columns: 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; }
Динамическое содержимое CSS
------------
### Переменная
Определение переменной CSS
``css
:root {
--first-color: #16f;
--second-color: #ff7;
}
Использование переменных ``css #firstParagraph { background-color: var(–first-color); color: var(–second-color); }
См. также: [CSS Variable](https://developer.mozilla.org/en-US/docs/Web/CSS/--*)
### Счетчик
``css
/* Установить значение "my-counter" равным 0 */
counter-set: my-counter;
/* Увеличение "my-counter" на 1 */
counter-increment: my-counter;
/* Уменьшение "my-counter" на 1 */
counter-increment: my-counter -1;
/* Сбросить значение "my-counter" в 0 */
counter-reset: my-counter;
См. также: Counter set
Использование счетчиков
``css body { counter-reset: section; }
h3::before { counter-increment: section; content: “Раздел.”, counter(section); }
``css
ol {
counter-reset: section;
list-marker-type: none;
}
li::before {
счетчик-инкремент: section;
content: counters(section, ".") " ";
}
Хитрости Css 3
Сглаживание полосы прокрутки
``css html { scroll-behavior: smooth; }
[Нажмите на меня](#css-getting-started), страница будет плавно прокручиваться до раздела Getting started
См. также {.cols-1}
---------
- [CSS selectors cheatsheet](https://frontend30.com/css-selectors-cheatsheet/) _(frontend30.com)_
- [MDN: Using CSS flexbox](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Flexible_boxes)
- [Ultimate flexbox cheatsheet](http://www.sketchingwithcss.com/samplechapter/cheatsheet.html)
- [GRID: простая визуальная шпаргалка](http://grid.malven.co/)
- [CSS Tricks: A Complete Guide to Grid](https://css-tricks.com/snippets/css/complete-guide-grid/)
- [Поддержка браузеров](https://caniuse.com/#feat=css-grid)