Блочная верстка тегов div html
Содержание:
- CSS классы — когда их использовать
- HTML Tutorial
- Селекторы class и id
- Допустимые значения
- Зачем использовать div в HTML?
- How to style tag?
- Псевдо-классы
- Фон
- Адаптивный фон, фиксированный контент
- Сущность блока информации
- Основные правила создания макета с помощью элементов сетки Bootstrap
- Сетка и колонки
- Способ отображения контейнера
- Минимальные и максимальные значения ширины и высоты блочного элемента
- Using The class Attribute
- Общая структура и логика веб-страницы
CSS классы — когда их использовать
Когда у вас на странице есть повторяющиеся элементы, которые должны иметь одинаковое оформление, нужно использовать CSS классы. Для этого необходимо выполнить два шага:
Шаг 1 — добавить класс в HTML
Чтобы повлиять на внешний вид HTML-страницы, вы должны сначала разметить элементы с атрибутом class=»class-name». Вот пример:
<div class="box"> Контейнер 1 </div> <div class="box"> Контейнер 2 </div> <div class="box"> Контейнер 3 </div>
В данном примере я хочу создать три контейнера одинакового размера. Возможно, я захочу запустить галерею изображений, или поместить в них изображения в качестве HTML — ссылки для перехода на другие страницы. При этом все контейнеры должны быть одинаковыми.
Давайте посмотрим, что нужно сделать в нашем CSS:
div.box{ height:200px; width:200px; text-align:center; font-size:14px; color:#090; background-color:#ddd; margin-right:10px; }
Чтобы задать правило для определенного тега с CSS классом, а не просто определить tagname{ }, мы используем tagname.classname{ }. Точка между tagname и classname является тем, что определяет правило как CSS класс
Также обратите внимание, что там нет пробелов. Если поставить пробел в правиле, то оно не будет работать так, как вы планировали
В этом примере использовалось свойство margin-right:10px. Эта строка гарантирует, что между тремя контейнерами сохраняется пространство в 10 пикселей. Свойство float со значение left обеспечивает, чтобы все контейнеры размещались слева.
Такое сочетание должно дать вам что-то вроде этого:
Если вы не укажете класс
Чтобы показать вам, что ваш CSS класс изображения box применяется только там, где вы хотите, поместите дополнительный элемент <div> после «Контейнер 3»:
<div> Контейнер 4 </div>
Обновите страницу. Вы увидите, что ни одно из правил, установленных в div.box {} не применяется. Потому что вы не указали значение класса.
Вот почему этот вариант использования классов CSS более гибкий, чем простое tagname{ }. На странице может быть много элементов <div>, но стили будут применяться только к тем, в которых задано соответствующее значение атрибута class!
Использование более чем одного класса
В современном веб-дизайне для элемента иметь только один класс CSS — редкость. Давайте возьмем наши три квадрата и посмотрим, что произойдет, если вы захотите перекрасить каждый из них.
Чтобы указать, что вы хотите использовать в CSS несколько классов, нужно добавить следующий класс через пробел. Как здесь:
<div class="box red"> Контейнер 1 </div> <div class="box green"> Контейнер 2 </div> <div class="box blue"> Контейнер 3 </div>
Расположение каскадом
Поскольку стили CSS используют каскадный порядок, вы размещаете свои классы по уровню важности. В данном случае мы хотим, чтобы класс class=»box» применялся перед class=»red»
Иначе class=»red» будет применяться до class=»box». Надеюсь, это понятно!
Изменим наш код CSS:
div.box{ height:200px; width:200px; text-align:center; font-size:14px; color:#090; background-color:#dddddd; margin-right:10px; } div.red{ background-color:#ffcccc; } div.green{ background-color:#ccffcc; } div.blue{ background-color:#ccccff; }
Поскольку у каждого из трех контейнеров есть CSS класс .box, к ним всем применяются свойства, прописанные в div.box. Но к каждому <div> применяется также дополнительный класс (red, green, или blue). Конечный результат:
Примечание:div.boxbackground-color:#ccccccцветовыеbox redbackground-colordiv.reddiv.boxCSSHTML
CSS классы при создании макета сайта
Подумайте, для каких элементов нужно использовать CSS классы при верстке макета страницы. Вот некоторые мысли для подсказки:
- Любые изображения, которые вам захочется сделать иконками или изображением товара, придется сделать в форме квадрата: например img.thumbnail{ width:200px;height:200px; };
- Стили ссылок для кнопок должны определяться отдельно от стилей обычных ссылок. Например, a.button {};
- Нужно применить другой цвет при наведении курсора на ссылки в вашей навигации. Например, a.nav:hover{ } a.nav: Hover {}.
Классы DR CSS; TL
Эффективное использование классов позволяет элементу страницы дать имя, которое понимает CSS. Используя эти «имена» можно применить один ряд правил для нескольких экземпляров элемента без повторного определения кода CSS.
И поскольку они располагаются каскадом, порядок в котором вы размещаете свои классы в HTML, действительно имеет значение, так что следите за этим.
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 TablesHTML 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
Селекторы class и id
В примере выше мы имеем 3 селектора – это p, div span, ul li. То есть весь наш файл стилей состоит из селекторов и их свойств. Наиболее удобно и наглядно, особенно новичкам, брать за селектор имя класса (class) тега или уникальный идентификатор (id) тега. Чтобы присвоить класс или идентификатор какому-либо тегу, мы должны указать их среди атрибутов этого тега. У конкретного тега может быть максимум 1 идентификатор и бесконечное число классов. Пример:
<div id="first">текст в первом диве</div> <div class="second">текст во втором диве</div> <div id="third" class="first second third">текст в третьем диве</div>
На что стоит обратить внимание:
- Классы и идентификаторы можно присваивать любым (всем) тегам.
- Каждый id уникален и не может повторяться в пределах одной страницы, в отличие от классов!
- Один и тот же класс может быть присвоен любым тегам и может повторяться любое количество раз на странице.
- Если мы хотим задать конкретному тегу несколько классов, мы просто задаём их через пробел.
- Имена классов и идентификаторов могут совпадать, при этом кроме имени, ничего общего между ними не будет.
Как обратиться к классу или id в файле стилей (CSS)?
Смотрим пример:
#first {color: red;} /* обращаемся к id с именем first */ .second {color: blue;} /* обращаемся к классу с именем second */ #first .second {color: orange;} /* обращаемся к классу с именем second, ТОЛЬКО если он находится ВНУТРИ тега с идентификатором first */ .first .third {color: grey;} /* обращаемся к классу с именем third, ТОЛЬКО если он находится ВНУТРИ тега с классом first */
В нашем случае последние две инструкции не сработают, так как у нас нет классов, вложенных внутрь тегов с заданными атрибутами. Как вы могли заметить, чтобы обозначить, что мы обращаемся именно к id, нужно перед его именем без пробелов поставить знак решётки (#), если мы обращаемся к классу, то перед именем класса должны поставить точку (.).
Использование классов и идентификаторов очень удобно, но оно увеличивает нашу HTML разметку, в идеале (которого никогда нет) мы вовсе не должны их использовать, вместо них мы будем использовать комбинации и группировки селекторов, о них и будет вся остальная часть статьи, но! Но это совсем не означает, что вы должны полностью отказаться от использования классов и идентификаторов, просто вы должны иметь ввиду, что очень часто вместо создания нового class или id можно обойтись приёмами, описанными ниже и они также могут быть вполне удобны.
В чём различие class и id?
Кроме приведённых выше различий, стоит ещё отметить, что у свойств заданных id приоритет выше, чем у свойств, заданных классу. То есть, если мы напишем:
<style> #first {color: red;} .blue {color: blue;} </style> <div id="first" class="blue">текст в диве</div>
То цвет текста станет красным, несмотря на то, что класс находится ниже по коду и если бы у них был равный приоритет текст стал бы синим.
По синтаксису: в случаи с классом мы можем выбрать, у какого именно тега должен находиться данный класс, для этого после имени тега БЕЗ пробела мы должны обратиться к классу. Пример:
.myclass {свойства} /* применятся ко всем тегам, которые содержат класс myclass */ div.myclass {свойства} /* применятся только к тегам div, которые содержат класс myclass */
Для id это тоже будет работать, но такая запись лишена всякого смысла, так как id не может повторяться на странице, а значит достаточно просто объявлять id, без тега к которому оно относится:
<style> #super {свойства} /* правильно */ div#super {свойства} /* Неправильно, но работать будет */ </style> <div id="super">текст</div>
Вроде бы осталось только одно неоговорённое отличие, и оно касается темы, которую в ближайшем будущем я не планировал затрагивать на этом блоге – Javascript. Но всё же обязан доложить вам о нём: если вы хотите обратиться к элементу с помощью Javascript, то для этой цели очень удобным будет наличие id у этого элемента. Чтобы обратиться к элементу по его классу в Javascript нет такой встроенной возможности, вам придётся использовать вспомогательные функции + это не всегда кроссбраузерно.
Итог: id и class используем, но в меру, при этом всегда спрашивая себя, а можно ли здесь обойтись без них и насколько это целесообразно.
Допустимые значения
Для HTML5 ограничениями на значение id являются:
- он должен быть уникальным в документе
- он не должен содержать пробелов
- он должен содержать хотя бы один символ
Таким образом, значением могут быть все цифры, только одна цифра, только знаки пунктуации, включая специальные символы, все что угодно. Просто не должно быть пробелов.
Таким образом, нижеследующие объявления являются допустимыми:
Недопустимо:
Также неверен нижеследующий код, если включен в один документ:
Для HTML 4.01 и ниже для значения всегда должно начинаться с буквы, а остальными символами могут быть:
- латинские буквы (A-Z/a-z)
- цифры (0-9)
- тире («-«)
- подчеркивания («_»)
- двоеточия («:»)
- точки («.»)
В этом случае в вышеприведённом примере для HTML5, допустим только один вариант:
Другие примеры, допустимые в HTML 4.01 и ниже:
Правила для названий классов по существу те же, что и для идентификаторов. Разница в том, что значения класса не обязательно должны быть уникальными в документе.
В вышеприведенном примере недопустимо в одном документе:
А это совершенно нормально:
Имейте в виду, что приведенные выше правила и примеры применяются в контексте HTML.
Использование чисел, знаков препинания или специальных символов в значении i и может вызвать проблемы в других контекстах, таких как CSS, JavaScript и регулярных выражениях.
Например, хотя в HTML5 допустим следующий идентификатор:
Он не допустим в CSS.
В CSS различные идентификаторы (включая имена элементов, классы и идентификаторы в селекторах)
могут содержать только символы и символы из ISO 10646 U + 0080 и выше, а также дефис ()
и подчеркивание ();
они не могут начинаться с цифры, двух дефисов или дефисов, за которыми следует цифра.
( )
В большинстве случаев лучше избегать символов, у которых есть ограничения или особый смысл.
Зачем использовать div в HTML?
Чаще всего вы будете использовать элемент div для группировки разделов кода, на которые вы хотите настроить таргетинг с помощью CSS. Вы можете стилизовать их так, чтобы они выглядели иначе, чем другие разделы на странице, или расположить их иначе. Вы также можете использовать атрибут div и language, чтобы изменить язык определенного раздела на странице.
Начнем с самого простого примера. Чтобы изменить язык определенного раздела на веб-странице, просто поместите элементы внутри div. Затем добавьте атрибут языка и установите для него нужный язык. Для этой демонстрации я установил французский язык.
Вот HTML:
Это изменит только язык заголовка и абзаца внутри div. Элементы за пределами div останутся языком по умолчанию.
Вы начнете тем же способом изменить стиль div, но вместо добавления языкового атрибута вы добавите атрибут ID или класса. Затем вы используете соответствующий селектор, чтобы добавить нужный CSS.
Давайте посмотрим на пример, когда вы использовали бы div для изменения внешнего вида раздела своей веб-страницы. Предположим, вы хотите стилизовать определенный заголовок и абзац на странице, а остальные оставить без стиля. Затем вы должны заключить отдельный заголовок и абзац в элемент div и дать ему имя класса. Для этой демонстрации мы будем использовать «myDiv» в качестве имени класса.
Затем в разделе заголовка вашего HTML-документа или во внешней таблице стилей вы можете использовать селектор классов .myDiv и определить любые свойства CSS, которые вы хотите. В этой демонстрации мы будем использовать свойства границы, цвета фона, выравнивания текста и цвета.
Вот CSS:
Вот HTML:
Вот результат на передней панели:
Теперь давайте посмотрим на пример, когда вы использовали бы div для изменения позиционирования или макета раздела вашей веб-страницы. Вы можете найти этот и многие другие примеры в посте «Вот разница между Flexbox, CSS Grid и Bootstrap».
Скажем, я хочу создать сетку flexbox с шестью столбцами. Я бы начал с создания шести элементов
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:
Псевдо-классы
В отличие от классов, псевдо-классы не нужно указывать в HTML разметке, они сами вычисляются браузером. У нас есть 4 статических псевдо-класса и 3 динамических псевдо-класса, без учёта CSS 3, о нём ближе к концу. К статическим относятся ( :first-child, :link, :visited, : lang() ):
<style> p:first-child {color: green;} /* сработает, если p является первым ребёнком своего родителя */ </style> <div> <p>Прямой наследник (первый уровень)</p> <span> <span> <p>Третий уровень</p> </span> </span> <p>Прямой наследник (первый уровень)</p> <span> <p>Второй уровень</p> </span> <p>Прямой наследник (первый уровень)</p> </div>
Результат:
Естественно можно комбинировать селекторы как захотим, например:
div>span p:first-child {color: green;} /*сработает, если p является первым ребёнком своего родителя и находится внутри тега span, который является прямым потомком тега div */
Название представленного выше псевдо-класса говорит само за себя first-child — первый ребёнок.
Следующие два статических псевдо-класса применяются только к тегу гиперссылки (:link, :visited), они применяют CSS свойства в зависимости от того, посещалась данная ссылка конкретным пользователем или нет:
a:link {color: blue;} /* у не посещённых ссылок задаём синий цвет, и по умолчанию они подчёркнуты */ a:visited {color: green; text-decoration: none;} /* у посещённых ссылок текст будет зелёным, убираем подчёркивание */
Псевдо-класс :lang() используется для задания разного стиля оформления в зависимости от языка. В скобочках указывается язык, к которому нужно применить оформление. Это можно использовать, например, для задания разных стилей кавычек в цитатах:
q:lang(de) {quotes: "\201E" "\201C";} /* кавычки для немецкого языка */ q:lang(en) {quotes: "\201C" "\201D";} /* кавычки для английского языка */ q:lang(ru) {quotes: "\00AB" "\00BB";} /* кавычки для русского языка */
Это, пожалуй, единственный из всех возможных видов селекторов, который я никогда не использовал.
Фон
Если задать одновременно цвет фона и пунктирную границу блока, то становится заметно, что граница проходит внутри цветной области. Правда в разных браузерах наблюдается разночтение, в частности Internet Explorer до версии 7.0 включительно содержит ошибку, при которой фон выводится по внутреннему краю границы (рис. 12в). Начиная с версии 8.0 эта ошибка исправлена, и фон выводится по стандартам (рис. 12г). Браузеры Opera (рис. 12а), Firefox (12б), Safari и Chrome (рис. 12д) фон выводят правильно. Небольшие различия наблюдаются при отображении пунктирной рамки, но они не влияют на блочную модель.
а. Opera
б. Firefox
в. IE6, IE7
г. IE8, IE9
д. Safari, Chrome
Рис. 12. Отображение фона в браузере
В примере 3.8 показано, как создать код для получения подобной границы.
Пример 3.8. Фон и граница
XHTML 1.0CSS 2.1IE 7IE 8+CrOpSaFx
Различия в подходе браузеров при рисовании границ заметны только на цветном фоне и пунктирных линиях. Для сплошной рамки вид блока в браузерах будет практически одинаковым.
Адаптивный фон, фиксированный контент
В своей книге о секретах CSS Лия Веру предложила интересную технику, которая может быть использована для секций с адаптивным фоном (фон, занимающий всю ширину окна просмотра), внутри которых есть контейнер. Давайте рассмотрим распространенный способ, позволяющий сделать это:
HTML
<section> <div class="wrapper"></div> </section>
CSS
section { background-color: #ccc; } .wrapper { max-width: 1170px; margin-left: auto; margin-right: auto; padding-left: 16px; padding-right: 16px; }
Принцип работы margin-left: auto и margin-right: auto заключается в вычислении половины ширины окна просмотра и вычитании из неё ширины контента. То же самое можно сделать, используя padding.
CSS
section { padding: 1rem calc(50% - 585px); }
Мы ещё не закончили. На мобильных устройствах контент будет соприкасаться с границами экрана. Решить это можно следующим способом:
CSS
section { padding: 1rem; } @media (min-width: 1170px) { section { padding: 1rem calc(50% - 585px); } }
В качестве альтернативного решения можно использовать новую функцию CSS max(). Мы просто устанавливаем минимальный padding размером в 1rem, а вычисление 50% — 585px будет использовано в качестве другого значения.
CSS
section { padding: 1rem max(1rem, (50% - 585px)); }
Сущность блока информации
Термин «информация» в интернет-программировании имеет свой смысл. Это данные, определенным образом структурированные и представленные. Информация — это значительно более широкое понятие. В программировании веб-ресурсов этот термин несет в себе минимально возможный смысл и объем.
Размер и положение тега HTML div: width/height и left/top могут быть абсолютными и относительными. Вкладывая теги друг в друга, можно манипулировать положением и размерами. Меняя правило CSS position с absolute на relative, можно управлять положением тегов по отношению друг к другу внутри окна браузера.
Браузер как приложение несет в себе наследие от локального программирования: это программа, в которой есть окно, в котором отображается язык гипертекста, дополненный стилями CSS и оживленный работой JavaScript-кода.
Можно вспомнить любимое всеми компаниями (интернет-студиями) разделение разработки на фронтенд и бэкенд, но сути это не меняет
Не суть важно, как блок оказался на HTML-странице: был написан «ручками» или сформирован как результат работы PHP-скрипта на сервере. Важно, что каждый тег div как HTML/CSS-композиция — это положение, размер, цвет (символа/фона), прозрачность, трансформация, движение, границы и пр
Атрибутов и возможностей для описания блока информации правила CSS предоставляют большое множество, а логика HTML дает возможность использовать дивы как по прямому назначению, так и по логике и опыту разработчика.
Например, div HTML — это:
- обертка, то есть место размещения системы тегов;
- область размещения точек для обработчиков JavaScript;
- «массив» тегов для обработки.
Первый вариант удобен, когда нужна стройная композиция тегов, которую можно легко переместить в нужное место, уточнив координаты только обертки: все, что внутри, переедет как есть, автоматом.
Второй вариант, например карта местности или здание, в которой каждой точке на карте назначен свой обработчик, а клик на квартире или окне здания должен дать нужную информацию.
Третий вариант значительно упрощает обработку коллекций тегов: вместо того чтобы перебирать всю коллекцию тегов div (body) HTML-страницы, разработчик может выполнить поиск внутри одного тега, который невидим и не слышим, но включает в себя все актуальные позиции.
Основные правила создания макета с помощью элементов сетки Bootstrap
Основные этапы создания макета веб-страницы:
- создать основные секции (например: , , );
- создать внутри каждой секции обёрточный контейнер;
- поместить внутрь каждого обёрточного контейнера, разметку которых необходимо произвести с помощью адаптивных блоков, элемент «ряд»;
- создать внутри каждого ряда необходимую структуру с помощью адаптивных блоков;
- поместить внутрь необходимых адаптивных блоков, разметку которых необходимо произвести с помощью адаптивных блоков, элемент «ряд»;
- выполнить пункт 5;
- выполнять пункты 6 и 7 до тех пор, пока не будет достигнута необходимая структура создаваемого макета.
В качестве примера создадим нижеприведённый макет на Bootstrap 3 и 4.
Верстка вышеприведённого макета на Bootstrap 3:
<header> <div class="container-fluid"> HEADER </div> </header> <section class="a"> <div class="container-fluid"> <div class="row"> <div class="col-sm-6 col-lg-4 a1">A1</div> <div class="col-sm-6 col-lg-4 a2">A2</div> <div class="clearfix visible-sm-block visible-md-block"></div> <div class="col-sm-6 col-lg-4 a3">A3</div> <div class="clearfix visible-lg-block"></div> <div class="col-sm-6 col-lg-4 a4">A4</div> <div class="clearfix visible-sm-block visible-md-block"></div> <div class="col-sm-6 col-lg-4 a5">A5</div> <div class="col-sm-6 col-lg-4 a6">A6</div> </div> </div> </section> <section class="b"> <div class="container-fluid"> <div class="row"> <div class="col-sm-6 col-lg-3 b1">B1</div> <div class="col-sm-6 col-lg-3 b2">B2</div> <div class="clearfix visible-sm-block visible-md-block"></div> <div class="col-sm-6 col-lg-3 b3">B3</div> <div class="col-sm-6 col-lg-3 b4">B4</div> </div> </div> </section> <footer> <div class="container-fluid"> FOOTER </div> </footer>
Верстка вышепредставленного макета на Bootstrap 4:
<header> <div class="container-fluid"> HEADER </div> </header> <section class="a"> <div class="container-fluid"> <div class="row"> <div class="col-md-6 col-xl-4 a1">A1</div> <div class="col-md-6 col-xl-4 a2">A2</div> <div class="col-md-6 col-xl-4 a3">A3</div> <div class="col-md-6 col-xl-4 a4">A4</div> <div class="col-md-6 col-xl-4 a5">A5</div> <div class="col-md-6 col-xl-4 a6">A6</div> </div> </div> </section> <section class="b"> <div class="container-fluid"> <div class="row"> <div class="col-md-6 col-xl-3 b1">B1</div> <div class="col-md-6 col-xl-3 b2">B2</div> <div class="col-md-6 col-xl-3 b3">B3</div> <div class="col-md-6 col-xl-3 b4">B4</div> </div> </div> </section> <footer> <div class="container-fluid"> FOOTER </div> </footer>
Сетка и колонки
Бутстрап для себя делит экран на 12 колонок, независимо от размера экрана. Даже маленький экран старого телефона Бутстрап разобьёт на 12 колонок и будет ими управлять. На этом холсте вы можете создавать блоки шириной с какое-то количество колонок. Например, чтобы написать текст на половину ширины экрана, нужно создать блок шириной 6 колонок.
Блоки живут не сами по себе, а как бы в таблицах. Вы говорите Бутстрапу: «Создай мне контейнер для блока, в контейнере — строку, внутри строки — колонку, а внутрь колонки — положи этот текст». Сейчас это выглядит странно, но позже вы привыкнете.
Строка заполняется ячейками слева направо. Когда кончается строка, можно создать новую строку и снова заполнить её ячейками разной ширины. Ширина ячеек выражается в колонках. Ячейка шириной на весь экран будет иметь ширину 12 колонок, на пол-экрана — 6 колонок. Чтобы разбить экран на три части по горизонтали, нужно 3 ячейки шириной по 4 колонки. Чтобы сделать сетку, как у обычного трёхколоночного сайта, попробуйте три ячейки: 2 колонки, 8 колонок, 2 колонки.
Можно сказать Бутстрапу: «Когда экран маленький, эту колонку выводи на всю ширину, а ту вообще прячь». Например, у нас в левой колонке было меню сайта, в центральной — основной текст, а в правой — всякие вспомогательные ссылки. Тогда говорим левой колонке на мобилке вывестись на всю ширину, основной колонке — тоже на всю ширину, а правой — скрыться. Получится мобильная версия сайта.
И так можно долго куражиться. Если интересно, прочитайте документацию по сеткам Бутстрапа — там всё понятно по картинкам.
Способ отображения контейнера
Так как контейнер – это <div>, он по умолчанию является блочным элементом. Вопрос в том, что делать, если мы хотим, чтобы он отображался в виде сетки, и всё его содержимое располагалось на сетке?
Что ж, я бы не рекомендовал так делать, потому что это противоречит концепции разделения обязанностей. «Обёртка» оборачивает другие элементы, и на этом всё. Если вам нужен контейнер с сеткой, добавьте в существующий контейнер элемент <div> со свойством display: grid. Это более простой, понятный и доступный способ.
HTML
<div class="wrapper"> <!-- Содержимое --> </div>
Так делать не рекомендуется, потому что использование элемента wrapper на другой странице может случайно повредить вашу вёрстку.
CSS
.wrapper { display: grid; grid-template-columns: 2fr 1fr; grid-gap: 16px; }
Лучшим решением будет следующее:
HTML
<div class="wrapper"> <div class="featured-news"> <!-- Элементы, которые должны находиться в сетке --> </div> </div>
CSS
.featured-news { display: grid; grid-template-columns: 2fr 1fr; grid-gap: 16px; }
Заметьте, что я добавил отдельный элемент <div>, чтобы он содержал контент. Пожалуйста, не обращайте внимания на классы и соглашения по именованию в этом примере. Мы можем найти гораздо лучшее решение, создав названия классов, которые могут быть использованы повторно на разных страницах сайта. Однако соглашения по именованию выходят за рамки этой статьи.
Минимальные и максимальные значения ширины и высоты блочного элемента
Заключительная тема этой статьи, которую необходимо освоить это указание минимальных и максимальных размеров для блочных элементов.
CSS, помимо явного указания значений ширины и высоты элементов (свойства width и height) предлагает такие свойства, которые позволяют указать для блочных элементов их минимальные, либо максимальные значения:
- min-width (устанавливает минимальную ширину элемента).
- max-width (устанавливает максимальную ширину элемента).
- min-height (устанавливает минимальную высоту элемента).
- max-height (устанавливает максимальную высоту элемента).
На просторах интернет не редко можно встретить такое оформление сайтов, где основное содержимое находится по центру, а на заднем фоне находятся какие-то рекламные, либо графические материалы. Сделаем для этого похожую начальную разметку:
<!DOCTYPE html> <html> <head> <title>Минимальная высота и максимальная ширина для блочных элементов</title> <style> :root { /* псевдокласс :root определяет корневой элемент документа */ background-color: black; /* задаем цвет заднего фона */ } html { height:100%; /* задаем высоту элемента в процентах */ background-color: white; /* задаем цвет заднего фона */ } body { margin: 0 auto; /* задаем внешние отступы элемента (0 для верха и низа, автоматически слева и справа) */ max-width: 800px; /* задаем максимальную ширину элемента в пикселях */ height: 100%; /* задаем высоту элемента в процентах */ } div { min-height: 100%; /* задаем минимальную высоту элемента в процентах */ } </style> </head> <body> <div> </div> </body> </html>
Какие приёмы CSS надо обязательно уяснить из этого примера:
-
Как установить высоту элемента 100% при любом разрешении?
Для начала мы должны установить для родителя элемента размер высоты 100%. В нашем случае необходимо установить 100% для элементов <html> и <body>, и только после этого мы устанавливаем для нашего блока размер минимальной высоты 100% (min-height). В итоге это приводит к тому, что у нас даже пустой блок растягивается на весь экран.
-
Как горизонтально центрировать страницу?
Для этого необходимо установить внешние отступы элемента сверху и снизу равными (нулю), а слева и справа установить как auto (автоматически):
margin: 0 auto;
В нашем случае мы центрируем страницу, используя такой стиль для элемента <body>.
Кроме того, мы указываем для элемента <body> максимальное значение ширины равной 800px (если разрешение экрана не будет вмещать 800px, то значение будет равно размеру экрана браузера (меньше этого числа), но элемент в котором установлен максимальный размер не может растянуться больше этого числа).
Например, если бы мы указали min-width: 100px, то это бы означало, что элемент не может быть меньше чем 100px (если экран будет меньше, то браузер добавит полосу прокрутки). -
Как установить стиль, который будет приоритетней элемента <html>?
Псевдокласс :root, как и селектор типа html делают одно и тоже (выбирают одни и те же элементы), но псевдокласс :root обладает более высокой специфичностью (болеее значимый при определении стиля).
Вы можете использовать такой прием в будущем для установки изображений в качестве заднего фона. Подробное изучение работы с задним фоном мы рассмотрим далее в учебнике в статье «Работа с фоном элемента в CSS».
Результат нашего примера приведен на изображении ниже:
Рис. 106 Пример установки минимальной высоты и максимальной ширины для блочных элементов.
Using The class Attribute
The attribute is often used to point
to a class name in a style sheet. It can also be used by a JavaScript to access and
manipulate elements with the specific class name.
In the following example we have three elements
with a attribute with the value of
«city». All of the three
elements will be styled equally according to the
style definition in the head section:
Example
<!DOCTYPE html><html><head><style>
.city { background-color: tomato; color: white;
border: 2px solid black; margin: 20px;
padding: 20px;} </style>
</head><body><div class=»city»>
<h2>London</h2> <p>London is the capital of England.</p>
</div><div class=»city»>
<h2>Paris</h2> <p>Paris is the capital of France.</p></div><div class=»city»>
<h2>Tokyo</h2> <p>Tokyo is the capital of Japan.</p></div></body></html>
In the following example we have two elements
with a attribute with the value of
«note». Both
elements will be styled equally according to the
style definition in the head section:
Example
<!DOCTYPE html><html><head><style>.note {
font-size: 120%; color: red;}
</style></head><body><h1>My <span class=»note»>Important</span> Heading</h1><p>This is some <span class=»note»>important</span> text.</p></body></html>
Tip: The attribute can be used on any HTML element.
Note: The class name is case sensitive!
Tip: You can learn much more about CSS in our CSS Tutorial.
Общая структура и логика веб-страницы
Каждая из популярных систем управления сайтами предлагает свой взгляд на фундаментальные позиции в разработке и важные сущности в структуре и содержании страниц сайтов. По старинке все выделяют тегами div в HTML-странице:
- шапку;
- «тело» + меню (вертикальное или горизонтальное);
- левую и/или правую колонки как части тела или его дополнение;
- подвал.
В сложившемся обиходе разработчика все это звучит более прозаично: header, body, footer или «хедер», «контент» и «футер». Добавлять или нет левую и правую колонки, то есть разделять контент сайта на центральный поток данных, левую и правую сторону — компетенция разработчика и особенности решаемой задачи.
Использовать таблицы (table HTML) или дивы (div HTML) — особенной разницы нет. Можно вообще всю страницу «изложить» одним списком (ul и li): это свежо и экстравагантно, но работать будет. Выбор варианта верстки за разработчиком, но по сложившейся традиции все выбирают верстку блоками. Использовать HTML div и style CSS — просто, читабельно и продуктивно.