Урок 2. Код CSS. Селекторы. Родительские и дочерние элементы. Блочная модель.

Курс html/css для подростков 12+

Урок 2. Код CSS. Селекторы. Родительские и дочерние элементы. Блочная модель.

Вставка кода css html документ. Синтаксис языка css. Селекторы. Классы. ID (идентификаторы). Размеры в css. Родительские, дочерние элементы. Блочная модель. Схлопывание margin. Background (фон элемента).


Css  (от англ. Cascading Style Sheets) - каскадные таблицы стилей. Язык, на котором описываются свойства HTML элементов. С помощью css можно изменить цвет, размер и т.д. 

 

Вставка кода css html документ. 

Код css вставляется в Html документ следующими способами: 

1. С помощью атрибута style в html тэг: 
 

<p style="color:red;">Этот параграф с красным шрифтом.</p> 

 

2. С помощью тэга style в голове документа (в нутрии тэга <head>): 

<head> 

 

    <style> 

        h1 { 

            color:brown; 

        } 

    </style> 

</head> 

 

3. Подключением отдельного файла css: 

Сам файл содержащий код css: 

 

Подключение файла css производится с помощью тэга link в голове html документа: 

<head> 

    <link rel="stylesheet" href="styles.css"> 

</head> 

Здесь атрибут rel указывает, что подключается файл css, атрибут href указывает url (адрес) файла. 

 

Синтаксис языка css. 

Код css состоит из следующих элементов: 

1. Селекторт англ. select - выбирать) – буква, слово или сочетание слов, указывающие на элемент html документа. В следующей конструкции селектором является буква p. 

p { 

    color:aqua; 

} 

Буква p говорит о том, что свойства css надо применить ко всему тексту, который находится внутри всех тэгов <p>. 

2. Свойства. В предыдущем примере слово colorэто свойство, a слово aqua значение, которое присваивается этому свойству. 

3. Фигурные скобки нужны для объединения всех свойств одного селектора. 

4. Так же обратите внимание на то, как и где используются двоеточие и точка с запятой. Двоеточие разделяет свойство и значение. Точка с запятой разделяет несколько свойств, должна ставиться обязательно, даже если одно свойство. Пример: 

p { 

    color:aqua; 

    background-color: azure; 

} 

 

Описание свойств для нескольких html элементов идут один за другим: 

h1 { 

    color:brown; 

} 

 

p { 

    color:aqua; 

    background-color: azure; 

} 

 

 

Селекторы. 

Селекторы бывают самые разные. Они позволяют указать абсолютно на любой html элемент, а так же группу элементов. На данном этапе изучим только два. 

 

Классы. 

Классы позволяют применить css свойства ко множеству html элементов. Делается это следующим образом. В html тэге указываем атрибут class и присваиваем ему какое либо имя: 

    <p class = "red-paragraphs">Этот параграф с красным шрифтом.</p> 

    <p class = "red-paragraphs">Этот параграф то же с красным шрифтом.</p> 

 

Далее в css коде селектор будет выглядеть так: 

        .red-paragraphs { 

            color: red; 

        } 

Т.е. ставиться точка и пишется имя класса. 

 

Классы позволяют создавать элементы на одних и тех же тэгах, но с разными свойствами.  

    <p class = "red-paragraphs">Этот параграф с красным шрифтом.</p> 

    <p class = "red-paragraphs">Этот параграф то же с красным шрифтом.</p> 

    <p class = "blue-paragraphs">Этот параграф с синим шрифтом.</p> 

    <p class = "blue-paragraphs">Этот параграф то же с синим шрифтом.</p> 

 

        .red-paragraphs { 

            color: red; 

        } 

        .blue-paragraphs { 

            color: blue; 

        } 

 

Так же можно создать элементы на разных тэгах, но с одинаковыми свойствами. 

    <h1 class="red-element">Это красный заголовок</h1> 

    <p class="red-element">Это красный параграф</p> 

 

        .red-element { 

            color: red; 

        } 

 

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

