div, span и display | Основы HTML, CSS и веб-дизайна
Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером
В этом уроке мы познакомимся с принципами, по которым элементы выводятся на страницу и получают определённый размер.
display
У элементов есть свойство display
. Оно задаёт то, как элемент выводится на экран.
Здесь к слову display можно относиться как к глаголу: to display — показывать, выводить на экран.
See the Pen Block and inline by Hexlet (@hexlet) on CodePen.
display: block
начинается с новой строки и занимает всю ширинуdisplay: inline
начинается в любом месте и занимает столько ширины, сколько нужно для помещения содержания
Всего у этого свойства 20 возможных значений, но прямо сейчас остальные не так важны.
Браузер обычно применяет базовые стили по умолчанию ко многим элементам. Например, элемент p
по умолчанию имеет display: block
.
Разные браузеры могут задавать разные стили по умолчанию, и иногда эти стили могут отличаться. Поэтому одна и та же страница может выглядеть по-разному в разных браузерах. Это в основном касается размеров и отступов. Для решения этой проблемы существуют так называемые CSS Reset — наборы CSS-стилей, которые «сбрасывают» браузерные стили.
Вот пример таких reset-стилей.
div & span
Элемент p
имеет семантическое значение. Он определяет абзац текста.
Такой элемент не стоит использовать там, где это по смыслу не имеет значения. Например, не стоит помещать в p
меню с кнопками для навигации по сайту.
Два самых используемых элемента — div
и span
— не имеют семантического значения. Они нужны исключительно для структуры и стилей.
div
— это блочный (block-level) элемент, у него свойствоdisplay: block
.span
— это строчный (inline-level) элемент, у него свойствоdisplay: inline
.
Конечно, вы можете изменить эти свойства в своём CSS, но лучше так не делать. В целом, лучше не менять базовые свойства у типов элементов, а добавлять классы по необходимости.
div
обычно используется для определения какого-то крупного блока на странице. А
— для небольшого элемента на строке.
<div> <p> После Второй мировой войны <span>Нью-Йорк</span> стал одним из неоспоримых мировых городов-лидеров. </p> <p> Строительство штаб-квартиры ООН в Нью-Йорке символизировало уникальное политическое значение города. </p> </div>
Блочная модель
Каждый элемент на странице — прямоугольник. Это, пожалуй, самое важное утверждение в вёрстке веб-страниц. В примере в начале этого урока это можно заметить: мы задали параграфам фоновый цвет, и стало видно: каждый параграф — это прямоугольник.
У каждого прямоугольника есть несколько свойств, влияющих на размер:
- width, height — ширина и высота элемента
- padding — отступ внутри элемента (расстояние от содержания до границы прямоугольника)
- border — толщина границы (обводки)
- margin — отступ снаружи элемента (расстояние от границы прямоугольника до соседних элементов)
Давайте сделаем элемент, в котором явно видно все эти части:
See the Pen Div Box by Hexlet (@hexlet) on CodePen.
Мы использовали значение inline-block
у свойства display
. Это в какой-то степени комбинация inline
и block
. Элемент не занимает всю ширину и может находится на одной строке с другими элементами. При этом у него можно задать параметры, свойственные block
: конкретную ширину и высоту.
Сколько же места требуется всему элементу? Нужно сложить показатели:
- Высота: высота элемента + внутренний отступ + толщина границы + внешний отступ (height + padding + border + margin) — 70 + 10 + 8 + 15 = 103px
- Ширина: ширина элемента + внутренний отступ + толщина границы + внешний отступ (width + padding + border + margin) — 100 + 10 + 0 + 15 = 125.
Границы и отступы можно задать свои для каждой из сторон:
#box2 { width: 100px; height: 70px; border-top: 8px solid #001f3f; margin-left: 15px; margin-top: 5px; padding-left: 10px; padding-top: 10px; }
Вам ответят команда поддержки Хекслета или другие студенты.
DIV должен уйти: улучшаем HTML / Хабр
Во многих домах есть комната, существующая только потому, что вокруг неё возвели четыре стены, и теперь ей нужно какое-то предназначение. В результате такие «комнаты-заглушки» используются чаще, чем все остальные комнаты дома, хоть изначально они для этого и не предназначались.
Тег div
во многом напоминает такие комнаты. Он является чистым листом. Он подходит для любого потока, позволяет управлять своими функциями, и может становиться всем, что мы пожелаем. Целые веб-сайты могут создаваться (и создаются) почти исключительно на одних div
. Загуглите «single div designs», и вы найдёте бесчисленное множество дизайнеров, демонстрирующих свои навыки владения CSS, превращая один div в любую форму, которая им понадобится.
Иногда это вселяет трепет, но этой статье я хочу сказать, что нам следует двигаться дальше, к миру без div с именами классов или ID. В мир уникальных элементов HTML. Семантического HTML. Нам нужно сосредоточиться на основах.
После прочтения твита Хамона Холмгрена я создал проект со скучным названием Custom HTML Tags. В этом твите он говорит, что не стоит использовать div с именами классов для создания HTML-компонентов, а вместо этого применять специализированные теги HTML.
Красота в простоте. Специализированные теги HTML по умолчанию являются div-ами. Просто убрав точку-префикс перед именами классов, мы можем сохранить точно такие же стили, как и раньше. Соответствующие HTML и CSS будут более семантичными, а также потребуют меньше символов.
Задайтесь вопросом: сколько имён классов я назначил div-ам за свою жизнь? Когда вы ищете эти компоненты в своём HTML, то вы ищете сам div или имена классов?
Я изучил эти вопросы в своём проекте, превратившемся в мысленный эксперимент, и выяснил, что не только могу создать целую веб-страницу совершенно без использования div, но и могу уменьшить размер сайта, стилизовать всё при помощи правильного конвейера сборки и собрать самый маленький проект за всю свою жизнь.
anubisthejackle/custom-html-tags — этот проект в первую очередь является мысленным экспериментом. Скорее всего, он ещё очень сырой.
Я не специалист по доступности для людей с ограниченными возможностями, и не хочу им притворяться. Моя цель заключалась в создании этого проекта, а решать проблемы доступности я буду по мере их возникновения. Я связался со всеми специалистами по доступности, которых смог найти в Twitter, попросил их изучить страницу и дать свои рекомендации.
Также я отсканировал страницу несколькими сканнерами доступности. Она оказалась неидеальной, но мне кажется, результаты достаточно хороши, чтобы прекратить любые споры о том, что специализированный HTML никогда не сможет стать доступным для людей с ограниченными возможностями.
Я не дизайнер, и я не хотел тратить много времени на CSS, поэтому выбрал для этого проекта Tailwind CSS. Однако я не стал добавлять классы в HTML, потому что намеревался разделить концепции. Я воспользовался apply в таблице стилей, чтобы применить стили Tailwind непосредственно к специализированному HTML, при необходимости добавляя любые нужные мне специализированные CSS.
Как ни странно, мне показалось, что такой способ использования Tailwind демонстрирует его истинный потенциал. Мы сосредоточились на том, что встраиваемые классы являются эквивалентом встраиваемых стилей, и совершенно забыли про функцию apply.
Благодаря правильному конвейеру сборки мне удалось уменьшить размер таблицы стилей, оставив в нём только самое необходимое для работы страницы. То же самое относится и к JavaScript, а также к HTML. Все они миниатюризированы, что ускоряет загрузку страницы.
Можно ли реализовать то же самое на основе своих стилей, а не Tailwind? Разумеется. Tailwind необязателен, но в этом проекте я не хотел много думать над CSS, поэтому нашёл простое в настройке и использовании решение. Если вкратце, то он просто работает.
В этом проекте JavaScript использовался только для добавления доступности. До момента внесения обновлений для улучшения доступности специализированные теги HTML просто были эквивалентны стандартным конфигурациям div браузера, и это вполне работало. Но базовые теги HTML содержат аспекты, которые большинство разработчиков не учитывает: параметры ARIA по умолчанию.
Без них инструменты обеспечения доступности не знают, как работать с тегами, и от них не надо этого ожидать. Тем не менее, несложно создать специализированные элементы в JavaScript и назначить им необходимые атрибуты ARIA.
Сам по себе проект никогда не был рассчитан на практическое использование. Это был доведённый до крайности мысленный эксперимент для демонстрации того, насколько далеко мы можем зайти. Идея заключалась в том, что если мы можем дойти до такого большого масштаба, то нет никаких препятствий для реализации этого принципа в более мелких и сфокусированных масштабах.
Именно это я и выяснил. После освоения основ такую систему можно реализовать не полном масштабе, но и в относительно простой форме. Нет никаких причин не использовать специализированные теги HTML для отдельных компонентов в продакшн-проекте.
Если вкратце, то не существует абсолютно никаких причин для обязательного использования div в своих проектах.
Так зачем его использовать?
На правах рекламы
Серверы с бесплатной панелью управления VestaCP или HestiaCP для максимально удобного и быстрого размещения сайта. Любой параметр сервера (CPU, RAM, NVMe) можно увеличить в любой момент в пару кликов через удобную панель управления собственной разработки.
Подписывайтесь на наш чат в Telegram.
Видео курс HTML и CSS. Урок теги div и span
Здравствуйте, уважаемые слушатели.
Мы с вами продолжаем курс лекций по HTML. Сегодня поговорим о тегах div span. Посмотрим на тег div. Давайте посмотрим, как можно сделать такую вот разметку страницы. Вы помните наш предыдущий урок, там мы изучали таблицы, и вы наверно думаете, что такую разметку можно сделать как раз с их помощью. Вот здесь можно создать и объединить их и здесь тоже. Давайте подумаем, какие могут быть недостатки в таком способе создания данной страницы.
Я создаю первую строку, за ней вторую. Создаю в них ячейки. Что, если я захочу создать вот здесь ячейку шире? Верхняя ячейка автоматически расширится до нижней. Если я захочу создать вложенную ячейку. Должен быть какой-то механизм, позволяющий делать такие вещи проще и быстрее. Таким тегом и является тег div.
С его помощью мы легко можем создавать такие страницы без использования таблиц. Тег <div> предназначен для создания слоя.
Давайте посмотрим, как он используется. Обратите внимание, мы указывается открывающийся тег и закрывающийся, а между ними содержимое контейнера.
Открываем первый пример начинаем наше знакомство.
Вот мы видим атрибут <style> , задающий какой-то стиль, background задает фон и т.д. Давайте запустим пример и посмотрим. Здесь мы видим желтую полосу – это и есть наш контейнер. Давайте еще посмотрим примеры.
Здесь мы видим три контейнера. Давайте запустим. Они выводятся в порядке очередности.
Поговорим более детально о данном теге.
Тег <div> более гибкий тега <table>.
Размеры блока задают с помощью свойств <width> и <height>.
Точка с запятой обязательно.
Давайте посмотрим на примерах.
Вот у нас тег <div>. Запустим пример. Вот вывелся такой квадрат. Думаю, понятно, что ширину и высоту мы задали и получили вот такой пример.
Давайте посмотрим дальше. Вот у нас три контейнера. Вот у нас был похожий пример. Только тут мы не задавали ширину и высоту.
Давайте поговорим о вложенности, что мы можем размещать в теге <div>.
Давайте поговорим о позиционировании слоев.
Эти слои расположены друг за другом. При этом мы задали им какие-то размеры: ширину и высоту. Вот здесь мы еще видим отступ. Размер слоя по вертикали определяется содержимым.
Оговорим об обтекании и о свойстве float. Элементы автоматически располагаются по вертикали. Если же нам нужно разместить их по горизонтали, то следует использовать свойство float.
Мы можем наш элемент разместить как с правого края страницы, так и с левого. Свойство может принимать 3 значения.
Давайте посмотрим, как это все работает.
Сразу же запустим данный пример. Вот у нас тег. Этот текст находится в контейнере. В теле <body> у нас есть тег <div>, в котором свойству float присвоено значение right. В данном случае обтекания у нас не видно, но выравнивание мы можем наблюдать. Давайте попробуем изменить. Напишем left. Вот что у нас получится. Обратите внимание. Высота текста указывает, какая должна быть высота нашего элемента. Ширина нашего элемента также может задаваться.
Видите, когда не указываем свойство float или задаем ему значение NULL, результат один и тот же.
Посмотрим дальше. На 9, 10, 11 строках мы указываем тег div, в свойстве указано, что элемент будет находиться справа страницы. Заметим, что наш элемент будет обтекаем. Как только выполнится 10 строка, новый тег будет изображен вот так, потому что желтый обтекаем с левой стороны.
Далее зеленый также обтекаем с левой стороны.
Запустим и посмотрим. Вот наши элементы.
Давайте посмотрим еще пример. Последний на свойство float. Отличие с предыдущим примером – это выравнивание по левой стороне. Давайте предположим, как они будут расположены в нашем браузере. Наши элементы теперь будут обтекаемы справа.
Давайте с вами посмотрим, правильно ли мы предположили.
Посмотрим теперь на свойство clear. Оно отменяет обтекание или запрещает обтекание элемента с указанной стороны.
Посмотрим на наш рисунок. Допустим, мы хотим отменить обтекание вот этого нижнего элемента.
Для этого нам нужно использовать свойство clear. Наиболее используемым его значением является both, которое убирает обтекание с обеих сторон нашего слоя.
Давайте откроем пример. Вот у нас указано три слоя. Вот указано, что этот слой будет обтекаем по правой стороне и будет находиться с у самой крайней границы страницы.
Мы хотим добиться отмены обтекания с двух сторон. Давайте посмотрим, как это будет выглядеть. Обтекание по правой стороне разрешено, поэтому зеленый сразу за желтым и расположился. На третьей строке отменено обтекание. Давайте уберем свойство clear. Вот что у нас получается.
Поговорим теперь о вложенности слоев. С помощью таблиц – это довольно трудоемко.
Вот мы видим три вложенных слоя. Синий, желтый и т.д. давайте посмотрим, как это все реализовать.
Очевидно мы можем нарисовать такой вот один слой, далее следующий, а далее внутри них разместить еще слои.
Для этого нужно нарисовать два базовых слоя и разместить в них еще по два слоя.
Мы указываем ширину, высоту, фон. Вот у нас еще один тег. Все то же самое: ширина, высота, фон. Посмотрим, как это сработает. Видите, высота каждой по 200 пикселей, в сумме выходит 400, и ширина также 400 пикселей. Теперь в каждом из этих элементов разместим квадраты.
Давайте разбираться, как это можно сделать.
Розкоментируем вот эту строку и эту. Что у нас получится. В нашем теге div мы указали еще два таких же тега div. И здесь также. Давайте посмотрим, что получилось.
Вот этот тег отработал, вот этот и т. д.
Изначально мы вывели некую заготовку и в ней разместили еще два тега и вот такое получили.
Свойство padding. Желтым у нас показано содержимое элемента, синим – сам наш элемент. Давайте смотреть, как это реализуется. Запустим и посмотрим. Вот у нас появился такой квадрат. Текст в нем размещен на расстоянии 30 пикселей сверху, слева и справа. Вниз больше потому, что мы так задали размер нашего слоя.
Давайте нажмем F12. У нас появилось такое вот дополнительное меню. Что мы можем увидеть? Знакомую нам разметку. Давайте выберем ее и справа у нас появляется такая вот подсказка, которая укажет мне, где находится мой слой. Зеленым у меня подсвечен отступ – padding. Будем еще изучать свойство margin. Оно отвечает за отступы от границ элемента до границ соседних либо родительских элементов.
Вот представьте себе, что вот это наш слой, стрелками обозначены отступы. Это как раз и есть отступы до соседних или родительских элементов.
Здесь у нас дано два слоя. Первый 200 на 200 пикселей, margin – 0 пикселей. В следующем — margin – 0 пикселей. Запустим и посмотрим. Вот здесь у нас 0 пикселей. Вот это расстояние 30 пикселей, вот это – тоже 30 пикселей.
Вот у нас 200 на 200, padding – 0, margin – 0.
Здесь margin – 30 пикселей.
Познакомимся немного детальней с темой отступов.
Можете заметить, что у нас здесь есть новый параметр auto. Он говорит о том, что отступы следует сделать равными с обеих сторон.
Посмотрим на примере, как это работает.
Если задаем 4 параметра, то порядок будет по часовой стрелке.
Посмотрим на примерах.
На 13 строке у нас указан слой синего цвета. В нем вложен слой, который будет желтым. Ему передано два параметра — 200 пикселей и auto. Вот слой, который нас интересует. Вот у нас 200 пикселей. Нажмем F12 и посмотрим, что нас такое auto. Я выбрал желтый цвет. Тут указан margin 200 пикселей, и с помощью параметра auto указано расстояние 100 пикселей.
Вот здесь у нас осталось по 100 пикселей.
Давайте смотреть следующий пример.
Давайте посмотрим, как это будет выглядеть в браузере.
Здесь у нас передано 4 параметра. По часовой стрелке у нас указано 10, 20, 30 пикселей.
Также можно создать отступы для конкретной стороны с помощью свойств padding-top, padding-bottom и т.д.
Если укажите padding-top, то будет отступ только сверху и т.д.
Вот наш слой. Padding – это отступ от нашего содержимого до границ слоя. В данном случае кругом 40.
Давайте изменим пример и запустим. Сверху, слева и справа у меня стали нули, а снизу у меня 40 пикселей. Попробуем еще раз изменить. Вот 40 пикселей справа.
Рассмотрим теперь следующий тег <span> </span>.
Он применяется для форматирования текста.
В этом теге мы указываем стиль, цвет. Текст внутри этого элемента приобретает все свойства, определенные в открывающемся теге.
Следует отметить, что вот эту рекомендацию относительно аккуратности использования нужно учитывать.
HTML | Tag Div — Geeksforgeeks
7 9 . . . . . . |
HTML-тег div — использование, атрибуты, примеры
❮ Пред. Следующий ❯
Тег
Мы рекомендуем использовать тег
Попробуй сам "
position: relative не влияет на позиционирование элементов в обычном потоке, если вы не добавите смещения.
Атрибуты
Тег
Как оформить тег
Общие свойства для изменения визуального веса/выделения/размера текста в теге
- Свойство CSS font-style устанавливает стиль шрифта. нормальный | курсив | наклонный | начальная | наследовать.
- Свойство CSS font-family задает приоритетный список из одного или нескольких имен семейств шрифтов и/или общих имен семейств для выбранного элемента.
- Свойство CSS font-size устанавливает размер шрифта.
- Свойство CSS font-weight определяет, должен ли шрифт быть полужирным или толстым.
- Свойство CSS text-transform управляет регистром текста и регистром символов.
- Свойство CSS text-decoration определяет украшение, добавляемое к тексту, и является сокращенным свойством для text-decoration-line, text-decoration-color, text-decoration-style.
Раскрашивание текста в теге
- Свойство CSS color описывает цвет текстового содержимого и оформления текста.
- Свойство CSS background-color устанавливает цвет фона элемента.
Стили макета текста для тега
- Свойство CSS text-indent определяет отступ первой строки в текстовом блоке.
- Свойство CSS text-overflow указывает, как пользователь должен сигнализировать о переполненном содержимом, которое не отображается.
- Свойство CSS white-space указывает, как обрабатывается пробел внутри элемента.
- Свойство CSS word-break указывает, где строки должны быть разорваны.
Другие свойства тега
- Свойство CSS text-shadow добавляет тень к тексту.
- Свойство CSS text-align-last задает выравнивание последней строки текста.
- Свойство CSS line-height определяет высоту строки.
- Свойство CSS letter-spacing определяет интервалы между буквами/символами в тексте.
- Свойство CSS word-spacing задает расстояние между словами.
Как центрировать элемент Div с помощью CSS Grid
В этой статье мы рассмотрим четыре способа центрирования элемента div по горизонтали и вертикали с помощью CSS Grid. Конечно, эти методы центрирования можно использовать для любого элемента. Ранее мы рассмотрели, как центрировать элементы по горизонтали и вертикали с помощью Flexbox и позиционирования с помощью преобразований.
Настройка
Давайте сначала создадим контейнер с простым элементом коробки внутри него, который мы будем использовать для демонстрации этих методов центрирования. Вот HTML:
<статья> <дел>дел> статья>
А вот и наш стартовый CSS:
article { ширина: 100%; мин-высота: 100вх; фон: черный; отображение: сетка; } дел { ширина: 200 пикселей; фон: желтый; высота: 100 пикселей; }
Во всех наших примерах мы будем использовать дисплей: свойство сетки
. Это устанавливает элемент
в качестве контейнера сетки и создает сетку на уровне блоков для этого контейнера. (Вот наш демонстрационный шаблон на CodePen, если вы хотите с ним поэкспериментировать.)
Теперь давайте рассмотрим различные способы центрирования нашего блока div.
1. Центрирование элемента Div с помощью CSS Grid и размещение
Мой любимый способ центрирования элемента с помощью Grid — использование свойства place-self
. (Подробнее об этом можно прочитать здесь.)
Центрировать наш div очень просто:
article { отображение: сетка; } дел { место-я: центр; }
См. Pen
Centering Using Grid and place-self от SitePoint (@SitePoint)
на CodePen.
Свойство place-self
является сокращением для свойств align-self
(по вертикали) и justify-self
(по горизонтали) (которые полезны, если вы просто центрируете по одной оси). Вы можете поэкспериментировать с ними в этой демонстрации CodePen.
Использование place-self
настолько просто, что это очевидное решение. Но это не единственный способ центрировать элемент с помощью сетки, поэтому давайте теперь рассмотрим некоторые другие методы.
Преимущество использования place-self
заключается в том, что он применяется к центрируемому элементу, а это означает, что вы также можете использовать его для центрирования других элементов в том же контейнере. (Попробуйте добавить больше элементов div в демо-версию CodePen и посмотрите, что получится.)
2. Центрируйте Div с помощью CSS Grid, justify-content и align-items
Давайте теперь посмотрим, что связано с использованием Grid с justify-content
и align-items
для центрирования нашего div.
Свойство justify-content
используется для выравнивания элементов контейнера по горизонтали, когда элементы не используют все доступное пространство. Есть много способов установить свойство justify-content
, но здесь мы просто установим его на center
.
Как и свойство justify-content
, свойство Свойство align-items
используется для выравнивания содержимого в контейнере, но оно выравнивает содержимое по вертикали, а не по горизонтали.
Вернемся к нашему тестовому HTML и добавим в родительский контейнер следующий код:
article { отображение: сетка; выравнивание содержимого: по центру; выравнивание элементов: по центру; }
См. Pen
Centering Using Grid, align-self и justify-self от SitePoint (@SitePoint)
на CodePen.
Очевидным преимуществом этого метода является то, что он требует меньше кода, так как центрирование выполняется контейнером. Но в некотором смысле нацеливание на div через его контейнер также является недостатком, поскольку это также повлияет на любой другой элемент в контейнере.
3. Центрирование Div с CSS Grid и Auto Margins
Как всегда, мы нацелимся на родительский контейнер с display: grid
. Мы также назначим блоку div автоматическое поле, используя поле : auto
. Это заставляет браузер автоматически вычислять доступное пространство вокруг дочернего элемента div и делить его по вертикали и горизонтали, размещая элемент div посередине:
article { отображение: сетка; } дел { маржа: авто; }
См. Pen
Центрирование элемента с помощью CSS Grid, выравнивание содержимого и выравнивание элементов от SitePoint (@SitePoint)
на CodePen.
(Кроме того, есть много других интересных вещей, которые вы можете делать с полями CSS.)
4. Центрирование Div с CSS Grid и размещением элементов
Свойство place-items
используется для выравнивания элементов по вертикали и горизонтали в сетке. Его можно использовать для центрирования нашего div, ориентируясь на контейнер следующим образом:
article { отображение: сетка; место-предметы: центр; }
См. Pen
Center a Div с сеткой CSS и автоматическими полями от SitePoint (@SitePoint)
на CodePen.
Подобно свойству place-self
, place-items
является сокращением для двух свойств, в данном случае justify-items
(по горизонтали) и align-items
(по вертикали). Вы можете поэкспериментировать с ними в этой демонстрации CodePen.
В отличие от place-self
, place-items
применяется к контейнеру, что делает его немного менее гибким.
Заключение
Каждый из этих методов позволяет центрировать элемент div по горизонтали и вертикали внутри контейнера. Как я уже сказал, я предпочитаю метод place-self
, главным образом потому, что он применяется к центрируемому элементу, а не к контейнеру. То же самое для поля : метод auto
. Но, конечно, если вы хотите центрировать свой элемент только в одном направлении, вы также можете использовать либо align-self
, либо justify-self
.