Верстка / Атрибут style

Начнем со следующего кода

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    Варкалось. Хливкие шорьки<br>
    Пырялись по наве,<br>
    И хрюкотали зелюки,<br>
    Как мюмзики в мове.<br>
    
</body>
</html>

дальше буду писать только то что находится в body.

И так современный html код примерно на 95% состоит из комбинаций тега div, который мы почему-то пока ни разу не упомянули.

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

Попробуем обернуть код в тег div

<div>
	Варкалось. Хливкие шорьки<br>
	Пырялись по наве,<br>
	И хрюкотали зелюки,<br>
	Как мюмзики в мове.<br>
</div>

выглядит все один в один

Зачем же он собственно нужен? А для того чтобы указывать стили для каждого блока.

Стили

Например, вот хочу я чтобы текст был выровнен по центру. Как мне это сделать?

Тут нам пригодятся так называемые атрибуты. Добавим атрибут для указания стиля

и пропишем в нем стиль который укажет что мы хотим выравнивать текст по центру (стиль text-align)

Imgur

проверяем

мы можем указать несколько стилей, например, я могу указать чтобы весь текст был толстым (стиль font-weight):

Imgur

то есть в целом, любой стиль имеет вид:

название: значение;

соответственно, если несколько стилей, то пишем

название1: значение1; название2: значение2; ...

по сути div тег является таким обобщенным тегом который позволяет более тонко настраивать отображение текста.

Я могу использовать сколько угодно тегов div

<div style="text-align: center; font-weight: bold;">
    Варкалось. Хливкие шорьки
</div>

<div style="text-align: right; text-decoration: underline;">
    Пырялись по наве,
</div>

<div style="text-align: left; text-decoration: line-through;">
    И хрюкотали зелюки,
</div>

<div  style="text-align: center; font-style: italic;">
    Как мюмзики в мове.
</div>

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

Граница border

Вообще надо понять принцип поведения блока div.

Он занимает все расстояние от левого до правого края и расширяется в высоту в зависимости от содержимого.

Добавим границу к нашему блоку. Для этого есть стиль border

<div style="text-align: center; border: 1px solid black;">
    Варкалось. Хливкие шорьки
</div>

получится так

формат стиля border такой:

а если запихать текст побольше, он начнет расширять область в высоту

<div style="text-align: center; border: 1px solid black;">
    Однажды весною, в час небывало жаркого заката, в Москве, 
    на Патриарших прудах, появились два гражданина. 
    Первый из них, одетый в летнюю серенькую пару, 
    был маленького роста, упитан, лыс, свою приличную шляпу 
    пирожком нес в руке, а на хорошо выбритом лице его помещались 
    сверхъестественных размеров очки в черной роговой оправе. 
    Второй – плечистый, рыжеватый, вихрастый молодой человек в
     заломленной на затылок клетчатой кепке – был в ковбойке, 
     жеваных белых брюках и в черных тапочках.
</div>

<div style="text-align: right; text-decoration: underline;">
    Пырялись по наве,
</div>

<div style="text-align: left; text-decoration: line-through;">
    И хрюкотали зелюки,
</div>

<div  style="text-align: center; font-style: italic;">
    Как мюмзики в мове.
</div>

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

Отступ внутри рамки (padding)

Еще один очень важный стиль, который очень часто используется в природе это padding (отступ). Грубо говоря это расстояние от текста до границы блока. Задавать его можно тремя разными способами:

<div style="text-align: center; padding: 8px 16px; border: 1px solid black;">
    Однажды весною, в час небывало жаркого заката, в Москве, 
    на Патриарших прудах, появились два гражданина. 
    Первый из них, одетый в летнюю серенькую пару, 
    был маленького роста, упитан, лыс, свою приличную шляпу 
    пирожком нес в руке, а на хорошо выбритом лице его помещались 
    сверхъестественных размеров очки в черной роговой оправе. 
    Второй – плечистый, рыжеватый, вихрастый молодой человек в
     заломленной на затылок клетчатой кепке – был в ковбойке, 
     жеваных белых брюках и в черных тапочках.
</div>

Отступ снаружи рамки (margin)

Тоже регулярно используется. Допусти добавлю я все div-ам рамки:

<div style="text-align: center; padding: 8px 16px; border: 1px solid black;">
    <!-- это комментарий, его копировать не надо, я его сюда вставил чтобы весь текст не копировать ...  -->
</div>

<div style="text-align: right; border: 1px solid black; text-decoration: underline;">
    Пырялись по наве,
</div>

<div style="text-align: left; border: 1px solid black; text-decoration: line-through;">
    И хрюкотали зелюки,
</div>

<div  style="text-align: center; border: 1px solid black; font-style: italic;">
    Как мюмзики в мове.
</div>

выглядит это все слеплено:

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

добавляем:

<div style="margin: 8px 0; text-align: center; padding: 8px 16px; border: 1px solid black;">
    <!-- ...  -->
</div>

<div style="margin: 8px 0; text-align: right; border: 1px solid black; text-decoration: underline;">
    Пырялись по наве,
</div>

<div style="margin: 8px 0; text-align: left; border: 1px solid black; text-decoration: line-through;">
    И хрюкотали зелюки,
</div>

<div  style="margin: 8px 0; text-align: center; border: 1px solid black; font-style: italic;">
    Как мюмзики в мове.
</div>

вот теперь красота:

Фон блока (background)

Часто хочется как-то выделить или раскрасить блок. Для этого используется стиль background. У него очень много всяких форм, но мы рассмотрим две, для заливки одним цветом или для заливки градиентом

<div style="background: #a6ff00; text-align: center; margin: 8px 0; padding: 8px 16px; border: 1px solid black;">
    <!-- ...  -->
</div>

чтобы подкорректировать цвет просто наведи мышку на цвет и немного подожди:

Imgur

получится как-то так:

градиент делается вот так

<div style="background: linear-gradient(90deg, #00aeff, #ffa6f3); text-align: right; margin: 8px 0; border: 1px solid black; text-decoration: underline;">
    Пырялись по наве,
</div>

а выглядит вот так:

Ширина блока (width)

Иногда очень хочется ограничить размеры блока. Тут на помощь приходит свойство width, формат простой:

<div style="width: 300px; background: #a6ff00; text-align: center; margin: 8px 0; padding: 8px 16px; border: 1px solid black;">
    <!-- ...  -->
</div>

причем указывать размер не обязательно в px, можно указать в процентах, например, 50%:

<div style="width: 50%; background: #a6ff00; text-align: center; margin: 8px 0; padding: 8px 16px; border: 1px solid black;">
    <!-- ...  -->
</div>

правда он все равно займет не 50 процентов. На деле окажется что 50% будет занимать только сам текст, а плюсом будет еще идти всякие padding и margin и даже ширина границы

чтобы такое поведение подправить надо добавить свойство box-sizing: border-box;, вот так:

<div style="box-sizing: border-box; width: 50%; background: #a6ff00 ; text-align: center; margin: 8px 0; padding: 8px 16px; border: 1px solid black;">
    <!-- ...  -->
</div>

вот тогда все будет четко

Вообще, не пугайся что мы так много пишем в этот несчастный атрибут style, в следующем задании мы научимся делать классы, и писать станет сильно комфортнее.

Подсветка отдельных слов или предложений (span)

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

Для этого используется тег span. Он также используется в качестве обертки текста.

А главное отличие от div заключается в том, что он не добавляет переносы на новую строку.

То есть я могу выделить отдельное слово и, например, изменить фон текста:

<div style="...">
    Однажды весною, в час небывало жаркого заката, в <span style="background: red;">Москве</span>, 
    на Патриарших прудах, появились два гражданина. 
    Первый из них, одетый в летнюю серенькую пару, 
    был маленького роста, упитан, лыс, свою приличную шляпу 
    пирожком нес в руке, а на хорошо выбритом лице его помещались 
    сверхъестественных размеров очки в черной роговой оправе. 
    Второй – плечистый, рыжеватый, вихрастый молодой человек в
     заломленной на затылок клетчатой кепке – был в ковбойке, 
     жеваных белых брюках и в черных тапочках.
</div>

будет выглядеть вот так:

могу padding добавить:

<div style="width: 50%; box-sizing: border-box; background: #a6ff00 ; text-align: center; margin: 8px 0; padding: 8px 16px; border: 1px solid black;">
    Однажды весною, в час небывало жаркого заката, в <span style="padding: 8px; background: red;">Москве</span>, 
    <!-- ...  -->
</div>

странно выглядит, правда:

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

Но часто хочется прямо вот сильно выделить слово. Для этого добавляется специальный стиль display: inline-block;, вот так:

<div style="width: 50%; box-sizing: border-box; background: #a6ff00 ; text-align: center; margin: 8px 0; padding: 8px 16px; border: 1px solid black;">
    Однажды весною, в час небывало жаркого заката, в <span style="display: inline-block; padding: 8px; background: red;">Москве</span>, 
    <!-- ...  -->
</div>

тогда оно выглядит нормально

вот такие дела =)

Ну думаю хватит пока, можно теперь и задание поделать

2

Найти текст с тремя абзацами. И сверстать следующим образом.

  • Первый абзац должен иметь выравнивание в текста по центру
  • Второй абзац должен иметь выравнивание вправо, и ширину 500px
  • Третий абзац должен иметь выравнивание влево, и ширину 50%
  • Все абзацы должны быть обведены рамкой (у каждого свой цвет рамки) и иметь padding 8px 16px и margin в 8px
  • У каждого абзаца должен быть свой цвет фона, и хотя бы один абзац должен в качестве фона использовать градиент
  • Подстветить все прилагательные каким-нибудь цветом
  • Выделить все имена собственные прям чтобы в глаза бросались с padding-ом, можно даже градиенты в качестве фона использовать и рамочки.

как-то так (в принципе, чем трешовее тем лучше =)