<p class = "blue-paragraphs font">Этот параграф принимает свойства нескольких классов</p> 

 

        .blue-paragraphs { 

            color: blue; 

        } 

        .font { 

            font-family: Georgia, "Times New Roman", serif; 

        } 

 

 

ID (идентификаторы) 

Помимо классов существуют идентификаторы. Они позволяют присвоить те или иные свойства только одному html элементу. 

Для этого существует атрибут id, которому нужно присвоить уникальное имя: 

<p id="unique-paragraph">Это уникальный параграф</p> 

 

В коде css id селектор начинается с символа #(шарп или решетка), после которого пишется уникальное имя элемента: 

        #unique-paraphraph { 

            color:cyan; 

        } 

 

Свойства, отвечающие за отображение текста. 

Свойство 

Значения 

Описание 

Пример 

color 

цвет 

Цвет текста элемента. 

.red-element { 

    color: red; 

} 

font-family 

Названия шрифтов через запятую. Так же можно указать одно из следующих названий группы шрифтов: serif, sans-serif, monospace, fantasy, cursive. 

Устанавливает шрифт, которым будет отображаться текст. Если указать несколько через запятую, то при отсутствии на компьютере пользователя первого шрифта, отображаться будет вторым. Если плюсом указана группа шрифтов, то браузер выберет шрифт из этой группы самостоятельно. Пример: font-family: Times New Roman, Times, serif; 

.font { 

font-family: Georgia, "Times New Roman", serif; 

} 

 

font-size 

larger 

Размер шрифта больше или меньше основного соответственно. 

font-size: larger; 

smaller 

font-size: smaller; 

Одно из следующих значений: xx-small, x-small, small, medium, large, x-large, xx-large. 

Размер шрифта будет установлен в соответствии с приведёнными значениями. 

font-size: x-small; 

Размер 

Размер шрифта будет установлен в соответствии с числом. Примечание emширина одной буквы основного шрифта, exвысота одной буквы основного шрифта. in, cm, mm – размер в дюймах, сантиметрах и миллиметрах соответственно. 

font-size: 15px; 

font-style 

normal 

Обычный шрифт. 

font-style: normal; 

italic 

Курсивный шрифт. 

font-style: italic; 

oblique 

Наклонный шрифт. 

font-style: oblique; 

font-variant 

normal 

Обычный шрифт. 

 

small-caps 

Шрифт, в котором маленькие буквы выглядят так же как большие. Например маленькая буква А будет выглядеть так же как большая. 

 

font-weight 

normal 

Нормальный шрифт. 

 

bold 

Полужирный шрифт. 

 

bolder 

Шрифт жирнее обычного. 

 

lighter 

Шрифт менее жирный обычного. 

 

Число в диапазоне от 100 до 900 шагом в 100. 

Шрифт будет установленной «жирности». Нормальный шрифт имеет «жирность» равную 700. Будет работать только, если загружены соотвтетствующие каждому числу шрифты. 

 

letter-spacing 

normal 

Автоматическая установка интервала между буквами в строке. 

 

Размер 

Интервал между буквами в строке устанавливается в зависимости от указанного значения. 

 

line-height 

normal 

Обычный интервал между строк. 

 

число 

Если указано просто число, то браузер умножит его на установленный интервал между строк, после чего установит этот интервал равным получившемуся числу. 

 

Размер 

Интервал между строками будет установлен в соответствии с указанным значением. 

 

word-spacing 

Размер 

Расстояние между словами. 

 

text-indent 

Размер 

Отступ первой строки элемента. (Красная строка). 

 

text-align 

left 

Выравнивание элемента по левому краю его границ. 

 

right 

Выравнивание элемента по правому краю его границ. 

 

center 

Выравнивание элемента по центру от его границ. 

 

justify 

Выравнивание элемента по ширине от его границ. 

 

text-decoration 

none 

Ни как не выделенный шрифт 

 

underline 

Подчёркнутый снизу шрифт. 

text-decoration: underline;   

overline 

Подчёркнутый сверху шрифт 

 

line-through 

Подчёркнутый посередине шрифт (зачёркнутый). 

 

blink 

Мигающий шрифт. 

 

text-decoration-style 

solid 

Одинарная линия (пример). 

 

double 

Двойная линия (пример). 

text-decoration-style: double; 

dotted 

Точечная линия (пример). 

 

dashed 

Пунктирная линия (пример). 

 

wavy 

Волнистая линия. 

 

 

Размеры в css. 

 Пиксели. Обозначают количество точек на экране компьютера. 

        .font { 

font-size: 15px; 

} 

 

auto. Всегда можно задать размер словом auto. В таком случае размер будет вычислен автоматически в зависимости от ситуации. 

 

emразмер относительно размера шрифта в родительском элементе. Если к примеру размер шрифта в родительском элемента 10px, то 0.5em будет означать 5px. 

font-size: 1.5em; 

 

remразмер относительно базового размера шрифта документа. Т.е. если у html документа в целом базовый размер шрифта 10px, то 0.5rem будет означать 5px независимо от того, где этот элемент находится. Базовый размер шрифта устанавливается у тэга <html> 

 

        html { 

            font-size: 30px; 

        } 

        .font { 

            font-size: 2rem; 

        } 

 

В данном примере все элементы с классом font будут иметь размер шрифта 60px независимо от того внутри каких других элементов они находятся. 

 

Проценты. Процент от родительского элемента. Если ширина родительского элементы 500px, то 50% будет означать 250px. 

width: 50%; 

 

Родительские, дочерние элементы. 

Тэги в html могут быть вложены друг в друга. В следующем примере тэг <h1> вложен в <body>. 

<body> 

    <h1 class="red-element">Это красный заголовок</h1> 

</body> 

 

Получается, что h1 по отношению к body является дочерним, и наоборот тэг body по отношению к h1 является родительским. 

 

Блочная модель. 

Каждый элемент html заключен в блок. Поэтому у него есть, говоря простым языком, следующие вещи:  

 - paddingотступ о содержимого до рамки; 

 - borderрамка; 

 - marginотступ от рамки до другого элемента. 

 

Каждая эта вещь имеет свойства css для настройки: 

<head> 

    <style> 

        #html-element-1 { 

            background-color:chocolate; 

            padding: 10px; 

            border: solid red 5px; 

            margin: 20px; 

        } 

    </style> 

</head> 

<body> 

    <p id = "html-element-1">Это html элемент.</p> 

</body> 

Результат кода: 

 

Свойства, управляющие размерами блочной модели. 

Свойство 

Описание свойства 

Значения 

Описание значения 

height 

Абсолютные размеры элемента 

Размер 

Задаёт высоту, ширину прямоугольного блока элемента. 

width 

max-height 

Максимально возможная высота. 

max-width 

Максимально возможная ширина. 

min-height 

Минимально возможная высота. 

min-width 

Минимально возможная ширина. 

height 

fit-content 

Рассчитать на основании контента. При использовании этого значения, внутренний элемент можно адекватно растянуть на всю высоту этого элемента heigh:100%  

margin-bottom 

Только нижний 

Размер 

Нижняя невидимая область. 

margin-left 

Только левый 

Левая невидимая область. 

margin-right 

Только правый 

Правая невидимая область. 

margin-top 

Только верхний 

Верхняя невидимая область. 

margin 

Размер отступа от рамки до следующего элемента 

Размер всей невидимой области. Можно задать от одного до 4 чисел, при этом будут заданы соответствующие стороны области margin. 

padding-bottom 

Только нижний 

Размер 

Нижняя область между рамкой и содержанием элемента. 

padding -left 

Только левый 

Левая область между рамкой и содержанием элемента. 

padding -right 

Только правый 

Правая область между рамкой и содержанием элемента. 

padding -top 

Только верхний 

Верхняя область между рамкой и содержанием элемента. 

padding 

Размер от содержимого до рамки 

Размер всей области между рамкой и содержанием элемента. Можно задать от одного до 4 чисел, при этом будут заданы соответствующие стороны области padding. 

 

 

 

 

Рамка. 

Примечание: прежде чем работать с рамкой, необходимо настроить свойство border-style, определив какой она должна быть. Иначе рамка отображаться не будет. 

Свойство 

Значения 

Описание 

