Шпаргалка по CSS
30 марта 2018
Андрей Курпас
Это статья-шпаргалка с примерами по CSS. Здесь для удобства я собрал некоторые часто используемые свойства. Статья будет пополняться по мере необходимости.
Таблица html-цветов и ещё цвета. Конвертер цветов из одной цветовой модели в другую. А также сочетаемость цветов.
Оглавление
Раздел
// универсальное свойство для фона
// background: [background-attachment || background-color || background-image || background-position || background-repeat]
// значения можно указывать в произвольном порядке, ни одно из них не является обязательным
background: url(images/pic.png) repeat-y #fff; // путь к фоновому изображению, повторение фона по вертикали, цвет фона
background: inherit; // наследует значение родителя
// цвет фона
background-color: #fff; // цвет фона
background-color: transparent; // прозрачный цвет фона
// картинка для фона
background-image: url(images/pic.png); // путь к фоновому изображению элемента
background-image: url(images/pic1.png), url(images/pic2.png); // 2 фоновых изображения для элемента
background-image: none; // отменяет фоновое изображение у элемента
// позиция фона; значения по горизонтали: left, center, right; значения по вертикали: top, center, bottom;
background-position: top left; // фоновое изображение в левом верхнем углу контейнера (top left = left top = 0% 0%)
background-position: top center; // фоновое изображение по центру вверху контейнера (top = top center = center top = 50% 0%)
// повторение фонового рисунка
background-repeat: no-repeat; // не повторять
background-repeat: repeat; // повторять по горизонтали и вертикали
background-repeat: repeat-x; // повторить только по горизонтали
background-repeat: repeat-y; // повторить только по вертикали
background-repeat: space; // повторять столько раз, чтобы полностью заполнить контейнер, если это не удаётся, между картинками добавляется пустое пространство
background-repeat: round; // повторять так, чтобы в контейнере поместилось целое число рисунков, если это не удаётся, то фоновые рисунки масштабируются
// масштабирование фонового изображения
background-size: cover; // сохраняет пропорций фона так, чтобы его ширина или высота равнялась ширине или высоте блока
background-size: contain; // сохраняет пропорций фона так, чтобы картинка целиком поместилась внутрь блока
background-size: auto 100%; // ширина вычисляется по пропорции; высота 100% высоты контейнера
background-size: 100% auto; // высота вычисляется по пропорции; ширина 100% ширины контейнера
// режим прокрутки фонового изображения вместе с содержимым элемента
background-attachment: fixed; // при прокрутке фоновое изображение элемента неподвижно
background-attachment: scroll; // при прокрутке фон перемещается вместе с содержимым
background-attachment: fixed, scroll; // одно фоновое изображение фиксированное, второе перемещается
background-attachment: local; // фон фиксируется с учётом поведения элемента, если элемент имеет прокрутку, то фон будет прокручиваться вместе с содержимым, при этом фон выходящий за рамки элемента остаётся на месте
// режим показа фона под границей контейнера
background-clip: padding-box; // фон отображается внутри границ
background-clip: border-box; // фон выводится под границами
background-clip: content-box; // фон отображается только внутри контента
background-clip: padding-box, border-box; // для первого фона отображение внутри границ, для второго фона отображение под границами
h1[class=ttt] {}
input[name=rrr] {}
#menu > span {} // задаст стиль для всех span - непосредственных детей menu
.mdiv {position:absolute; left:0; raght:0;}
// бывает, что на смартфонах какой-нибудь неустановленный элемент страницы создаёт отступ справа для всей страницы, хотя визуально ничего не вылазит, следующий код устранит горизонтальную полосу прокрутки и отступ справа для html и body
html, body {width:100%; margin:0; overflow-x:hidden;}
img {display: block; max-width: 100%;}
// у родительского элемента: направление справа налево
#scroll {direction:rtl; overflow:auto; height:50px; width:50px;}
// у дочернего элемента: направление слева направо
#scroll div {direction:ltr;}
.adapt {display: block; overflow-x: auto; white-space: nowrap;} /* присваивается таблице или контейнеру широкого блока для адаптации под смартфоны */
#mydiv {position: relative; width:500px;} /* присваивается вложенному блоку, ему необходимо задать ширину, таблице ширину задавать не нужно */
HTML-код:
<input class="chk chk1" id="a1" type="checkbox"><label for="a1"></label>
<input class="chk chk2" id="b1" type="checkbox"><label class="labl" for="b1">бег</label>
CSS-код:
/* для элемента input c type="checkbox" */
.chk {
position: absolute;
z-index: -1;
opacity: 0;
z-index: 100;
}
/* для элемента label, связанного с .chk */
.chk+label {
display: inline-flex;
align-items: center;
user-select: none;
}
/* создание в label псевдоэлемента before со следующими стилями */
.chk+label::before {
content: '';
display: inline-block;
width: 13px;
height: 13px;
flex-shrink: 0;
flex-grow: 0;
border: 1px solid #adb5bd;
border-radius: 0.25em;
margin-right: 0.5em;
background-repeat: no-repeat;
background-position: center center;
background-size: 50% 50%;
}
/* стили при наведении курсора на checkbox */
.chk:not(:disabled):not(:checked)+label:hover::before {
border-color: #b3d7ff;
}
/* стили для активного чекбокса (при нажатии на него) */
.chk:not(:disabled):active+label::before {
background-color: #b3d7ff;
border-color: #b3d7ff;
}
/* стили для чекбокса, находящегося в фокусе */
.chk:focus+label::before {
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
/* стили для чекбокса, находящегося в фокусе и не находящегося в состоянии checked */
.chk:focus:not(:checked)+label::before {
border-color: #80bdff;
}
/* стили для чекбокса, находящегося в состоянии checked */
.chk:checked+label::before {
border-color: #0b76ef;
background-color: #0b76ef;
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e");
}
.chk1:not(:checked)+label::before {background-color: #fff1b2;}
.chk2:not(:checked)+label::before {background-color: #cfcfcf;}
.aaa > span:first-child {} // первый элемент
.aaa > span:last-child {} // последний элемент
.aaa > span:nth-child(1) {} // первый элемент
.aaa > span:nth-child(3) {} // третий элемент
.aaa > span:nth-child(2n) {} // все чётные элементы
.aaa > span:nth-child(2n+1) {} // все нечётные элементы
.aaa > span:nth-child(-n+5) {} // элементы 1,2,3,4,5
#tstat tbody tr td:not(:nth-child(1)) {} // для всех td в строке tr, кроме первого
#menu span:not(#logo) {} // для всех span внутри menu кроме того, у которого id="logo"
#menu > span:not(#logo, #logo2) {} // для всех span - непосредственных детей menu кроме тех, у которых id="logo" или id="logo2"
ol:not([class]) li {} // для всех li, которые принадлежат любым ol, кроме тех, что имеют атрибут class
.layout {display: flex; flex-direction: row;}
.sidebar {padding: 5px; width:100px; background-color:#464a62;}
.content {padding: 10px;}
<div class="layout">
<div class="sidebar"></div>
<div class="content"></div>
</div>
all: initial /* */
all: inherit; /* сбросить все свойства элемента к их первоначальному или унаследованному значению */
all: unset; /* */
div {margin: unset; padding: unset;} /* */
div {all: unset;} /* */
* {all: unset;} /* */
color: #000 !important; /* директива !important применит указанный цвет, даже если он снова будет изменен ниже */
display: block; /* отобразить элемент как блочный */
display: inline; /* отобразить элемент как строчный */
display: inline-block; /* отобразить элемент как блочный внутри, строчный снаружи (ширина блока при этом устанавливается по содержимому) */
display: list-item; /* отобразить элемент как блочный с добавлением к нему маркера списка */
display: none; /* элемент невидим, занимаемое им место освобождается */
visibility
overflow
text-overflow
position: relative; /* */
position: absolute; /* */
position: fixed; /* */
position: static; /* */
// значение position у элемента д. б. задано как absolute, fixed или relative
left: 4px; /* расстояние от левого края родительского элемента */
top: 4px; /* расстояние от верхнего края родительского элемента */
right: 4px; /* расстояние от правого края родительского элемента */
bottom: 4px; /* расстояние от нижнего края родительского элемента */
margin: 0 auto; // для блочного элемента
Свойство нужно применять к inline-элементу, находящемуся внутри block-элемента
vertical-align: baseline; /* */
vertical-align: bottom; /* */
vertical-align: middle; /* */
vertical-align: top; /* */
vertical-align: 10px | 80%; /* */
vertical-align: sub; /* */
vertical-align: super; /* */
vertical-align: text-bottom; /* */
vertical-align: text-top; /* */
<div id="cont">
<div class="itm"><span>A</span>aaa</div>
<div class="itm"><span>B</span>bbb</div>
<div class="itm"><span>C</span>ccc</div>
</div>
#cont {
display: flex; // элемент flex-контейнер
flex-direction: column; // дочерние блоки располагаются столбцом, то есть один под другим
}
.itm {
display: flex; // элемент flex-контейнер - дочерний тоже может быть flex-контейнером
flex-basis: 100%; // ширина блока 100% от родительского
align-items: baseline; // элементы внутри вертикально выравниваются по базовой линии
}
#el {display: flex; flex-direction: row; gap: 5px; position: fixed; top: 0px; background: #fff; width: 600px;}
// размеры элемента при этом могут быть не заданы
.outer {position:relative;} // контейнер родитель
.inner1 {position:fixed; top:50%; transform:translateY(-50%); background:#d5d5d5;} // отцентрирует элемент только по вертикали с учётом 50% высоты элемента
.inner2 {position:fixed; top:30%; left: 50%; transform: translateX(-50%); background:#d5d5d5;} // отцентрирует элемент по горизонтали с учётом 50% ширины элемента и сдвинет на 30% от верха по вертикали
// значение position у элемента обязательно д. б. задано как absolute, fixed или relative
z-index: 100; /* элемент с большим числом, будет показан выше других */
z-index: auto; /* наложение происходит в порядке объявления элементов в документе */
width: 150px; /* ширина */
width: auto; /* ширина задана автоматически */
height: 150px; /* высота */
height: auto; /* высота задана автоматически */
max-height
max-width
min-height
min-width
border: 1px solid #aaa; /* сплошная граница вокруг элемента шириной 1px цветом #aaa */
solid | dashed | dotted | double | groove | ridge | inset | outset; /* задание вида границы */
border-top: 1px solid #aaa; /* верхняя граница элемента */
border-bottom: 1px solid #aaa; /* нижняя граница элемента */
border-left: 1px solid #aaa; /* левая граница элемента */
border-right: 1px solid #aaa; /* правая граница элемента */
border: none; /* граница не отображается */
border-radius: 10px; // закруглить все уголки элемента на 10px
border-radius: 7px 4px 5px 0; // закруглить уголки элемента: левый верхний - 7px, правый верхний - 4px, правый нижний - 5px, левый нижний - 0px
outline
zoom
transform
opacity: 0.5; // сделает элемент полупрозрачным
opacity: 0; // сделает элемент невидимым, полностью прозрачным
opacity: 1; // сделает элемент полностью не прозрачным
float: left | right | none
Определяет, по какой стороне будет выравниваться элемент, при этом остальные элементы будут обтекать его с других сторон. Когда значение свойства float равно none, элемент выводится на странице как обычно, при этом допускается, что одна строка обтекающего текста может быть на той же линии, что и сам элемент.
clear: none | left | right | both
Устанавливает, с какой стороны элемента запрещено его обтекание другими элементами. Если задано обтекание элемента с помощью свойства float, то clear отменяет его действие для указанных сторон
Работает для строчных элементов типа display:inline; или display:inline-block;
// Чтобы текст чекбокса не вставал под него, а всегда был справа, сколько бы текста ни было.
HTML:
<label><input type="checkbox"/><span>Длиннный многострочный текст</span></label>
CSS:
label {display: flex; flex-direction: row; align-items: flex-start;}
label input, label span {display:inline-block;}
li {list-style-type: none;} /* убрать маркеры для элемента списка*/
ul {margin-left: 0; padding-left: 0;} /* убрать отступы слева для списка */
list-style-type: circle | disc | square | decimal; /* кружок, точка, квадрат, число - изменить вид маркера для элемента списка */
list-style
<сдвиг вправо> <сдвиг вниз> <радиус размытия> <цвет> /* формат для задания тени, обязательными параметрами являются только сдвиг вправо и сдвиг вниз */
text-shadow: 1px 1px 2px black; /* пример задания тени */
text-shadow: 1px 1px 2px black, 0 0 1em red; /* задание двух теней, первая тень в списке размещается наверху для CSS3 */
text-shadow: none; /* отмена добавления тени */
inset <сдвиг вправо> <сдвиг вниз> <радиус размытия> <растяжение> <цвет> /* формат для задания тени, обязательными параметрами являются только сдвиг вправо и сдвиг вниз */
box-shadow: 0 0 10px red; /* красная тень без сдвигов с радиусом 10px */
box-shadow: 0 0 10px red, 0 0 10px #555; /* задание двух теней, первая тень в списке размещается наверху */
box-shadow: 0 0 10px 0 rgba(0,0,0,0.5); /* тень с прозрачностью */
box-shadow: inset 0 0 10px red; /* тень внутри блока */
box-shadow: none; /* отмена добавления тени */
color: #000; /* установить цвет шрифта элемента */
background-color: #fff; /* установить цвет фона элемента */
#000 | #a41b5c | rgb(255,0,0) | hsl(0,100%,50%); /* числовые способы задать цвет */
white | silver | gray | black | maroon | red | orange | yellow | olive | lime | green | aqua | blue | navy | teal | fuchsia | purple; /* способы задать цвет словом */
rgba(255,255,255,0.9) | hsla(120,100%,50%,0.1) | #548eaaa0; /* числовые способы задать цвет с прозрачностью */
.pic {
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: grayscale(100%);
filter: gray; /* IE 6-9 */
}
.pic:hover {
-webkit-filter: none;
-moz-filter: none;
-ms-filter: none;
-o-filter: none;
filter: none;
/* анимация плавного перехода */
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
-o-transition: all 0.5s;
transition: all 0.5s;
}
div:hover { }
cursor:pointer; /* курсор мыши ручка */
cursor: auto; /* курсор мыши по умолчанию для элемента */
cursor: default; /* курсор мыши стрелка */
cursor: help; /* курсор мыши стрелка с вопросом */
user-select: none; /* запретить выделение текста пользователем */
// не даст пользователю изменять размеры textarea (исчезнет уголок в правом нижнем углу, за который можно тянуть)
textarea {resize: none;}
// ° - нестираемый значок градуса в поле
<div class="cls"><span>°</span><input id="lab_sh" type="number" step="1" min="0" max="90" value="0" /></div>
.cls {display: inline-block; position: relative;}
.cls span {position: absolute; right: 23px; top: 50%; transform: translateY(-50%);}
.cls input {width:50px;}
.mydiv::before {content: "@%";} // вставит символы @% перед элементом
.mydiv::before {content: " 0a0";} // вставит символ пробела перед элементом
.mydiv::before {content: none;} // удалит ранее установленный контент перед элементом
.mydiv::after {content: "@%";} // вставит символы @% после элемента
Отступы
margin: 0; /* со всех сторон сразу */
margin: 3px 5px; /* сверху-снизу и справа-слева */
margin: 3px 5px 10px 15px; /* верх-право-низ-лево */
margin-top: 3px; /* */
margin-bottom: 3px; /* */
margin-left: 3px; /* */
margin-right: 3px; /* */
padding: 2px; /* со всех сторон сразу */
padding: 2px 4px; /* сверху-снизу и справа-слева */
padding: 2px 4px 2px 4px; /* верх-право-низ-лево */
padding-top: 3px; /* */
padding-bottom: 3px; /* */
padding-left: 3px; /* */
padding-right: 3px; /* */
Шрифт и текст
font-family: Arial, Tahoma; /* установить семейство шрифта для элемента */
font-size: 10pt | 12px | 2em | 80%; /* установить размер шрифта для элемента */
text-transform: uppercase; /* все символы текста становятся прописными (верхний регистр) */
text-transform: lowercase; /* все символы текста становятся строчными (нижний регистр) */
text-transform: capitalize; /* первый символ каждого слова в предложении будет заглавным */
text-transform: none; /* не меняет регистр символов */
font-variant: normal; /* оставляет регистр символов заданным по умолчанию */
font-variant: small-caps; /* все строчные символы становятся заглавными уменьшенного размера, при этом заглавная отображается как обычно */
Устанавливает узкое, нормальное или широкое начертание шрифта, что позволяет уплотнять или расширять текст
font-stretch: inherit | ultra-condensed | extra-condensed | condensed | semi-condensed | normal | semi-expanded | expanded | extra-expanded | ultra-expanded
font-weight: bold; /* */
font-weight: normal; /* */
font-weight: 300; /* */
font-style: italic; /* */
font-style: normal; /* */
font-style: oblique; /* */
text-decoration: none; /* текст без декораций */
text-decoration: line-through; /* зачёркнутый */
text-decoration: overline; /* надчёркнутый */
text-decoration: underline; /* подчёркнутый */
letter-spacing
white-space: normal; // перенос строк происходит как обычно при появлении пробела между словами
white-space: nowrap; // не даст переносить текст на новую строку, при этом тег <br> внутри сработает как обычно
text-indent
quotes
word-break
word-wrap
word-spacing
line-height: 1.4 | 12px | 80% | normal; /* установить интервал между строками текста */
// задаётся у родителя для строковых элементов внутри него
text-align: center;
text-align: justify; /* выравнивает и с правого и с левого края сразу */
text-align: left;
text-align: right;
columns: [column-width] [column-count] - порядок параметров значения не имеет
column-width: 200px; // ширина колонок
column-count: 2; // 2 колонки
columns: 3 auto; // 3 колонки, ширина автоматическая
column-fill: balance; // будет заполнять колонки сбалансированно (так по умолчанию)
column-fill: auto; // будет заполнять сперва первую колонку, потом вторую и так далее
column-gap: 3px;
// если родителю задано например columns: 2; то дочерним элементам нужно задать следующее:
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid;
calc()
// поддерживают все современные браузеры
body {
--mycolor: #000000; // объявить переменную (будет видна только в блоке body и во всех его дочерних блоках)
color: var(--mycolor); // использовать переменную
}
:root {
--mycolor: #000000; // объявить переменную (будет видна везде)
}
a.comment-link1:after {
content: '\A';
white-space: pre;}
// CSS-код
:root {--highlight-color: #6c6c6c;}
.arrow {position: absolute; bottom: 0; left: 150px; width: 30px; height: 70px;}
.arrow2 {position: absolute; bottom: 0; left: 250px; width: 30px; height: 70px;}
.arbd {width: 100%; height: 95%; margin-left: 11px; border-style: dashed; border-color: var(--highlight-color);}
.arbd_l {border-width: 2px 0 0 2px; border-top-left-radius: 100%;}
.arbd_r {border-width: 2px 2px 0 0px; border-top-right-radius: 100%;}
.arbd::after {content: ''; position: absolute; bottom: 0; border-width: 10px 7px 0; border-style: solid; border-color: var(--highlight-color) transparent transparent;}
.arbd_l::after {left: 5px;}
.arbd_r::after {right: -18px;}
// HTML-код (1 стрелка: сверху справа - вниз; 2 стрелка: сверху слева - вниз)
<div class="arrow"><div class="arbd arbd_l"></div></div>
<div class="arrow2"><div class="arbd arbd_r"></div></div>
Эффекты
// HTML-код
<figure class="imgef">
<img src="bac.jpg">
</figure>
// CSS-код
.imgef {margin: 0; padding: 0; background: transparent; overflow: hidden; position: relative;}
.imgef::before {position: absolute; top: 0; left: -75%; z-index: 2; display: block; content: ''; width: 50%; height: 100%; background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.3) 100%); background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.3) 100%); -webkit-transform: skewX(-25deg); transform: skewX(-25deg);}
.imgef:hover::before {-webkit-animation: shine 1.5s; animation: shine 1.5s;}
@keyframes shine {100% {left: 125%;}}
Поделиться статьей: