Блочный тег div, свойства, пример
Содержание:
- HTML Tutorial
- Порядок имеет значение
- Кратко о контейнерах
- Слишком длинная строка на больших экранах
- Добавляем ширину
- Конвенция имен классов
- Общая структура и логика веб-страницы
- Добавляем отступ между контейнерами
- Атрибуты¶
- Как добавить стиль к тегу <div> ?
- Предостережения
- Другая кнопка
- Настройка
- Используем свойство Display: Contents
- Стили кнопок
- Центрируем DIV внутри DIV-элемента с помощью inline-block
- How to style tag?
- Центрирование контейнера
- Более полезные div
- Заголовки и простые блоки
- Exploring the Element in Practice
- Добавляем padding слева и справа
- Definition and Usage
- Селекторы классов
- Специфичность CSS
- Дивы контейнеров
- Краткий обзор элемента
HTML Tutorial
HTML HOMEHTML IntroductionHTML EditorsHTML BasicHTML ElementsHTML AttributesHTML HeadingsHTML ParagraphsHTML StylesHTML FormattingHTML QuotationsHTML CommentsHTML Colors
Colors
RGB
HEX
HSL
HTML CSSHTML Links
Links
Link Colors
Link Bookmarks
HTML Images
Images
Image Map
Background Images
The Picture Element
HTML Tables
HTML Tables
Table Borders
Table Sizes
Table Headers
Padding & Spacing
Colspan & Rowspan
Table Styling
Table Colgroup
HTML Lists
Lists
Unordered Lists
Ordered Lists
Other Lists
HTML Block & InlineHTML ClassesHTML IdHTML IframesHTML JavaScriptHTML File PathsHTML HeadHTML LayoutHTML ResponsiveHTML ComputercodeHTML SemanticsHTML Style GuideHTML EntitiesHTML SymbolsHTML EmojisHTML CharsetHTML URL EncodeHTML vs. XHTML
Порядок имеет значение
Хочу обратить ваше внимание на две важные вещи, касающиеся нашей второй кнопки:
- Это добавление нового объявления по сравнению с исходным правилом .button — font-style;
- Переопределение существующего в классе .button стиля — background-color.
Переопределение дочерних селекторов в CSS происходит из-за порядка размещения правил .call-to-action и .button в таблице стилей. Когда в файле CSS есть два противоречащих друг другу свойства, всегда применяется то, которое указано последним. Если бы вы разместили .call-to-action перед .button, применялось бы это правило, и кнопка осталась бы синей.
Это означает, что порядок атрибутов класса в HTML-элементе не влияет на поведение переопределения. Несколько классов в одном элементе применяются «одинаково», а приоритет определяется исключительно порядком размещения правил в файле styles.css.
Другими словами, следующие элементы эквивалентны:
<!-- В результате элементы будут отображаться на странице одинаково --> <div class='button call-to-action'>Кнопка Два</div> <div class='call-to-action button'>Кнопка Два</div>
Кратко о контейнерах
Когда вы слышите слово обёртка или контейнер – это буквально означает, что группа элементов обёрнута другим элементом или содержится в нём. Не используя дополнительные объекты, мы можем добавить обёртку к элементу <body>, как показано ниже.
CSS
body { max-width: 1170px; margin-left: auto; margin-right: auto; padding-left: 16px; padding-right: 16px; }
Однако добавлять wrapper к элементу <body> в современных условиях было бы не очень практично. Контейнер не позволяет дочерним элементам выходить за его границы. Посмотрите на следующую фигуру:
У нас есть боковые и центральные элементы, которые существуют внутри другого элемента, оборачивающего их. Конечно, у элемента wrapper есть своя ширина.
HTML
<div class="wrapper"> <aside>...</aside> <main>...</main> </div>
Без контейнера дочерние элементы соприкасались бы с границами экрана. Это выглядело бы довольно раздражающе для пользователя, особенно на большом экране.
Фигура, продемонстрированная выше, показывает, что элементы растягиваются, если их ничто не оборачивает. Пользователю не стоит видеть такую картину. Давайте объясню, почему.
Слишком длинная строка на больших экранах
Будет очень сложно читать текст абзаца на больших экранах, так как строка слишком длинная. Сайт «Элементы типографического стиля, используемые в сети» рекомендует, чтобы в строке было 45-75 символов. Чем дальше от этого диапазона, тем сложнее будет читать текст, представленный на веб-странице.
Для устранения подобных проблем, можно использовать контейнер, который не даст строке текста стать слишком длинной и добавит отступ на мобильных устройствах.
HTML
<section class="hero"> <div class="hero__wrapper"> <h2>How to make bread at home</h2> <p>...</p> <p><a href="/sign-up">Sign up</a></p> </div> </section>
Я использовал класс hero__wrapper, так как этот контейнер может принадлежать только первой секции (Hero Section), поэтому его ширина может быть меньше ширины других контейнеров.
CSS
.hero__wrapper { max-width: 720px; margin-left: auto; margin-right: auto; padding-left: 16px; padding-right: 16px; }
Для центрирования содержимого вы можете применить любой метод, который хотите, в зависимости от варианта использования. В этом примере будет достаточно применить text-align: center, чтобы расположить контент в центре.
Добавляем ширину
Первая вещь, о которой стоит подумать, создавая wrapper, – это его ширина. Насколько широким вы хотите его видеть? Это зависит от вашего дизайна. Как правило, чаще всего используется ширина контейнера в диапазоне 1000px – 1300px. Самый популярный фреймворк Bootstrap, например, использует ширину в 1170px.
CSS
.wrapper { width: 1170px; }
Однако не рекомендуется использовать свойство width, так как из-за этого может появиться горизонтальная прокрутка экрана, если его размер меньше 1170px. Но вы можете от неё избавиться, добавив свойство max-width.
CSS
.wrapper { width: 1170px; max-width: 100%; }
Это будет работать, но вы также можете убрать свойство width и использовать только max-width, как показано ниже:
CSS
.wrapper { max-width: 1170px; }
Теперь, когда мы добавили контейнеру ширину, давайте расположим его в центре.
Конвенция имен классов
Значение атрибута класса HTML может представлять собой почти все, что угодно, если оно соответствует селектору в коде CSS. Стандартная конвенция имен классов — это использование прописных букв и дефисов вместо пробелов, как в именах файлов и папок.
Добавление атрибута class не изменяет смысловое значение HTML-документа и служит для подключения CSS. Рекомендуется избегать имен классов, основанных на том, как они отображаются. Использование чего-то более семантического, например, .synopsis, дает больше свободы в действиях. Что позволяет настроить отображение этого абзаца.
Общая структура и логика веб-страницы
Каждая из популярных систем управления сайтами предлагает свой взгляд на фундаментальные позиции в разработке и важные сущности в структуре и содержании страниц сайтов. По старинке все выделяют тегами div в HTML-странице:
- шапку;
- «тело» + меню (вертикальное или горизонтальное);
- левую и/или правую колонки как части тела или его дополнение;
- подвал.
В сложившемся обиходе разработчика все это звучит более прозаично: header, body, footer или «хедер», «контент» и «футер». Добавлять или нет левую и правую колонки, то есть разделять контент сайта на центральный поток данных, левую и правую сторону — компетенция разработчика и особенности решаемой задачи.
Использовать таблицы (table HTML) или дивы (div HTML) — особенной разницы нет. Можно вообще всю страницу «изложить» одним списком (ul и li): это свежо и экстравагантно, но работать будет. Выбор варианта верстки за разработчиком, но по сложившейся традиции все выбирают верстку блоками. Использовать HTML div и style CSS — просто, читабельно и продуктивно.
Добавляем отступ между контейнерами
Помните, я не рекомендовал использовать сокращенную версию кода для центрирования контейнера? Я говорю об этой версии:
CSS
.wrapper { margin: 0 auto; }
Она может привести к неполадкам, если на странице несколько контейнеров, и вы хотите добавить отступ между ними. Если вы зачем-то добавили другую вариацию класса к элементу wrapper, по определённым причинам у вас может не получиться добавить отступ.
CSS
.wrapper-variation { margin-top: 50px; } .wrapper { max-width: 1170px; margin-left: auto; margin-right: auto; padding-left: 16px; padding-right: 16px; }
Свойство margin не будет работать для элемента wrapper-variation, потому что оно противоречит свойству margin: 0 auto. Сокращенное свойство будет отменять полное. Чтобы избежать подобной путаницы, в таких случаях рекомендуется использовать полные свойства.
Теперь давайте перейдём к созданию отступа. В каждом проекте я подготавливаю несколько служебных классов и использую их по необходимости
Обратите внимание на следующую модель:
HTML
<div class="wrapper mb-5"></div> <section> <div class="wrapper"></div> </section> <div class="wrapper"></div>
CSS
.mb-5 { margin-bottom: 3rem !important; }
Благодаря подобному подходу, сам контейнер остаётся без изменений, а отступ добавляется к дополнительным служебным классам в CSS. Теперь вы, наверное, спросите, зачем мне создавать несколько контейнеров на странице, если я могу создать один? В HTML-коде, приведенном выше, между двумя контейнерами есть элемент <section>.
Здесь было бы полезно использовать декларацию !important, так как основная цель служебных классов в CSS, – сделать определенное свойство обязательным. Мы гарантируем это, добавляя !important.
Атрибуты¶
Атрибут | Значение | Описание |
---|---|---|
align | leftrightcenterjustify | Используется для выравнивания содержимого тега <div>.Не поддерживается в HTML5. Вместо атрибута align вы можете использовать CSS свойство text-align. |
Тег <div> поддерживает глобальные атрибуты и атрибуты событий.
Как добавить стиль к тегу <div> ?
Цвет текста внутри тега <div>:
- CSS свойство color определяет цвет контента и оформления текста.
- CSS свойство background-color устанавливает фоновый цвет элемента.
Стили форматирования текста для тега <div>:
- CSS свойство text-indent указывает размер отступа первой строки в текстовом блоке.
- CSS свойство text-overflow указывает, как будет отображаться пользователю строчный текст, выходящий за границы блока.
- CSS свойство white-space указывает, как будут отображены пробелы внутри элемента.
- CSS свойство word-break указывает перенос строки.
Другие свойства для тега <div>:
- CSS свойство text-shadow добавляет тень к тексту.
- CSS свойство text-align-last выравнивает последнюю строку текста.
- CSS свойство line-height устанавливает межстрочный интервал.
- CSS свойство letter-spacing устанавливает расстояние между буквами/символами в тексте.
- CSS свойство word-spacing устанавливает расстояние между словами в тексте.
Предостережения
Но псевдоклассы немного сложнее. Контекстные селекторы CSS first-of-type и last-of-type действуют только внутри своего родительского элемента. Другими словами, p:first-of-type выбирает первый элемент <p> в каждом элементе контейнера.
У нас есть один общий <div>, который обертывает контент (.page), поэтому для нас это не проблема. Но что произойдет, если мы добавим следующий код в нижнюю часть элемента .page:
<div class='sidebar'> <p>If this page had a sidebar...</p> <p>We’d have some problems with pseudo-classes.</p> </div>
Это иллюстрирует сложность применения псевдоклассов для структуры. Первый элемент <p> здесь также будет соответствовать p:first-of-type, потому что область применения псевдокласса ограничена родительским элементом.
Если вы не хотите затрагивать абзацы в боковой панели, и выбрать только первый <p> в контейнере <div class=’page’>, то нужно ограничить область его применения с помощью селектора дочерних элементов. Например:
.page > p:first-of-type { color: #7E8184; font-style: italic; }
Различные разработчики придерживаются разных «школ». Некоторым нравится семантическая природа псевдоклассов, в то время как другие доводят до крайности применение различных подробных атрибутов класса для каждого HTML-элемента.
Другая кнопка
Займемся второй кнопкой. Предполагается, что она имеет желтый фон, но мы изменили это кодом из предыдущего раздела. Наш селектор .button:link более «специфичен», чем текущее правило .call-to-action, поэтому он имеет приоритет.
Исправим такое положение вещей, применив к нашему правилу .call-to-action несколько псевдоклассов. Замените существующее правило следующим (убедитесь, что это определено после новых стилей .button из предыдущего раздела о дочерних селекторах в CSS):
.call-to-action:link, .call-to-action:visited { font-style: italic; background-color: #EEB75A; /* Желтый */ } .call-to-action:hover, .call-to-action:visited:hover { background-color: #F5CF8E; /* Светло-желтый */ } .call-to-action:active, .call-to-action:visited:active { background-color: #EEB75A; /* Желтый */ }
Мы назначили класс .call-to-action только для второй кнопки, поэтому только она станет желтой. Конечно, нам по-прежнему нужно, чтобы класс .button был назначен для обоих элементов <a>, поскольку он определяет общие стили, такие как отступы, радиус границы и размер шрифта.
Настройка
Для примера нам нужен только один HTML-файл и таблица стилей CSS. Создайте папку css-selectors и веб-страницу под названием selectors.html со следующей разметкой:
<!DOCTYPE html> <html lang='en'> <head> <meta charset='utf-8'/> <title>Селекторы CSS</title> <link rel='stylesheet' href='styles.css'/> </head> <body> <h1> Селекторы CSS</h1> <p>Селекторы CSS позволяют <em>выбрать</em> отдельный HTML-элемент в документе HTML. Это <strong>супер</strong> полезно.</p> <p>Классы чрезвычайно важны, так как они позволяют выбрать произвольные блоки на странице.</p> <p>Мы так же рассмотрим в этом примере ссылки, поэтому вот ссылка <a href='https://internetingishard.com'>Interneting Is Hard</a>, для которой нам нужно задать стили.</p> <div>Кнопка Один</div> </body> </html>
Теперь создадим в той же папке файл styles.css. Это все, что понадобится для изучения CSS селекторов.
Используем свойство Display: Contents
Для начала я вас познакомлю с этим значением. Каждый элемент в CSS является блочным; и этот блок содержит контент, границы, внутренние и внешние отступы. Если вы примените display: contents, этот блок будет исключен из потока. Я могу представить это как удаление открывающего и закрывающего тэгов вокруг него.
CSS
<header class="site-header"> <div class="wrapper site-header__wrapper"> <!-- Header content --> </div> </header>
CSS
.site-header__wrapper { display: flex; flex-wrap: wrap; justify-content: space-between; }
Возможно, в примере, приведенном выше, вам понадобится растянуть header на всю ширину страницы, вместо того, чтобы вписывать его в контейнер.
CSS
.site-header__wrapper { display: contents; } .site-header { display: flex; flex-wrap: wrap; justify-content: space-between; }
Таким способом элемент wrapper будет скрыт (в каком-то смысле). Теперь, когда мы применили display: flex к элементу site-header, объекты, принадлежавшие контейнеру, станут дочерними для элемента site-header.
Стили кнопок
Начнем с :link и :visited. Мы используем аналогичный подход, что и в предыдущем разделе о CSS селекторах родителя. Но поскольку это кнопки, то мы сохраним одинаковые цвета для состояний посещенная и не посещенная. Измените существующие правила .button следующим образом:
.button:link, /* Измените это */ .button:visited { /* Измените это */ display: block; /* Добавьте это */ text-decoration: none; /* Добавьте это */ color: #FFF; /* Все остальное остается без изменений */ background-color: #5995DA; font-weight: bold; padding: 20px; text-align: center; border: 2px solid #5D6063; border-radius: 5px; width: 200px; margin: 20px auto; }
Обратите внимание на новые псевдоклассы :link и :visited в селекторе. Без них стиль браузера по умолчанию для a:link не изменился бы
Теперь оформим состояние при наведении курсора.
.button:hover, .button:visited:hover { color: #FFF; background-color: #76AEED; /* Light blue */ }
Обе наши кнопки при наведении курсора будут окрашиваться в более светлый голубой цвет. Сделаем так, чтобы кнопки становились темнее, когда пользователь нажимает на них с помощью псевдокласса :active:
.button:active, .button:visited:active { color: #FFF; background-color: #5995DA; /* Blue */ }
Стили, которые мы только что определили, готовы к повторному использованию. Назначьте класс .button любому HTML-элементу, и вы превратите его в интерактивную кнопку.
Центрируем DIV внутри DIV-элемента с помощью inline-block
В этом методе центрирования div внутри div необязательно указывать ширину внутреннего элемента. Он будет работать во всех современных браузерах, включая IE8.
CSS
.outer-div { padding: 30px; text-align: center; } .inner-div { display: inline-block; padding: 50px; }
HTML
<div class="outer-div"><div class="inner-div"></div></div>
Свойство text-align работает только в inline-элементах. Значение inline-block позволяет отобразить внутренний div в качестве inline-элемента, а также в качестве блока (inline-block). Свойство text-align во внешнем div-элементе позволит нам центрировать внутренний div.
How to style tag?
Common properties to alter the visual weight/emphasis/size of text in <div> tag:
- CSS font-style property sets the style of the font. normal | italic | oblique | initial | inherit.
- CSS font-family property specifies a prioritized list of one or more font family names and/or generic family names for the selected element.
- CSS font-size property sets the size of the font.
- CSS font-weight property defines whether the font should be bold or thick.
- CSS text-transform property controls text case and capitalization.
- CSS text-decoration property specifies the decoration added to text, and is a shorthand property for text-decoration-line, text-decoration-color, text-decoration-style.
Coloring text in <div> tag:
- CSS color property describes the color of the text content and text decorations.
- CSS background-color property sets the background color of an element.
Text layout styles for <div> tag:
- CSS text-indent property specifies the indentation of the first line in a text block.
- CSS text-overflow property specifies how overflowed content that is not displayed should be signalled to the user.
- CSS white-space property specifies how white-space inside an element is handled.
- CSS word-break property specifies where the lines should be broken.
Other properties worth looking at for <div> tag:
Центрирование контейнера
Чтобы разместить контейнер в центре, вы должны присвоить свойству margin значение auto с левой и правой стороны. Смотрите пример, приведенный ниже:
CSS
.wrapper { max-width: 1170px; margin: 0 auto; }
Согласно спецификации CSS, auto margin работает следующим образом:
Если свойствам margin-left и margin-right присвоено значение auto, то размер отступа с обеих сторон будет одинаковым. Это горизонтально центрирует объект, относительно краёв содержащего блока.
Я использовал параметр «margin: 0 auto», который сбрасывает значение margin сверху и снизу до нуля, а справа и слева устанавливает значение auto. Пользуясь этим способом, можно ожидать некоторых последствий, о которых я расскажу в этой статье чуть позже.
Пока что рекомендую установить значения margin вручную.
CSS
.wrapper { max-width: 1170px; margin-left: auto; margin-right: auto; }
Более полезные div
Атрибут class применяется не только к элементам <p> — он может быть использован для любого элемента HTML. Взяв на вооружение селекторы классов CSS, можно сделать блоки <div> и <span> намного более полезными. Мы можем использовать их для создания, как отдельных элементов, так и произвольных разделов веб-страницы:
Начнем с отдельных элементов. На этот раз мы будем использовать класс вместо CSS селектора div. Добавьте следующий код в файл styles.css:
.button { color: #FFF; background-color: #5995DA; /* Синий */ font-weight: bold; padding: 20px; text-align: center; border: 2px solid #5D6063; /* Темно-серый */ border-radius: 5px; width: 200px; margin: 20px auto; }
Конечно, для этого нам нужен соответствующий атрибут класса. Измените <div> в файле selectors.html на следующий код:
<div class='button'>Кнопка Один</div>
Данный код позволяет использовать стили и для других элементов, а не только для кнопок.
Заголовки и простые блоки
HTML-страница в классическом понимании раскрывает тему. По сути, заголовок (title) определяет контекст страницы. Блоки информации именуются идентификаторами — это имя для программиста. Имя класса — это вовсе не имя, а ссылка на набор правил. Одному диву может быть назначено несколько классов, но только один идентификатор.
На практике для посетителя важен заголовок не только страницы в целом, но и тематики конкретного блока информации. Использовать div как title в HTML-коде удобно. Особенно это практично, когда заголовок используется в целях обработки и имеет конкретный смысл.
Возможность вложенности блоков друг в друга, корректное наложение блоков и их пересечение дают возможности для разработки продуктивных страниц и создания тематически законченных сайтов.
Exploring the Element in Practice
Let’s try a hands-on exercise to study how the element works. Erase everything in your file (if you added content from previous tutorials). Next, add the following CSS rule for the tag selector:
styles.css
Save the file. Next, return to your file, erase everything that’s there (except for the first line of code: ) and add the following code snippet:
index.html
Notice that the element has opening and closing tags but does not require any content. Save the file and reload it in your browser. (For instructions on loading an HTML file, please visit our tutorial step ).
Your webpage should display a green box 100 pixels wide and 100 pixels tall as specified by the CSS rule:
Now that you have a styling rule for your element, every element you add to your page will be styled in the precisely the same manner. However, when creating a website, it is unlikely that you will want all of your HTML elements to be styled in the same way. For this reason, developers often create classes that they can use to style elements in different ways.
To practice creating classes for elements, erase the CSS rule you just created and add the following new three CSS rulesets to the file:
In this code snippet, you have created styling rules for three different classes: , , and . Note that you have added a before the class selector as required when declaring CSS rules for classes.
Save the file and return to your file. Erase the element you just created and, add the three elements to your file, applying a class to each one that corresponds to the CSS class selectors that you defined in :
index.html
Note that you have added the class as an attribute to the tag by adding the class attribute and class name to each opening tag. Save the file and reload it in your browser. You should receive something like this:
Your webpage should display three elements, each styled with a different color and size according to their assigned CSS style rules. Note that each element starts on its own new line as elements are and have this default behavior.
Добавляем padding слева и справа
Важно не забыть добавить padding с левой и правой стороны. Если размер окна просмотра меньше максимальной ширины контейнера, то края контейнера будут соприкасаться с границами окна просмотра
CSS
.wrapper { max-width: 1170px; margin-left: auto; margin-right: auto; padding-left: 16px; padding-right: 16px; }
Добавляя padding, мы можем быть уверены, что слева и справа будет отступ в 16px, даже если ширина окна просмотра меньше максимальной ширины контейнера.
Свойство padding действует как подстраховка, не допускающая прилегания границ контейнера к границам окна просмотра, в случае нехватки места.
Definition and Usage
The textContent property sets or returns the text content of the specified node,
and all its descendants.
If you set the textContent property, any child nodes are removed and
replaced by a single Text node containing the specified string.
Note: This property is similar to the innerText property,
however there are some differences:
- textContent returns the text content of all elements, while innerText returns the content of all elements,
except for <script> and <style> elements. - innerText will not return the text of elements that are hidden with CSS (textContent will). Try it »
Tip: Sometimes this property can be used instead of the
nodeValue property, but remember that this property returns the text of all child nodes as well.
Tip: To set or return the HTML content of an element, use the innerHTML property.
Селекторы классов
Селекторы классов позволяют применять стили CSS к определенному элементу HTML. Они дают возможность различать элементы HTML одного и того же типа. Например, когда есть два элемента <div>, но необходимо задать стили только для одного из них. Для селекторов классов нужны:
- Указанный атрибут класса в элементе HTML;
- Соответствующий селектор классов CSS.
Можно использовать селектор классов, чтобы назначить стили для первого абзаца нашей страницы-примера. Сначала добавим к нужному абзацу атрибут класса:
<p class='synopsis'> Селекторы CSS позволяют <em>выбрать</em> отдельный HTML-элемент в документе HTML. Это <strong>супер</strong> полезно.</p>
Теперь стилизуем абзац <p class=’synopsis’> в файле CSS с помощью следующего кода:
.synopsis { color: #7E8184; /* Светло серый */ font-style: italic; }
Это правило применяется только к элементам с соответствующим атрибутом класса
Обратите внимание на точку (.) — префикс перед именем класса. Это отличает соседние селекторы CSS классов от селекторов типов:
Специфичность CSS
Порядок имеет значение, когда речь идет о свойствах, прописанных во внешней таблице стилей. При прочих условиях правила применяются сверху вниз. Это позволяет переопределять правила CSS селекторов атрибутов предсказуемым образом:
Но не все селекторы CSS равнозначны. «Специфичность CSS» — это значимость, установленная для различных категорий селекторов. Это означает, что некоторые селекторы всегда будут переопределять другие независимо от того, какую позицию они занимают в таблице стилей.
Если вы добавите следующий код после существующих правил .call-to-action, он переопределит заданный ранее цвет фона. Если вы разместите его в верхней части файла, он сам будет переопределен, и наша кнопка не станет красной. Это ожидаемое поведение:
.call-to-action:link, .call-to-action:visited { background-color: #D55C5F; /* Красный */ }
Теперь посмотрите, что происходит, когда мы пытаемся сделать то же самое с помощью селектора идентификатора. Во-первых, обязательно удалите предыдущий фрагмент кода, а затем попробуйте добавить приведенный ниже код до существующих правил .call-to-action:
#button-2 { background-color: #D55C5F; /* Красный */ }
CSS селекторы идентификаторов имеют более высокую специфичность, чем селекторы классов, поэтому вторая кнопка будет красной, даже если мы зададим фоновый цвет с помощью .call-to-action:link ниже. Концепция «порядок имеет значение» работает только тогда, когда все правила имеют одинаковую специфичность:
Специфичность селекторов, которые мы рассматривали в этой статье, показана ниже: от максимальной до минимальной:
• #button-2 • .button:link и .synopsis em (они равнозначны) • .button • a:link • a
Иногда это приводит к путанице. Это настолько серьезная проблема, что была разработана целая методология под названием «BEM». Суть BEM заключается в попытке обеспечить то, чтобы правила CSS были многоразовыми, сделав все селекторами классов. Это исключает возможность возникновения проблем.
Дивы контейнеров
Помните, что <div> не изменяет семантическую структуру страницы. Это делает его отличным инструментом для определения представляемой структуры веб-страницы. Обертывая HTML-элементы в теги <div>, можно создать сайт с помощью более крупных фрагментов, не влияя на то, как поисковые системы просматривают наш контент:
Попробуем создать макет фиксированной ширины с использованием метода автополей. Сначала оберните весь документ в <div> и присвойте ему уникальный класс:
<body> <div class='page'> <!-- Добавьте это --> <h1> Селекторы CSS</h1> <p class='synopsis'>Селекторы CSS позволяют <em>выбрать</em> отдельный HTML-элемент в документе HTML. Это <strong>супер</strong> полезно.</p> <p>Классы чрезвычайно важны,, так как они позволяют выбрать произвольные блоки на странице.</p> <p>Мы так же рассмотрим в этом примере ссылки, поэтому вот ссылка <a href='https://internetingishard.com'>Interneting Is Hard</a>, для которой нам нужно задать стили.</p> <div>Кнопка Один</div> </div> <!-- Добавьте это --> </body> Затем добавьте следующий код в файл styles.css: .page { width: 600px; margin: 0 auto; }
Независимо от того, как будет изменяться размер окна браузера, веб-страница всегда будет иметь ширину 600 пикселей и выравниваться горизонтально по центру доступного пространства
Обратите внимание, что то же самое мы раньше делали для кнопки, но теперь мы делаем это с несколькими элементами одновременно, вложив их в общий контейнер:. Именно таким образом определяются более сложные макеты веб-страниц
Например, если на нашей странице была бы боковая панель, мы бы вложили все ее элементы в другой
с классом .sidebar
Именно таким образом определяются более сложные макеты веб-страниц. Например, если на нашей странице была бы боковая панель, мы бы вложили все ее элементы в другой <div> с классом .sidebar.
Без CSS селекторов атрибутов классов, которые позволяют дифференцировать элементы <div>, ничего из этого не было бы возможно.
Краткий обзор элемента
Давайте посмотрим на практике, как работает элемент <div>. Сотрите все, что есть в файле styles.css (если вы добавляли в него код из предыдущих мануалов серии). Затем добавьте следующее CSS правило для селектора тега <div>:
Сохраните файл styles.css. Затем откройте файл index.html, сотрите все, что там есть (кроме первой строки кода: <link rel=”stylesheet” href=”css/styles.css”>), и добавьте следующий фрагмент:
Обратите внимание, элемент состоит из открывающего и закрывающего тега, но не требует какого-либо контента. Сохраните файл index.html и перезагрузите его в браузере
Если вы не знаете, как просматривать оффлайн-файл HTML, пожалуйста, обратитесь к нашему мануалу по работе с HTML-элементами (раздел «Просмотр оффлайн HTML-файла в браузере»)
Сохраните файл index.html и перезагрузите его в браузере. Если вы не знаете, как просматривать оффлайн-файл HTML, пожалуйста, обратитесь к нашему мануалу по работе с HTML-элементами (раздел «Просмотр оффлайн HTML-файла в браузере»).
На вашей веб-странице должно появиться зеленое поле шириной 100 пикселей и высотой 100 пикселей, согласно CSS-правилу:
Теперь, когда у вас есть правило стиля для элемента <div>, каждый элемент <div> на вашей странице будет оформлен точно так же. Но чаще всего на элементы <div> должны быть стилизованы по-разному. По этой причине для стилизации элементов <div> разработчики часто используют классы.
Чтобы попрактиковаться в создании классов для <div>, удалите из файла styles.css только что созданное CSS-правило и добавьте следующие три новых набора правил:
В этом фрагменте содержатся правила стиля для трех разных классов: div-1, div-2 и div-3
Обратите внимание, имена селекторов классов начинаются с точки
Сохраните файл styles.css и перейдите в файл index.html. Сотрите только что созданный элемент <div> и добавьте три новых элемента, применив к каждому из них класс, который соответствует селекторам CSS из файла styles.css:
Обратите внимание, класс добавляется в качестве атрибута к тегу : для этого нужно указать атрибут class и имя класса в открывающем теге . Сохраните файл и перезагрузите его в своем браузере
Вы должны получить такой результат:
На вашей веб-странице будет три элемента
, каждый из которых отличается по цвету и размеру в соответствии с присвоенным ему правилом стиляОбратите внимание, каждый элемент указывается с новой строки, поскольку элементы являются блочными элементами и это их поведение по умолчанию