border-style 

none 

Рамка не отображается. Значение по умолчанию. 

solid 

Рамка в виде сплошной линии. 

double 

Рамка из двух сплошных линий. 

dotted 

Рамка из точек. 

dashed 

Рамка в виде пунктирной линии. 

groove 

Разновидности объёмных рамок 

ridge 

inset 

outset 

border-color 

Цвет 

Устанавливает цвет рамки. Можно указать от 1 до 4 значений, при этом будут установлены разные цвета соответствующим сторонам. 

border-width 

Число в px либо thin (тонкая рамка) либо medium (средняя) либо thick (толстая). 

Толщина рамки. Можно указать от 1 до 4 значений, при этом будет установлена различная толщина у соответствующих сторон рамки. 

border 

Значения через пробел как у свойств border-style, border-color, border-width. 

Устанавливает за раз три предыдущих свойства. С помощью этого свойства можно настроить только всю рамку целиком. Пример: border: solid red 5px; 

border-left-style 

Все значения как у свойства border-style 

Устанавливают стиль отдельно левой, правой, верхней и нижней сторон рамки соотвтетственно. 

border-right-style 

border-top-style 

border-bottom-style 

border-left-color 

Цвет 

Устанавливают отдельно цвет каждой стороны рамки. 

border-right-color 

border-top-color 

border-bottom-color 

border-left-width 

Число в px либо thin (тонкая рамка) либо medium (средняя) либо thick (толстая). 

Устанавливают отдельно толщину каждой стороны рамки. 

border-right-width 

border-top-width 

border-bottom-width 

border-left 

Значения как у свойства border 

Позволяют разом задать три свойства каждой стороны в отдельности 

border-right 

border-top 

border-bottom 

border-radius 

Число в px или другом 

Округление углов элемента. Число задаёт радиус округления. Задать можно как одно число, так и несколько. В зависимости от количества чисел будут округлены соответствующие углы. 

Два числа в px через символ «/» 

Форма элемента превращается в эллипс. 

border-top-left-radius 

border-top-right-radius 

border-bottom-left-radius 

border-bottom-right-radius 

 

То же что и border-radius, только отдельно для каждого угла. 

border-collapse 

collapse 

Соседние элементы будут иметь общую рамку. 

separate 

У каждой соседней ячейки будет своя рамка. 

border-spacing 

Число в px. 

Расстояние между рамками соседних элементов. Работает только при border-collapse: separate. 

border-image 

 

Делает рамку из изобржения. http://htmlbook.ru/css/border-image 

 

<head> 

    <style> 

        #html-element-1 { 

            background-color:chocolate; 

            padding: 10px; 

            border: solid red 5px; 

            margin: 20px; 

        } 

        #html-element-2 { 

            background-color: darkgreen; 

            padding-top: 10px; 

            padding-bottom: 4px; 

            padding-left: 3px; 

            padding-right: 2px; 

            border: dashed blue 6px; 

            margin-top: 10px; 

            margin-bottom: 4px; 

            margin-left: 3px; 

            margin-right: 2px; 

        } 

    </style> 

</head> 

<body> 

    <p id = "html-element-1">Это html элемент.</p> 

    <p id = "html-element-2">Это html элемент.</p> 

</body> 

 

Примечание: по каждому свойству css можно найти подробное описание и примеры в интернете. Так же стоит отметить, что не все свойства здесь приведены. 

 

Схлопывание margin. 

Существует один важный нюанс. Маржины имеют свойство схлопываться. Что это значит: маржины двух рядом стоящих элементов не складываются, а берется максимальный из них. Т.е. если у, например, верхнего параграфа margin-bottom 40px, а у ниже стоящего 5px, то отступ между ними будет 40px. 

<head> 

    <style> 

        .paragraph-margin-40px { 

            background-color:chocolate; 

            margin:40px; 

        } 

        .paragraph-margin-5px { 

            background-color:chocolate; 

            margin:5px; 

        } 

    </style> 

</head> 

