HyperText Markup Language — язык гипертекстовой разметки. задаёт структуру содержимого и его смысл
CSS (Cascading Style Sheets "каскадные таблицы стилей") - это набор правил, описывающих способы отображения и расположения элемента.
HTML описывает контент, а таблицы стилей определяют, как документ выглядит.
Семантика в HTML является практикой предоставления смысла и структуры содержимого на странице с помощью соответствующего элемента.
семантический HTML код — это верстка с правильным использованием HTML тегов, использованием их по назначению, так как их задумывали разработчики языка HTML и веб стандартов
скрыть блок содержимого на странице
<!-- Хорошо -->
<div hidden>...</div><!-- Со значением -->
<a href="twitter-logo.png" download="Logo">Twitter Logo</a>download говорит браузеру незамедлительно скачать файл
<a href="legal.html" rel="copyright">Правила использования</a>
<a href="toc.html" rel="contents">Содержание</a>rel определяет отношение между текущим документом и документом, на который ведёт ссылка.
Некоторые популярные значения атрибута rel включают в себя:
Микроданные — это расширение HTML с вложенными группами пар имя-значение, которые позволяют машинам, в том числе браузерам и поисковым системам, собирать дополнительную семантику и информацию для структурированного содержимого
Определяются с помощью трёх основных атрибутов — itemscope, itemtype и itemprop.
itemscope объявляет область каждого элемента микроданных. Добавьте этот атрибут к родительскому элементу, в котором должна находиться вся информация микроданных
После этого, добавьте атрибут itemtype, чтобы указать, какой словарь микроданных следует использовать.
далее мб установлены свойства. Эти свойства включают атрибут itemprop. Значение этого атрибута определяет, на что указывает свойство, а содержимое внутри самого элемента обычно задаёт значение свойства.
<section itemscope itemtype="http://schema.org/Person">
<h1 itemprop="name">Шэй Хоу</h1>
</section>Расширение веб-страниц дополнительной семантикой с помощью пар имя-значение из пользовательских словарей
<section itemscope itemtype="http://schema.org/Event">
<a itemprop="url" href="#">
<span itemprop="name">Styles Conference</span>
</a>
<time itemprop="startDate" datetime="2014-08-24T09:00">Воскресенье, 24 августа 2014 в 9:00</time>
<div itemprop="location" itemscope itemtype="http://schema.org/Place">
<a itemprop="url" href="http://www.thechicagotheatre.com/">Chicago Theatre</a>
<address itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<div itemprop="streetAddress">175 N. State St.</div>
<span itemprop="addressLocality">Chicago</span>,
<abbr itemprop="addressRegion" title="Illinois">IL</abbr>
<span itemprop="postalCode">60601</span>
</address>
</div>
</section>WAI-ARIA является спецификацией, которая помогает сделать веб-страницы и приложения более доступными для людей с ограниченными возможностями. В частности, WAI-ARIA помогает определить роли (что блоки содержимого делают), состояния (как блоки содержимого настроены), а также дополнительные свойства для поддержки вспомогательных технологий.
Роли WAI-ARIA делятся на четыре различные категории: абстрактные, виджеты, структура документа и ориентиры. Роль структуры документа определяет организационную структуру содержимого на странице,ориентиры определяют регионы страницы.
main - main form -form search- search form
В сочетании с ролями WAI-ARIA существуют также состояния и свойства, которые помогают информировать вспомогательные технологии, как настроено содержимое. Подобно ролям, состояния и свойства разбиты на четыре категории, в том числе атрибуты виджета, атрибуты живого региона, атрибуты drag-and-drop и атрибуты отношений.
Атрибуты виджета поддерживают роли виджетов и являются специфическими для пользовательского интерфейса и там, где от пользователя требуются действия. Атрибуты живого региона могут быть применены к любому элементу и используются для обозначения изменений содержимого для вспомогательных технологий, к примеру, на странице предупреждений и уведомлений. Атрибуты drag-and-drop информируют об элементах drag-and-drop и обеспечивают альтернативное поведение для вспомогательных технологий. И, наконец, атрибуты отношений описывают отношения между элементами, когда структура документа не может быть определена.
aria-label позволяет задать дополнительную текстовую метку, которая будет пояснять назначение данного блока
особенности применения элемента и смысловые связи, которые образует с остальными элементами, расписаны в спецификации, остаётся только научиться использовать эту информацию
Подобное использование HTML-элементов по их назначению, получило название POSH (Plain Old Semantic HTML) — проще говоря, «старый добрый семантический HTML»
создание смысловых связей между семантическими единицами в документе
микроформат - способ семантической разметки сведений о разнообразных сущностях (событиях, организациях, людях, товарах и так далее) на веб-страницах с использованием стандартных элементов языка HTML (или XHTML). Пользователь-человек может воспринимать страницу с микроформатом как обычную веб-страницу (через браузер), тогда как программы-обработчики способны извлечь из такой страницы структурированную информацию, следуя определённым соглашениям
Поисковые системы постоянно совершенствуют методы поиска, чтобы в результатах была та информация, которую действительно ищет пользователь. Семантический HTML способствует этому, т.к. поддается гораздо лучшему анализу — код чище, код логичен (четко видно где заголовки, где навигация, где содержимое).
Эти элементы отображаются как прямоугольники, идущие друг за другом сверху вниз.
Такой элемент занимает всю доступную ширину, высота элемента определяется его содержимым, и он всегда начинается с новой строки.
Это такие элементы документа, которые являются непосредственной частью строки.
Эти элементы располагаются друг за другом в одной строке, если не помещаются, то переносится на другую строку.
начинаются с новой строки, накладываются друг на друга и занимают всю доступную ширину. Блочные элементы могут быть вложены друг в друга и обёртывать строчные элементы.
Строчные элементы не начинаются с новой строки. Они попадают в обычный поток документа, выстраиваются друг за другом, а их ширина основана на их содержимом. Строчные элементы могут быть вложены друг в друга, однако, они не могут обёртывать блочные элементы.
Поток - порядок отображения элементов на странице.
Слой, размещенный в самом верху кода, отобразится раньше слоя, который расположен в коде ниже. Такая логика позволяет легко прогнозировать результат вывода элементов и управлять им.
Атрибуты нумерованных списков:
<ol start="30" (reversed)>
<li>Пройдите по Абрикосовой улице</li>
<li value="9">Сверните на Виноградную</li>
<li>Остановитесь на Тенистой улице</li>
</ol>
<dl>
<dd>Посвящение времени и внимания для получения знаний по преподаваемому предмету, особенно с помощью книг.</dd>
<dt>проект</dt>
<dd>Представленный план или чертёж</dd>
<dd>Существующие цели, планы или намерения</dd>
<dt>бизнес</dt>
<dt>работа</dt>
<dd>Регулярные занятия человека, профессия или ремесло.</dd>
</dl>list-style: [list-style-type] [list-style-position] [list-style-image];
ol{
counter-reset: myCounter;
}
li{
list-style: none;
}
li:before {
counter-increment: myCounter;
content:counter(myCounter);
color: white;
background: #2980B9;
display: inline-block;
text-align: center;
margin: 5px 10px;
line-height: 40px;
width: 40px;
height: 40px;
}<table>
<caption>Книги по дизайну и фронтенд-разработке</caption>// название таблицы
<thead>// шапка
<tr>
<th scope="col">Название</th>// заголовки для столбоцов, мб row
<th scope="col">Наличие</th>
<th scope="col">Кол-во</th>
<th scope="col">Цена</th>
</tr>
</thead>
<tbody>
<tr>
<td>Не заставляйте меня думать Стив Круг</td>
<td>На складе</td>
<td>1</td>
<td>$30.02</td>
</tr>
<tr>
<td>UX-дизайн</td>
<td>На складе</td>
<td>2</td>
<td>$52.94 ($26.47 × 2)</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3">Итого</td>// colspan одной ячейки
из нескольких столбцов в таблице,rowspan - для строк
<td>$148.90</td>
</tr>
</tfoot>
</table>border-collapse определяет модель границы в таблице.
separate все разные границы складываются друг с другом(2+2=4)
collapse сжимает границы в одну, выбирая ячейку таблицы в качестве основной.
border-spacing задаёт, какое расстояние отображается между этими границами( только для separate)
border-spacing: 5px 10px ( горизонтальное, вертикальное)
Форма — это набор полей для ввода текста, командные кнопки, флажки и т.п., содержимое которых возвращается серверу по указанию пользователя. Сервер в дальнейшем обрабатывает информацию и, если необходимо, возвращает пользователю ответы.
Форма предназначена для обмена данными между пользователем и сервером. Документ может содержать любое количество форм, но одновременно на сервер может быть отправлена только одна форма.
<form
method – определяет метод отправки данных на сервер ( get: получения требуемой информации и передачи данных в адресной строке, post: посылает на сервер данные в запросе браузера)
action – адрес обработчика формы(URL куда отправляется)
name – имя формы (если несколько форм на странице) >
<legend></legend> - заголовок группы элементов формы
<fieldset></fieldset> - для группирования элементов формы
<label for="#id"></label> - устанавливает связь между текстом и элементом
<input type="" name=""/> - флажки, переключатели, поле с паролем и т.д.
<button name"">text</button> - кнопки
<textarea name="">Text</textarea> - поля ввода
<select name="day" multiple>
<option value="friday"></option>
</select>
</form>
<input type="radio" name="day" value="Friday" checked> Пятница
<input type="radio" name="day" value="Saturday"> Суббота
<input type="radio" name="day" value="Sunday"> Воскресенье
<input type="checkbox" name="day" value="Friday" checked> Пятница
<input type="checkbox" name="day" value="Saturday"> Суббота
<input type="checkbox" name="day" value="Sunday"> Воскресенье
<input type="submit" name="submit" value="Отправить">Используется, чтобы изменять значение переключателей и флажков при нажатии курсором мыши на текст.
Существует два способа связывания объекта и метки:
1. Первый заключается в использовании идентификатора id внутри элемента формы и указании его имени в качестве атрибута for тега <label>.
2. При втором способе элемент формы помещается внутрь контейнера <label>.
<body>
<input id="идентификатор"><label for="идентификатор">Текст</label> <!-- 1й способ-->
<label><input type="..."> Текст </label> <!-- 2й способ-->
</body>Теги логической разметки отвечают за значение элемента больше, чем за внешний вид. Некоторые из них не влияют на отображение текста браузером, другие выполняют действия, аналогичные тегам физического форматирования. Разные браузеры толкуют одни и те же теги логических стилей по-разному. Теги являются парными.
<abbr> и <acronym title=“расшифровка аббревиатуры”> - аббревиатура
<cite> - цитата (отображается курсивом) </cite>
<code> - оформление исходных текстов программ (моноширинный шрифт) </code>
<dfn> - новые символы и понятия (отображается курсивом) </dfn>
<strong> - выделение важного фрагмента (полужирный) </strong>
<em> - выделение важного фрагмента (курсив) </em>
<blockquote> текст выводится на экран с увеличенным левым полем </blockquote>
<bdo> - изменение направления текста. Используется с атрибутом dir.
<bdo dir="rtl">текст, направление которого меняется</bdo>
<marquee> - текст представляется в виде бегущей строки. Для определения движения текста слева направо или справа налево используется атрибутdirection=“left, right” </marquee
семантически означает стилистическое выделение текста
<b>…</b> - полужирный
<i>…</i> - курсивный
<tt>…</tt> - телетайпный (пишущая машинка)
<big>…</big> - увеличенный размер
<small>…</small> - уменьшенный размер
<u>…</u> - подчеркнутый
<s>…</s> или <strike>…</strike> - зачеркнутый
<sub>…</sub> - нижний индекс
<sup>…</sup> - верхний индекс
<p>Книга <cite><a href="http://www.amazon.com/Steve-Jobs>Стив Джобс</a></cite> действительно вдохновляет.</p>
<p><a href="http://www.businessweek.com">Стив Джобс</a> однажды сказал:
<q cite="http://www.businessweek.com">Один хоум-ран гораздо лучше, чем два дабла</q>.</p>
<blockquote cite="http://money.cnn.com">
<p>«В понимании большинства людей дизайн — это внешний лоск. Это украшение интерьера.
Это ткань штор, ткань дивана. Но для меня, всё это далеко от смысла дизайна.
Дизайн — это основа души человеческого творчества, что в конечном итоге выражает
себя в последующих внешних слоях продукта.»</p>
<p><cite>Стив Джобс в <a href="http://money.cnn.com">
журнале Fortune</a></cite></p>
</blockquote><header> - «шапка» сайта или раздела
<nav> - навигация по сайту
<main> - предназначен для основного содержимого документа
<article> - новости, статьи, записи блога, форума
<section> - раздел документа, который может включать в себя заголовки, шапку, подвал и текст
<time datetime pubdate> - помечает текст внутри тега как дата и/или время
<address> - адрес
<canvas> - cоздает область, в которой при помощи JavaScript можно рисовать
<source> - вставляет звуковой или видеофайл для тегов <audio> и <video>
<video> - добавляет, воспроизводит и управляет настройками видеоролика на веб-странице
<audio> - добавляет, воспроизводит и управляет настройками аудиозаписи на веб-странице
<figure> - идентификация и охватывание незвасимого контента, часто в видео медиа
<figurecaption> - подпись для figure
<aside> - для размещения рубрик, ссылок на архив, меток и другой информации
<footer> - «подвал» сайта или раздела
Элемент <header> применяется для идентификации верхней части страницы, статьи, раздела, или другого сегмента страницы. В общем, <header> может включать в себя заголовок, вводный текст и даже навигацию.
Элемент <nav> определяет блок основных навигационных ссылок на странице. Данный элемент должен быть зарезервирован только для главных разделов навигации, таких как глобальная навигация, оглавление, предыдущая/следующая ссылки или других заслуживающих внимания групп навигационных ссылок.
Элемент <article> применяется для идентификации независимого, самостоятельного раздела содержимого, который можно классифицировать как изолированный или повторно используемый. Мы часто используем элемент <article> для разметки постов блога, газетных статей, контента добавляемого пользователями и тому подобное.
При принятии решения, следует ли использовать элемент <article>, мы должны определить, может ли содержимое элемента быть повторено в других местах без какой-либо путаницы. Если содержимое элемента<article> было удалено из контекста страницы и помещено, к примеру, в электронную почту или печатную работу, то в содержимом по прежнему должен остаться смысл.
Элемент <section> применяется для идентификации тематической группы содержимого, которая, как правило, но не всегда, включает в себя заголовок. Группа контента внутри <section> может носить общий характер, но полезно определить всё содержимое как связанное между собой.
Элемент <section> обычно используется для разделения страницы и обеспечения на ней иерархии.
Элемент <aside> содержит контент, такой как боковые панели, вставки или краткие пояснения, который косвенно связан к окружающим его содержимым. К примеру, при использовании внутри элемента <article>, <aside> может определить содержимое, связанное с автором статьи.
Мы можем инстинктивно думать об элементе <aside> в качестве элемента, который отображается слева или справа на странице. Однако мы должны помнить, что все структурные элементы, включая <aside>, являются блочными и как таковые выводятся с новой строки и занимают всю доступную ширину страницы или элемента, в который они вложены, также известного как их родительский элемент.
Элемент <footer> определяет завершение или конец страницы, статьи, раздела или другого сегмента страницы. Обычно элемент <footer> находится в нижней части его родителя. Содержимое внутри <footer> должно быть связанной информацией и не должно расходиться с документом или разделом, внутри которого находится.
Блочный элемент <figure> применяется для идентификации и охватывания независимого содержимого, часто в виде медиа-контента. Он может окружать изображения, аудиоклипы, видео, блоки кода, диаграммы, рисунки или другой самостоятельный медиа-контент. Внутри <figure> одновременно может содержаться более одного независимого содержимого, вроде нескольких изображений и видео
Чтобы добавить подпись или пояснение к элементу <figure> применяется элемент <figcaption>
<figure>
<img src="dog.jpg">
<figcaption>Красивая чёрно-бело-коричневая дворняга с надетым на неё платком.</figcaption>
</figure>Селекторы
Селектор определяет, на какой именно элемент или элементы в HTML нацелиться и применить к ним стили
* - все элементы
.class-name - элементы с одинаковым классом
tag-name - элементы с одинаковым тэгом
#id
element, element
element element селекторы потомков
element > element дочерний селектор
element + element соседний селектор
element1 ~ element все элементы после эл1
element [attribute]
element [attribute='value']
element [attribute^='value'] begin
element [attribute$='value'] end
element [data-name='value']
:first-letter применяется к первой букве элемента селектора
:first-line применяется к первой линии элемента селектора
:first-child применяется к первому дочернему элементу селектора, который расположен в дереве элементов документа.
:last-child применяется к последнему дочернему элементу
:nth-child(n) любой дочерний элемент. Отсчет ведется с 1.
:only-child позволяет вам выбрать элементы, которые являются единственными дочерними
:not(selector) помогает исключить тот элемент, который указывается в скобках
Определяет их приоритетность в таблице стилей. Чем специфичнее селектор, тем выше его приоритет.
Правила вычисления специфичности селекторов:
1. Самый высокий приоритет имеет атрибут style. Это правило перекрывает все селекторы описанные в стилях.
2. Второе место занимает присутствие #id в селекторе.
3. Далее идут все атрибуты (в том числе и атрибут class) в селекторе (.class).
4. Самый низкий приоритет у селекторов с именами элементов (просто название тега)
имеет приоритет над правилами наследования
Недостатки !important
- нарушает стандартные правила наследования таблиц стилей. - работа с такой стилевой таблицей (поиск ошибок, модернизация) будет более трудоемкой;
- динамически (с помощью JavaScript) нет возможности переопределить свойство (это можно обойти, если менять не свойство, а класс).
Старайтесь избегать применения правила !important.
-исключают возможность поменять внешний вид компонента без изменения кода самого компонента
- увеличивают размер итоговой страницы
- если нет доступа к HTML, придется использовать !important
Идея семантического HTML и CSS заключается в разделении структуры и стилей. Помните, всегда храните стили в таблицы стилей.
cm - сантиметр
mm - миллиметр
pt - типографская величина =1/72дюйма
px - пиксель
% - процент от другого свойства
em - текущий размер шрифта.по умолчанию имеет размер 16px
ex - высота символа x
rem - равен значению <html>
! Дробная часть отделяется ТОЧКОЙ
vw — 1% ширины окна
vh — 1% высоты окна
vmin — наименьшее из (vw, vh), в IE9 обозначается vm
vmax — наибольшее из (vw, vh)
em всегда привязан к шрифту, а % могут зависить и от других свойств, такие как отступы, ширина/высота элемента
<div style="font-size: 200%"> будет 32px
<div style="font-size: 200%"> будет 64px </div>
</div>каждый элемент на странице представляет собой прямоугольный блок и может иметь ширину, высоту, поля, границы и отступы.
margin-left + border-left + padding-left + width + padding-right + border-right + margin-right
Дополнительные свойства для работы с шириной и высотой:
min-width минимальная ширина
max-width максимальная ширина
min-height минимальная высота
max-height максимальная высота
значение | проценты | auto | inherit
Устанавливает величину отступа от каждого края элемента. Отступом является пространство от границы текущего элемента до внутренней границы его родительского элемента
Устанавливает значение полей вокруг содержимого элемента. Полем называется расстояние от внутреннего края рамки элемента до воображаемого прямоугольника, ограничивающего его содержимое
позволяет нам менять, как блочная модель работает и как вычисляются размеры элемента
padding-box -width/height+ paddings
Таким образом, подключая box-sizing со значением border-box к своему стилю, мы можем задавать ширину в
процентах и спокойно указывать border и padding, не
боясь, что изменится ширина блока
определяет, как элемент должен быть показан в документе
! Display не переопределяет блочность/строчность элемента, а всего лишь управляет его свойствами при отображении
Предназначен для отображения или скрытия элемента, включая рамку вокруг него и фон. При скрытии элемента, хотя он и становится не виден, место, которое элемент занимает, остается за ним
берёт элемент, убирает его из обычного потока страницы и позиционирует слева или справа от родительского элемента. Все остальные элементы на странице будут обтекать такой элемент.
Проблемы
сделать очистку float и вернуть страницу в её обычный поток
.parent:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}.group::before,
.group::after {
content: "";
display: table;
}
.group::after {
clear: both;
}
.group {
clear: both;
*zoom: 1;
}.group:after {
content: "";
display: table;
clear: both;
}.box-set {
overflow: auto;
}Устанавливает способ позиционирования элемента относительно окна браузера или других объектов на веб-странице.
| static | Элементы отображаются как обычно. Использование атрибутов left, top, right и bottom не приводит к каким-либо результатам. значение по умолчанию |
| relative | положение элемента устанавливается относительно его исходного места. Добавление атрибутов left, top, right и bottom изменяет позицию элемента и сдвигает его в ту или иную сторону от первоначального расположения. Также устанавливает новую точку привязки для абсолютно позиционированных элементов |
| absolute | Указывает, что элемент абсолютно позиционирован, при этом другие элементы отображаются на веб-странице словно абсолютно позиционированного элемента и нет. Положение элемента задается свойствами left, top, right и bottom, также на положение влияет значение свойства position родительского элемента. |
| fixed | Привязывается к указанной свойствами left, top, right и bottom точке на экране и не меняет своего положения при прокрутке веб-страницы |
font-style (стиль шрифта): italic; normal, oblique
font-varient (капитель): normal, small-caps
font-weight (насыщенность шрифта): bold; normal; 100-900
font-size (Размер шрифта): px; pt, px, em, %
line-height (Высота строки): px; pt, px, em, %
font-family (Семейство шрифтов): Georgia, serif;}
Краткая запись: font: font-style font-variant font-weight font-size/line-height font-family
Краткая запись: { font: italic small-caps bold 16px/30px Georgia; }
СВОЙСТВА ТЕКСТА:
text-align (Горизонтальное выравнивание ): left, right, center, justify
text-decoration (Оформление): none;
underline - подчеркивает текст (по умолчанию для тегов <a>, <ins> и <u>);
overline - черта сверху текста;
line-through - зачеркивает текст (по умолчанию для тегов <del>, <s> и <strike>);
blink - мигание текста (отсутствует в IE, Chrome)
text-transform (Преобразование регистра ): none; (по умолчанию)
capitalize - преобразует первую букву каждого слова текста в верхний регистр;
uppercase - преобразует все символы текста в верхний регистр;
lowercase - в нижний регистр
word-spacing (Дополнительное расстояние между словами ): px;
letter-spacing (Дополнительное расстояние между буквами): px;
text-indent (Красная строка): px;
text-shadow Первые три значения — это размер, а последнее значение — цвет.
1- горизонт. смещение
2. вертикальное
3. радиус размытия
background-color: #fff;
background-image: url("image.jpg");
background-repeat: repeat, repeat-x,
repeat-y, no-repeat;
background-position: right bottom;
50px 50px; 25% 25%;
background-attachment: fixed;
Краткая запись:
background: #fff url("image.gif") no-repeat fixed right bottom;
background: url("foreground.png") 0 0 no-repeat,
url("middle-ground.png") 0 0 no-repeat,
url("background.png") 0 0 no-repeat;
background: #67b11c;
background: url("tick.png") 20px 50% no-repeat, linear-gradient(#72c41f, #5c9e19);
background-size: auto 75%;background-size: изменяет размер изображения
%, px, cover, contain
cover- закрывает всю w/h, мб обрезано
contain -целое изображние, мб не всё про-во
background-clip: площадь поверхности, которая охватывает изображение(ум. border-box)
background-origin: откуда начинается b-position
border-box, padding-box и content-box
линейный градиент движется с верхней до нижней части элемента, плавно переходя между первым и вторым значением цвета.
Изменение направления: градусы или ключ слова
background: linear-gradient(to right bottom, #648880, #293f50);
background: radial-gradient(#648880, #293f50);Verical Align влияет на выравнивание самого элемента, а не его содержимого (кроме случаев, когда применяется к ячейкам таблицы)
Горизонтальное
- inline-* text-align: center;
- block margin: 0 auto;
Вертикальное
- inline-*
1. padding
2. line-height
3. display: flex; justify-content: center; flex-direction: column;
4. display: inline-block; before: vertical-align: middle
5. position: absolute; top: 50%; transform: translate(-50%)
- block
height known
1.position: absolute; top: 50%; margin-top: -height/2
2.position: absolute; top(l, r, b): 0%; margin: auto
unknown height
1. position: absolute; top: 50%; transform: translate(-50%)
2. display: flex; justify-content: center; flex-direction: column;
display: flex;
justify-content: center;
align-items: center;.child {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}1 строка
многострочный текст
overflow:hidden;
text-overflow-multiline:ellipsis;1 способ Footer прижимается вниз путем его абсолютного позиционирования и вытягивания высоты html элемента на 100%, для body - min-height: 100%. При этом контентному блоку .container нужно указать нижний отступ, который равен или больше высоты подвала
2 способ Footer прижимается вниз за счет вытягивания блока контента и его родительских элементов на всю высоту окна браузера и подъема футера вверх через отрицательный отступ (margin-top) для избавления от появляющегося при этом вертикального скролла. В данном случае необходимо обязательно указать высоту подвала, и она должна быть равна величине отступа.
3 способ Использовании CSS-функции calc() и единицы измерения vh, которые поддерживаются только современными браузерами. Здесь необходимо знать точную высоту подвала.
html
height: 100%;
body
min-height: 100%;
height: auto;
position: relative;
.container
padding-bottom: 45px;
footer
position: absolute;
bottom: 0;
height: 45px;
html,
body,
.wrapper
height: 100%;
.content
min-height: 100%;
padding-bottom: 90px;
.footer
height: 80px;
margin-top: -80px;
.content
min-height: calc(100vh - 80px);
.footer
height: 80px;
* {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
}
.wrapper {
display: flex;
flex-direction: column;
height: 100%;
}
.content {
flex: 1 0 auto;
}
.footer {
flex: 0 0 auto;
}
4
.flex-center {
display: flex;
justify-content: center;
}<div id="container3">
<div id="container2">
<div id="container1">
<div id="col1">Column 1</div>
<div id="col2">Column 2</div>
<div id="col3">Column 3</div>
</div>
</div>
</div>#container3 {
float:left;
width:100%;
background:green;
overflow:hidden;
position:relative;
}
#container2 {
float:left;
width:100%;
background:yellow;
position:relative;
right:30%;
}
#container1 {
float:left;
width:100%;
background:red;
position:relative;
right:40%;
}
#col1 {
float:left;
width:26%;
position:relative;
left:72%;
overflow:hidden;
}
#col2 {
float:left;
width:36%;
position:relative;
left:76%;
overflow:hidden;
}
#col3 {
float:left;
width:26%;
position:relative;
left:80%;
overflow:hidden;
}1 способ: li: inline-block;
2 способ: li: float
3 способ. ul: display: flex;
Для всех a : display: block;
Стилизация чекбоксов
<input type="checkbox" class="checkbox" id="checkbox" />
<label for="checkbox">Я переключаю чекбокс</label>
input[type="checkbox"] {
display:none;
}
input[type="checkbox"] + label:before {
display:inline-block;
width:19px;
height:19px;
margin:-1px 4px 0 0;
vertical-align:middle;
background:url(check_radio_sheet.png) left top no-repeat;
cursor:pointer;
}
input[type="checkbox"]:checked + label:before{
background:url(check_radio_sheet.png) -19px top no-repeat;
}.tinted-image {
background:
/* top, transparent red, faked with gradient */
linear-gradient(
rgba(255, 0, 0, 0.45),
rgba(255, 0, 0, 0.45)
),
/* bottom, image */
url(image.jpg);
}background:
url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/owl1.jpg);
}
.red:after {
content: '';
position: absolute;
width: inherit;
height: inherit;
top: 0;
left: 0;
background: rgba(255, 0, 0, 0.5);
}