Селекторы 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 используем, но в меру, при этом всегда спрашивая себя, а можно ли здесь обойтись без них и насколько это целесообразно.
Пример использования
Теги и
Абзацы мы объединили тегом &lt;div&gt;, а это слово мы заключили тегом &lt;span&gt;.
С помощью встроенной таблицы стилей мы выделили это слово красным цветом, а блок текста получил зеленый цвет.
Обратите внимание, что тег &lt;div&gt; является блочным и это означает, что его содержимое всегда будет начинаться с новой строки, при этом элемент занимает всю доступную ширину.
Этот блок тоже содержит два абзаца. С помощью встроенной таблицы стилей мы указали для всего блока цвет заднего фона — khaki, а для этога слова orangeRed (мы заключили его в тег &lt;span&gt;).
. В этом примере мы:
В этом примере мы:
- Блочными элементами <div> создали два блока, содержащие по два абзаца текста внутри (элементы <p>).
- Для первого блока с помощью встроенной таблицы стилей мы указали, что все элементы получат цвет текста зеленый, а одно слово, которое мы поместили внутри тега <span> красный.
- Для второго блока с помощью встроенной таблицы стилей мы указали, что весь блок получит цвет заднего фона хаки, а одно слово, которое мы поместили внутри тега <span> оранжево-красный.
Результат нашего примера:
Использование тегов разметки в HTML.
Навигационный список Он же Сайдбар
Навигационный список позволяет создать легкую и удобную в использовании навигацию с дополнительными заголовками. Такой сайдбар используется в Finder в MAC OS X.
Пример навигационного списка
К списку ссылок и добавьте классы — :
- Заголовок
- Второй заголовок
- Заголовок
- Еще заголовок
<ul class="nav nav-list"> <li class="nav-header">Заголовок</li> <li class="active"><a href="#">На главную</a></li> <li><a href="#">Библиотека</a></li> ... </ul>
Замечание
Для вложения в навигационные списки, применяйте классы только к вложенным элементам — .
Горизонтальный разделитель
Добавьте горизонтальный разделитель с помощью пустого элемента списка с классом , пример:
<ul class="nav nav-list"> ... <li class="divider"></li> ... </ul>
Компоненты в navbar’е
Ссылка в виде Вашего бренда или имени проекта.
<a class="brand" href="#">Project name</a>
Навигационные ссылки
Навигационные ссылки легко добавить через неупорядоченый список.
<ul class="nav"> <li class="active"> <a href="#">На главную</a> </li> <li><a href="#">Ссылка 1</a></li> <li><a href="#">Ссылка 2</a></li> </ul>
Для создания разделителя между навигационными компонентами просто добавьте пустой элемент списка, со следующим кодом:
<ul class="nav"> ... <li class="divider-vertical"></li> ... </ul>
Формы
Для использования форм в Navbar’е, добавьте необходимые классы как в примере ниже. Для создания формы по умолчанию добавьте класс и или для выравнивания по левому или правому краю.
<form class="navbar-form pull-left"> <input type="text" class="span2"> <button type="submit" class="btn">Отправить</button> </form>
Форма поиска
Для формы поиска добавьте класс к тегу и класс к input элементу.
<form class="navbar-search pull-left"> <input type="text" class="search-query" placeholder="Search"> </form>
Добавление выпадающего меню
Добавить выпадающий список к навигационному элементу очень просто, но это требует включения .
<ul class="nav"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> Account <b class="caret"></b> </a> <ul class="dropdown-menu"> ... </ul> </li> </ul>
Посетите страницу с документацией по плагину для более подробной информации о плагине и его использованию.
Свойство overflow
Свойство позволяет взять под контроль переполнение элемента и подсказать браузеру, как он должен себя вести. Значение overflow по умолчанию – , что означает — «показывать контент, когда он выходит за границы блока».
Чтобы обрезать контент выходящий за пределы блока, вы можете установить . Это свойство делает именно то, о чём говорит: скрывает выходящий за пределы контент. Помните, что это может сделать часть содержимого невидимым. Используйте данное значение только в том случае, если скрытие содержимого не вызовет проблем.
Возможно, что при возникновении переполнения вместо скрытия вы захотите отобразить полосы прокрутки. При использовании браузеры с видимыми полосами прокрутки всегда будут отображать их, даже если содержимого недостаточно для возникновения перекрытия. Это позволяет сохранить целостность раскладки, так как полосы прокрутки не будут появляться и пропадать в зависимости от количества содержимого в контейнере.
Удалите часть содержимого из поля ниже
Обратите внимание, что полосы прокрутки остаются, даже если прокрутка не требуется
В приведённом выше примере нам нужно прокручивать содержимое только по оси , однако мы получаем полосы прокрутки по обеим осям. Вы можете использовать свойство (en-US), которое позволяет прокручивать содержимое только по оси .
Вы также можете установить прокрутку по оси x с помощью (en-US), но это не рекомендуемый способ отображения длинных слов! Если у вас есть длинное слово в маленьком поле, вы можете использовать свойства или . Кроме того, некоторые методы, описанные в разделе Изменение размеров в CSS, могут помочь вам создавать блоки, которые лучше масштабируются с различным объемом содержимого.
Как и в случае со , вы получаете полосу прокрутки независимо от того, достаточно ли содержимого для её появления.
Примечание: вы можете точно задать прокрутку по осям x и y, используя свойство , передав два значения. Первое значение будет относиться к , а второе — к . Если передать одно значение, то и получат одинаковые значения. Например, устанавливает в и в .
Если вы хотите, чтобы полосы прокрутки отображались только тогда, когда содержимого больше, чем может поместиться в поле, используйте . Это позволяет браузеру автоматически определять, следует ли отображать полосы прокрутки.
В приведённом ниже примере уменьшите количество содержимого так, чтобы оно поместилось в поле. Вы должны увидеть, что полосы прокрутки исчезнут.
Селекторы атрибутов
Селекторы атрибутов позволяют нам обратиться к тегам, имеющим необходимый нам атрибут или даже конкретное его значение:
p {свойства} /* применить ко всем тегам p, у которых есть атрибут align */ p {свойства} /* где значение атрибута align равно center */ p {свойства} /* где значение атрибута align начинается на center */ p {свойства} /* где значение атрибута align содержит center */ p {свойства} /* где site может находиться среди других слов, отделенных пробелами (<p class="support site magazine"></p>) */ p {свойства} /* где значение атрибута class состоит только из слова site или начинается им, после чего ставится дефис и пишется остальная часть значения (<p class="site-On"></p> или <p class="site-off"></p>) */ p {свойства} /* где значение атрибута align заканчивается на site */
Кнопка + Кнопка-список
Используя стили и разметку группы кнопок, мы можем разделить кнопку с кнопкой-списком. По умолчанию кнопка-список будет добавлена справа по отношению к основной кнопке.
Кнопка
Кнопка
Внимание
Оранжевая
Зеленая
Инфо
Обратная
<div class="btn-group"> <button class="btn">Кнопка</button> <button class="btn dropdown-toggle" data-toggle="dropdown"> <span class="caret"></span> </button> <ul class="dropdown-menu"> <!-- dropdown menu links --> </ul> </div>
Размеры
Используйте классы размеров кнопок , или .
Большая кнопка
Маленькая кнопка
Mini-кнопка
<div class="btn-group"> <button class="btn btn-mini">Кнопка</button> <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown"> <span class="caret"></span> </button> <ul class="dropdown-menu"> <!-- dropdown menu links --> </ul> </div>
Выпадающие вверх
Выпадающие вверх списки могут быть созданы путем добавления класса к родительскому элементу . Например, . Это изменит отображение элемента и изменит направление выпадающего списка вверх.
Выпадающий вверх
Выпадающий вверх и вправо
Проблемы
Теперь, когда мы обсудили, как работает элемент <pre>, давайте рассмотрим несколько потенциальных проблем, которые могут возникнуть при его использовании.
Выход за пределы элемента
По умолчанию, текст внутри элемента <pre> отображается как в источнике, так что, слишком широкие строчки могут выйти за границы родительского контейнера.
Ниже приведён пример макета страницы с выходящим за границы содержанием.
Давайте рассмотрим несколько вариантов решения данной проблемы.
Решение №1: Вывод полосы прокрутки
Одним из способов избежать описанной выше проблемы является отображение полосы прокрутки. Это действенно когда содержание элемента <pre> слишком широкое. Можем воспользоваться CSS:
pre { overflow: auto; }
В этом случае пользователю нужно будет прокрутить страницу по горизонтали, чтобы увидеть все содержимое элемента <pre>. Однако горизонтальная прокрутка не является идеальным вариантом. К тому же полоса прокрутки не слишком эстетична.
Решение №2: Перенос текста на новую строку
В данном случае, тоже можем воспользоваться CSS, а именно свойство :
pre { white-space: pre-wrap; }
Отображение HTML
Существует определённый тип исходного кода, с которым немного сложнее работать внутри элемента <pre>, я говорю о HTML. Ранее я уже упоминал о том, что вы можете вложить HTML элементы внутрь элемента <pre>. Но что, если мы захотим показать эти теги так, чтобы читатель смог их увидеть в отображаемом коде?
Для отображения HTML тегов в браузере вы, как правило, должны заменить HTML скобки. Допустим, мы захотели показать следующую разметку внутри тегов <pre>:
Заменяем символы <, >, и «:
<pre><code><nav class="main-navigation"> <ul> <li><a href="/">Home</a></li> <li><a href="about.html">About Us</a></li> <li><a href="contact.html">Contact Us</a></li> </ul> </nav></code></pre>
К счастью, существует множество инструментов, которые помогут вам сделать это. К примеру, Free Online HTML Escape Tool.
Случайные пробелы
Ещё один нюанс, который нужно учесть, это появление нежелательных пробелов, отступов и переносов строк.
Многие из нас используют отступ в HTML для иллюстрации иерархии элементов. Это может вызвать проблемы. Позвольте мне показать, что я имею в виду.
Если мой HTML документ имеет следующую структурную (отступы для иллюстрации вложенных элементов), то отображение будет следующим:
<html> <head> <title>My tutorial</title> </head> <body> <section> <article class="main-content"> <h1>My Tutorial's Title</h1> <p>Here's some example JavaScript:</p> <!-- My pre element --> <pre><code><script type="text/javascript"> console.log('Hello there'); </script></code></pre> </article> </section> </body> </html>
Проблема в том, что элемент pre, по праву, рассматривает мои отступы как часть своего содержания. Таким образом, содержание отображается с нежелательными отступами:
<script type="text/javascript"> console.log('Hello there'); </script>
Чтобы точно отобразить содержание мне придётся написать его так, чтобы в содержании не было отступов вообще:
<html> <head> <title>My tutorial</title> </head> <body> <section> <article class="main-content"> <h1>My Tutorial's Title</h1> <p>Here's some example JavaScript:</p> <!-- My pre element --> <pre><code></code></pre> </article> </section> </body> </html>
Теперь содержание будет отображаться вот так:
<script type="text/javascript"> console.log('Hello there'); </script>
Изначальные установки Одинаковая разметка, разные классы
Все навигационные компоненты—вкладки, кнопки и списки—имеют одинаковую HTML-разметку и родительский класс .
Вкладки
Используйте в качестве вкладок список, и дополнительный класс в родительском элементе :
<ul class="nav nav-tabs"> <li class="active"> <a href="#">Главная</a> </li> <li><a href="#">...</a></li> <li><a href="#">...</a></li> </ul>
Навигационные кнопки
Используйте HTML-код из предыдущего примера, но вместо класса используйте :
<ul class="nav nav-pills"> <li class="active"> <a href="#">Home</a> </li> <li><a href="#">...</a></li> <li><a href="#">...</a></li> </ul>
Отключенное состояние
Для любого элемента навигации (вкладки, кнопки или списки), добавьте класс для изменения стилей — серый шрифт и отсутвие анимации при наведении курсора. Тем не менее ссылки и элементы останутся кликабельными, до тех пор пока Вы не уберете атрибут . Либо управляя элементами через JavaScript.
<ul class="nav nav-pills"> ... <li class="disabled"><a href="#">Главная</a></li> ... </ul>
Что делает каждая из деклараций?Скопировать ссылку
- — сокращенная запись свойства, обнуляет размер шрифта и высоту строки. Значение здесь выступает в роли очень короткого (идея, взята из реализации этого метода в БЭМ). Валидатор CSS ругается, что использование в сокращенной форме свойства не соответствует стандарту, но все браузеры принимают такое объявление, и это, по-видимому, баг в самом валидаторе. Использование позволяет пройти валидацию, но все равно — в коде декларация отображается как , который валидатор пропускает.
- — гарантированно снимает любую унаследованную тень текста. Это предотвращает появление любых остатков тени от текста поверх фона.
- — декларация для браузеров, которые не уменьшают текст полностью (до состояния невидимости). Safari 4 — пример (чрезвычайно редкий) такого браузера. Также эта декларация может быть нужна мобильным браузерам. IE6-8 не распознаёт такое значение свойства , но, к счастью, IE7-8 и без него не показывают никаких следов от текста. IE6 отображает бледный след.
Во вспомогательном классе в HTML5 Boilerplate мы также обнуляем всё, что касается свойств и , которые могут быть заданы у элементов. Это упрощает использование вспомогательных классов для элементов типа или ссылках, у которых по дизайну может быть задан фон или рамка.
Преимущества перед методами с text-indentСкопировать ссылку
Новая техника позволяет избежать различных проблем, присущих методам, основанным на использовании , включая предложенный Скотом Келумом способ избежать проблем с производительностью на iPad 1, связанных с большими отрицательными отступами.
- Работает в IE6-7 для элементов с . Техники, основанные на использовании изначально «сломаны» для элементах, в этом можно убедиться на этом примере.
- Не приводит к созданию контейнеров, выходящих за пределы экрана. Методы с приводят к отрисовке блока (иногда выходящего за экран) для любого текста, у которого есть положительный или отрицательный отступ. Иногда это приводит к проблемам с производительностью, но методы, основанные на размере шрифта, обходят эти проблемы.
- Не нужно указывать особенный и обрезать контейнер свойством , так как текст сжат и не занимает места.
- Не нужно скрывать или задавать всему дополнительному HTML , чтобы обойти ограничения отступа текста. В новом методе таких проблем нет.
- В результате этих доработок сократилось количество стилей.
5 последних уроков рубрики «HTML и DHTML»
-
При написании или отладки PHP скриптов мы частенько пользуемся функциями var_dump() и print_r() для вывода предварительных данных массив и объектов. В этом посте я бы хотел рассказать вам о функции var_export(), которая может преобразовать массив в формат, пригодный для PHP кода.
-
Парочка бесплатных шаблонов панелей администрирования.
-
Создание шаблона для письма не такое уж простое дело. Предлагаем вам подборку из 30 сайтов, где можно бесплатно скачать подобные шаблоны на любой вкус.
-
К примеру у вас есть поле поиска, которое обрабатывается при каждом нажатии клавиши клавиатуры. Если кто-то захочет написать слово Windows, AJAX запрос будет отправлен по следующим фрагментам: W, Wi, Win, Wind, Windo, Window, Windows. Проблема?.
Псевдо-элементы
Псевдо-элементы, аналогично псевдо-классам вычисляются браузером автоматически, нам об этом заботиться не нужно. Чтобы не путать псевдо-элементы с псевдо-классами в спецификации CSS 3 было решено использовать двойное двоеточие, вместо одинарного, как было в CSS 2. Поэтому в Интернете вы можете встретить псевдо-элементы как с одинарным двоеточием так и с двойным – и тот и тот вариант верен. Однако для лучшей совместимости с IE рекомендуют использовать одинарное двоеточие.
:first-line – первая строка внутри блочного или табличного элемента.
:first-letter – первая буква внутри блочного элемента.
Итоги: теперь вы знаете и можете использовать всю мощь каскадных таблиц стилей, однако это не значит, что нужно сразу ринуться верстать макеты сайтов, используя как можно больше изученных сегодня селекторов, псевдо-классов и псевдо-элементов. Я перечислил все возможные инструменты, а вы должны выбрать лишь самое нужное для себя.
Для чего нужен тег span в html?
Основные возможности:
-
1 Позволяет задать или изменить цвет, а так же тип шрифта и начертание для отдельного одного или нескольких слов или букв.
<p><span style=”color:#ccc; font-family:Verdana;”>Пример текста</span></p>
1 <p><span style=”color#ccc; font-family:Verdana;”>Пример текста</span></p> -
2 С его помощью можно задать фон для отдельного фрагмента текста.
<p> Пример <span style=”background:red;”> выделенного цветом </span> текста </p>
1 <p>Пример<span style=”backgroundred;”>выделенногоцветом<span>текста<p> -
3 Можно создать эффект заглавной буквы, обернув её в этот тег и выделить другим цветом и размером.
<p><span style=»color:red; font-size:20px;»>С</span>лово</p>
1 <p><span style=»color:red; font-size:20px;»>С<span>лово<p> -
4 Возможность задать разное форматирование для отдельных фрагментов текста.
<p>Благодаря этому HTML тегу мы можем <span style=»font-size:22px; font-weight:bold;»>выделить</span> фрагмент текста дргим <span style=»color:#fff; background:#2F73B6;»>цветом</span></p>
1 <p>БлагодаряэтомуHTMLтегумыможем<span style=»font-size:22px; font-weight:bold;»>выделить<span>фрагменттекстадргим<span style=»color:#fff; background:#2F73B6;»>цветом<span><p>
Пример и разметка
Основной
Основной индикатор процесса с вертикальным градиентом.
<div class="progress"> <div class="bar" style="width: 60%;"></div> </div>
Полосатый
Используется градиент для создания полосатого эффекта (IE7-8 не поддерживается).
<div class="progress progress-striped"> <div class="bar" style="width: 20%;"></div> </div>
Анимированный
Добавьте класс в дополнение к . Используется полосатый пример и анимируется через CSS (во всех версиях IE не поддерживается).
<div class="progress progress-striped active"> <div class="bar" style="width: 40%;"></div> </div>
Комбинированный
Поместите множество прогресс-баров в для их комбинации.
<div class="progress"> <div class="bar bar-success" style="width: 35%;"></div> <div class="bar bar-warning" style="width: 20%;"></div> <div class="bar bar-danger" style="width: 10%;"></div> </div>
Дополнения
Доп. цвета
Прогресс-бар использует одинаковую цветовую палитру с кнопками и сообщениями.
<div class="progress progress-info"> <div class="bar" style="width: 20%"></div> </div> <div class="progress progress-success"> <div class="bar" style="width: 40%"></div> </div> <div class="progress progress-warning"> <div class="bar" style="width: 60%"></div> </div> <div class="progress progress-danger"> <div class="bar" style="width: 80%"></div> </div>
Полосатые прогресс-бары
Так же как и в стандартном баре мы имеем версии цветных полосатых прогресс-баров.
<div class="progress progress-info progress-striped"> <div class="bar" style="width: 20%"></div> </div> <div class="progress progress-success progress-striped"> <div class="bar" style="width: 40%"></div> </div> <div class="progress progress-warning progress-striped"> <div class="bar" style="width: 60%"></div> </div> <div class="progress progress-danger progress-striped"> <div class="bar" style="width: 80%"></div> </div>
Отличие «preg_match» от «preg_match_all»
Функция «preg_match» осуществляет поиск только до первого соответсвия с маской. Как только что-то найдено — поиск останавливается и возвращается одномерный массив.
if (preg_match('|<title>(.+)</title>|isU', $sContent, $arr)) return $arr; else return false;
Здесь нулевой элемент массива «$arr» содержит найденное совпадение вместе с тегами «title», а первый элемент — «$arr» только текст между этими тегами. Если в строке несколько тегов «title», это не значит что остальные значения будут записаны в «$arr» и так далее. Элемент «$arr» окажется не пуст если в маске указано несколько правил, но об этом в следующий раз.
Используем свойство 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.
Как поменять цвет шрифта в CSS — добавляем стили
В этом примере понадобится веб-страница с разметкой и отдельный CSS-файл, подключаемый внутри HTML-кода.
В HTML-документе будет несколько элементов, но мы будем работать только параграфом. Вот так меняется цвет текста внутри тегов <p> при помощи внешней таблицы стилей.
Значения цветов можно указывать при помощи названий, RGB или шестнадцатеричных значений.
Добавляем атрибут style к тегу
p { }
Добавляем свойство color:
p { color: }
Добавляем значение цвета после свойства:
p { color: black;}
Элементы <p> на странице станут чёрными.
Перед тем, как изменить цвет текста в HTML, нужно понимать, что в данном примере используется название цвета black. Несмотря на то, что это один из способов указания цвета в CSS, он имеет определенные ограничения.
Нет ничего страшного в том, чтобы использовать названия black (чёрный) и white (белый). Но этот способ не позволяет указывать конкретные оттенки. Поэтому для указания цвета чаще используются шестнадцатеричные значения:
p { color: #000000; }
Этот CSS-код также сделает элементы <p> чёрными, так как hex-код #000000 обозначает чёрный цвет. Также можно использовать сокращённый вариант #000, и результат будет тем же.
Как отмечалось ранее, hex-значения отлично подходят в тех случаях, когда необходимо использовать сложные цвета.
Например:
p { color: #2f5687; }
Данное hex-значение придаст тексту синий цвет. Но в отличие от простого blue этот код позволяет указать конкретные оттенки синего. В данном примере получится тусклый серо-синий цвет.
Перейдём к RGBA-значениям. RGBA поддерживают все современные браузеры, так что этот метод можно использовать, не беспокоясь о запасных вариантах:
p { color: rgba(47,86,135,1); }
Это RGBA-значение обеспечит всё тот же тусклый, серо-синий цвет. Первые три значения отвечают за красный, зелёный и синий, а последняя цифра — за уровень непрозрачности. «1» означает «100%». То есть, текст будет полностью непрозрачным.
Если сомневаетесь в поддержке браузерами, то цвета можно указывать следующим образом:
p { color: #2f5687; color: rgba(47,86,135,1); }
В этом синтаксисе сначала идет hex-значение, которое затем переписывается RGBA-значением. Это значит, что устаревшие браузеры, в которых нет поддержки RGBA, будут использовать первое значение и игнорировать второе. Современные браузеры будут использовать второе значение. Это нужно учитывать, чтобы знать, как поменять цвет текста в CSS.
Пожалуйста, опубликуйте ваши отзывы по текущей теме статьи. Мы очень благодарим вас за ваши комментарии, лайки, подписки, отклики, дизлайки!
Пожалуйста, опубликуйте свои отзывы по текущей теме статьи. За комментарии, отклики, лайки, подписки, дизлайки огромное вам спасибо!
Валентин Сейидовавтор-переводчик статьи «How to Change the Font Color with CSS»
Способ отображения контейнера
Так как контейнер – это <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>, чтобы он содержал контент. Пожалуйста, не обращайте внимания на классы и соглашения по именованию в этом примере. Мы можем найти гораздо лучшее решение, создав названия классов, которые могут быть использованы повторно на разных страницах сайта. Однако соглашения по именованию выходят за рамки этой статьи.