<body> 

    <p class = "paragraph-margin-40px">Параграф 1. Margin 40px</p> 

    <p class = "paragraph-margin-40px">Параграф 2. Margin 40px</p> 

    <p class = "paragraph-margin-5px">Параграф 3. Margin 5px</p> 

    <p class = "paragraph-margin-5px">Параграф 4. Margin 5px</p> 

</body> 

 Результат: 

 

Как видно из результата, отступ между вторым и третьим параграфами 40px.  

 

Background (фон элемента). 

Каждому элементу можно задать фон. Для этого существует свойства представленные в таблице: 

 

Примечание: фон элемента находится только в области ограниченной рамкой. В области margin фон всегда будет от родительского элемента. 

Свойство 

 

Значения 

Описание 

background-color 

Цвет фона элемента 

Цвет 

Цвет фона элемента 

transparent 

Прозрачный фон. 

inherit 

Наследует от родителя. 

background-image 

Фоновое изображение 

url ('url адрес') 

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

none 

Отменяет фоновое изображение 

inherit 

Наследует от родителя 

background-attachment 

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

scroll 

Фоновое изображение будет прокручиваться вместе с окном 

fixed 

Фоновое изображение будет зафиксировано, и с окном прокручиваться не будет. 

inherit 

Наследует значение родителя. 

local 

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

background-origin 

Определяет область позиционирования фонового рисунка. Это свойство не применяется, когда значение background-attachment задано как fixed 

padding-box 

Фон позиционируется относительно края элемента с учетом толщины границы. 

border-box 

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

content-box 

Фон позиционируется относительно содержимого элемента. 

background-repeat 

как будет повторяться фоновое изображение. 

Если указать два значения, то первое – по горизонтали, второе – по вертикали. 

 

repeat 

Если изображение меньше размера элемента, то оно будет размножено для заполнения всего фона. 

no-repeat 

Изображение вставляется в единственном экземпляре не зависимо от размеров элемента. 

repeat-x 

Изображение размножается по оси X (по горизонтали). 

repeat-y 

Изображение размножается по оси Y (по вертикали). 

space 

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

round 

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

inherit 

Наследует значение родителя 

background-position 

Начальное положение фонового изображения. 

 

Два числа в px или в %. 

Первое число – позиция изображения по оси X, второе – по оси Y. 

Одно число в px или в %. 

Позиция изображения по оси X. Позиция по оси Y берётся равной 50%. 

left (center, right) top (center, bottom) 

С лева (по центруб с права) с верху (по середине, с низу). Можно использовать два слова через пробел. 

background-position-x 

То же самое, только для x и y отдельно 

 

 

background-position-y 

 

 

background-size 

Размер фонового изображения. Одно значение – ширина, при этом высота auto, два значения – ширина и высота. 

Размер в любых единицах 

 

% 

 

auto 

Если указано для ширины и высоты, то размеры остаются исходными. Если только для ширины или высоты, то вычисляется исходя из пропорций. 

cover 

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

contain 

Масштабирует изображение с сохранением пропорций таким образом, чтобы картинка целиком поместилась внутрь блока. 

background 

 

Все предыдущие значения. 

Позволяет за раз задать все предыдущие свойства. Значения перечисляются через пробел в произвольном порядке. Пример: background:url('bg_Img.bmp')  no-repeat right bottom;.  

background-clip 

 

padding-box 

Фон будет отображаться внутри контента и padding(а) 

 

border-box 

Фон будет отображаться внутри контента, padding(а) и рамки. 

 

content-box 

Фон будет отображаться только внутри контента. 

 

Пример: 

<head> 

    <style> 

        #html-element-with-background-color { 

            background-color:chocolate; 

            height:50px; 

        } 

        #html-element-with-background-image { 

            background-image: url('monsters.webp'); 

            background-size:contain; 

            text-align: center; 

            height: 200px; 

            padding: 40px; 

            color:white; 

            font-size: 40px; 

            text-shadow: 1px 1px 2px black, 0 0 1em red; 

        } 

    </style> 

</head> 

<body> 

    <p id = "html-element-with-background-color">Это html элемент c background-color.</p> 

    <p id = "html-element-with-background-image">Это html элемент c <br>background-image.</p> 

</body>