Одновременное использование разных классов — КиберПедия 

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Одновременное использование разных классов

2020-12-27 158
Одновременное использование разных классов 0.00 из 5.00 0 оценок
Заказать работу

К любому тегу одновременно можно добавить несколько классов, перечисляя их в атрибуте class через пробел. В этом случае к элементу применяется стиль, описанный в правилах для каждого класса. Поскольку при добавлении нескольких классов они могут содержать одинаковые стилевые свойства, но с разными значениями, то берётся значение у класса, который описан в коде ниже.

В примере 5.4 показано использование разных классов для создания облака тегов.

Пример 5.4. Сочетание разных классов

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Облако тегов</title><style type="text/css">.level1 { font-size: 1em; }.level2 { font-size: 1.2em; }.level3 { font-size: 1.4em; }.level4 { font-size: 1.6em; }.level5 { font-size: 1.8em; }.level6 { font-size: 2em; }A.tag {     color: #468be1; /* Цвет ссылок */ }</style></head> <body><div> <a href="/term/2" class="tag level6">Paint.NET</a> <a href="/term/69" class="tag level6">Photoshop</a> <a href="/term/3" class="tag level5">цвет</a> <a href="/term/95" class="tag level5">фон</a> <a href="/term/11" class="tag level4">палитра</a> <a href="/term/43" class="tag level3">слои</a> <a href="/term/97" class="tag level2">свет</a> <a href="/term/44" class="tag level2">панели</a> <a href="/term/16" class="tag level1">линия</a> <a href="/term/33" class="tag level1">прямоугольник</a> <a href="/term/14" class="tag level1">пиксел</a> <a href="/term/27" class="tag level1">градиент</a> </div></body></html>

Результат данного примера показан на рис.5.4.

Рис. 5.4. Облако тегов

В стилях также допускается использовать запись вида.layer1.layer2, где layer1 и layer2 представляют собой имена классов. Стиль применяется только для элементов, у которых одновременно заданы классы layer1 и layer2.

Идентификаторы

Идентификатор (называемый также «ID селектор») определяет уникальное имя элемента, которое используется для изменения его стиля и обращения к нему через скрипты.

Синтаксис применения идентификатора следующий.

#Имя идентификатора { свойство1: значение; свойство2: значение;... }

При описании идентификатора вначале указывается символ решётки (#), затем идет имя идентификатора. Оно должно начинаться с латинского символа и может содержать в себе символ дефиса (-) и подчеркивания (_). Использование русских букв в именах идентификатора недопустимо. В отличие от классов идентификаторы должны быть уникальны, иными словами, встречаться в коде документа только один раз.

Обращение к идентификатору происходит аналогично классам, но в качестве ключевого слова у тега используется атрибут id, значением которого выступает имя идентификатора (пример 5.5). Символ решётки при этом уже не указывается.

Пример 5.5. Использование идентификатора

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Идентификаторы</title><style>#help { position: absolute; /* Абсолютное позиционирование */ left: 160px; /* Положение элемента от левого края */ top: 50px; /* Положение от верхнего края */ width: 225px; /* Ширина блока */ padding: 5px; /* Поля вокруг текста */ background: #f0f0f0; /* Цвет фона */ }</style></head> <body> <div id="help"> Этот элемент помогает в случае, когда вы находитесь в осознании того факта, что совершенно не понимаете, кто и как вам может помочь. Именно в этот момент мы и подсказываем, что помочь вам никто не сможет.</div></body> </html>

В данном примере определяется стиль тега <div> через идентификатор с именем help (рис.5.5).

Рис. 5.5. Результат применения идентификатора

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

Тег#Имя идентификатора { свойство1: значение; свойство2: значение;... }

Вначале указывается имя тега, затем без пробелов символ решётки и название идентификатора. В примере 5.6 показано использование идентификатора применительно к тегу <p>.

Пример 5.6. Идентификатор совместно с тегом

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Идентификаторы</title><style>P { color: green; /* Зеленый цвет текста */ font-style: italic; /* Курсивное начертание текста */}P#opa {     color: red; /* Красный цвет текста */ border: 1px solid #666; /* Параметры рамки */ background: #eee; /* Цвет фона */ padding: 5px; /* Поля вокруг текста */}</style></head> <body> <p>Обычный параграф</p> <p id="opa">Параграф необычный</p></body> </html>

Результат данного примера показан на рис. 5.6.

Рис. 5.6. Вид текста после применения стиля

В данном примере вводится стиль для тега <p> и для такого же тега, но с указанием идентификатора opa.

Контекстные селекторы

При создании веб-страницы часто приходится вкладывать одни теги внутрь других. Чтобы стили для этих тегов использовались корректно, помогут селекторы, которые работают только в определённом контексте. Например, задать стиль для тега <b> только когда он располагается внутри контейнера <p>. Таким образом можно одновременно установить стиль для отдельного тега, а также для тега, который находится внутри другого.

Контекстный селектор состоит из простых селекторов разделенных пробелом. Так, для селектора тега синтаксис будет следующий.

Тег1 Тег2 {... }

В этом случае стиль будет применяться к Тегу2 когда он размещается внутри Тега1, как показано ниже.

<Тег1> <Тег2>... </Тег2></Тег1>

Использование контекстных селекторов продемонстрировано в примере 5.7.

Пример 5.7. Контекстные селекторы

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Контекстные селекторы</title><style>P B {     font-family: Times, serif; /* Семейство шрифта */ color: navy; /* Синий цвет текста */}</style></head> <body><div><b>Жирное начертание текста</b></div><p><b>Одновременно жирное начертание текста и выделенное цветом</b></p></body></html>

В данном примере показано обычное применение тега <b> и этого же тега, когда он вложен внутрь абзаца <p>. При этом меняется цвет и шрифт текста, как показано на рис. 5.7.

Рис. 5.7. Оформление текста в зависимости от вложенности тегов

Не обязательно контекстные селекторы содержат только один вложенный тег. В зависимости от ситуации допустимо применять два и более последовательно вложенных друг в друга тегов.

Более широкие возможности контекстные селекторы дают при использовании идентификаторов и классов. Это позволяет устанавливать стиль только для того элемента, который располагается внутри определённого класса, как показано в примере 5.8.

Пример 5.8. Использование классов

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Контекстные селекторы</title><style>A { color: green; /* Зеленый цвет текста для всех ссылок */}.menu {     padding: 7px; /* Поля вокруг текста */ border: 1px solid #333; /* Параметры рамки */ background: #fc0; /* Цвет фона */}.menu A { color: navy; /* Темно-синий цвет ссылок */}</style></head> <body><div class="menu"><a href="http://htmlbook.ru/1.html">Русская кухня</a> |<a href="http://htmlbook.ru/2.html">Украинская кухня</a> |<a href="http://htmlbook.ru/3.html">Кавказская кухня</a></div><p><a href="http://htmlbook.ru/text.html">Другие материалы по теме</a></p></body></html>

Результат данного примера показан на рис. 5.8.

Рис. 5.8. Ссылки разных цветов

В данном примере используется два типа ссылок. Первая ссылка, стиль которой задаётся с помощью селектора A, будет действовать на всей странице, а стиль второй ссылки (.menu A) применяется только к ссылкам внутри элемента с классом menu.

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

Соседние селекторы

Соседними называются элементы веб-страницы, когда они следуют непосредственно друг за другом в коде документа. Рассмотрим несколько примеров отношения элементов.

<p>Lorem ipsum <b>dolor</b> sit amet.</p>

В этом примере тег <b> является дочерним по отношению к тегу <p>, поскольку он находится внутри этого контейнера. Соответственно <p> выступает в качестве родителя <b>.

<p>Lorem ipsum <b>dolor</b> <var>sit</var> amet.</p>

Здесь теги <var> и <b> никак не перекрываются и представляют собой соседние элементы. То, что они расположены внутри контейнера <p>, никак не влияет на их отношение.

<p>Lorem <b>ipsum </b> dolor sit amet, <i>consectetuer</i> adipiscing <tt>elit</tt>.</p>

Соседними здесь являются теги <b> и <i>, а также <i> и <tt>. При этом <b> и <tt> к соседним элементам не относятся из-за того, что между ними расположен контейнер <i>.

Для управления стилем соседних элементов используется символ плюса (+), который устанавливается между двумя селекторами. Общий синтаксис следующий.

Селектор 1 + Селектор 2 { Описание правил стиля }

Пробелы вокруг плюса не обязательны, стиль при такой записи применяется к Селектору 2, но только в том случае, если он является соседним для Селектора 1 и следует сразу после него.

В примере 5.9 показана структура взаимодействия тегов между собой.

Пример 5.9. Использование соседних селекторов

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Соседние селекторы</title><style>B + I { color: red; /* Красный цвет текста */}</style></head><body><p>Lorem <b>ipsum </b> dolor sit amet, <i>consectetuer</i> adipiscing elit.</p><p>Lorem ipsum dolor sit amet, <i>consectetuer</i> adipiscing elit.</p></body></html>

Результат примера показан на рис. 5.9.

Рис. 5.9. Выделение текста цветом при помощи соседних селекторов

В данном примере происходит изменение цвета текста для содержимого контейнера <i>, когда он располагается сразу после контейнера <b>. В первом абзаце такая ситуация реализована, поэтому слово «consectetuer» в браузере отображается красным цветом. Во втором абзаце, хотя и присутствует тег <i>, но по соседству никакого тега <b> нет, так что стиль к этому контейнеру не применяется.

Разберем более практичный пример. Часто возникает необходимость в текст статьи включать различные сноски и примечания. Обычно для этой цели создают новый стилевой класс и применяют его к абзацу, таким способом можно легко изменить вид текста. Но мы пойдем другим путём и воспользуемся соседними селекторами. Для выделения замечаний создадим новый класс, назовём его sic, и станем применять его к тегу <h2>. Первый абзац после такого заголовка выделяется цветом фона и отступом (пример 5.10). Вид остальных абзацев останется неизменным.

Пример 5.10. Изменение стиля абзаца

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Изменение стиля абзаца</title><style>H2.sic { font-size: 140%; /* Размер шрифта */ color: maroon; /* Цвет текста */ font-weight: normal; /* Нормальное начертание текста */ margin-left: 30px; /* Отступ слева */ margin-bottom: 0px; /* Отступ снизу */}H2.sic + P { background: #ddd; /* Цвет фона */ margin-left: 30px; /* Отступ слева */ margin-top: 0.5em; /* Отступ сверху */ padding: 7px; /* Поля вокруг текста */}</style></head><body><h1>Методы ловли льва в пустыне</h1><h2>Метод последовательного перебора</h2><p>Пусть лев имеет габаритные размеры L x W x H, где L – длина льва   от кончика носа до кисточки хвоста, W – ширина льва, а H – его высота.   После чего пустыню разбиваем на ряд элементарных прямоугольников, размер   которых совпадает с шириной и длиной льва. Учитывая, что лев может находиться   не строго на заданном участке, а одновременно на двух из них, клетку для   ловли следует делать повышенной площади, а именно 2L x 2W. Благодаря   этому мы избежим ошибки, когда в клетке окажется пойманным лишь половина   льва или, что хуже, только его хвост.</p><h2 class="sic">Важное замечание</h2><p>Для упрощения расчетов хвост в качестве погрешности измерения можно   отбросить и не принимать во внимание.</p><p>Далее последовательно накрываем каждый из размеченных прямоугольников   пустыни клеткой и проверяем, пойман лев или нет. Как только лев окажется в   клетке, процедура поимки считается завершенной.</p></body></html>

Результат данного примера показан на рис. 5.10.

Рис. 5.10. Изменение вида абзаца за счёт использования соседних селекторов

В данном примере текст отформатирован с применением абзацев (тег <p>), но запись H2.sic + P устанавливает стиль только для первого абзаца идущего после тега <h2>, у которого добавлен класс с именем sic.

Соседние селекторы удобно использовать для тех тегов, к которым автоматически добавляются отступы, чтобы самостоятельно регулировать величину отбивки. Например, если подряд идут теги <h1> и <h2>, то расстояние между ними легко регулировать как раз с помощью соседних селекторов. Аналогично дело обстоит и для идущих подряд тегов <h2> и <p>, а также в других подобных случаях. В примере 5.11 таким манером изменяется величина отступов между указанными тегами.

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

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Соседние селекторы</title><style>H1 + H2 { margin-top: -10px; /* Смещаем заголовок 2 вверх */}H2 + P { margin-top: -1em; /* Смещаем первый абзац вверх к заголовку */}</style></head><body><h1>Заголовок 1</h1><h2>Заголовок 2</h2><p>Абзац!</p></body></html>

Поскольку при использовании соседних селекторов стиль применяется только ко второму элементу, то размер отступов уменьшается за счёт включения отрицательного значения у свойства margin-top. При этом текст поднимается вверх, ближе к предыдущему элементу.

Дочерние селекторы

Дочерним называется элемент, который непосредственно располагается внутри родительского элемента. Чтобы лучше понять отношения между элементами документа, разберём небольшой код (пример 5.12).

Пример 5.12. Вложенность элементов в документе

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Lorem ipsum</title></head><body><div class="main"><p><em>Lorem ipsum dolor sit amet</em>, consectetuer adipiscing    elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam    erat volutpat.</p><p><strong><em>Ut wisis enim ad minim veniam</em></strong>,    quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex    ea commodo consequat.</p></div></body></html>

В данном примере применяется несколько контейнеров, которые в коде располагаются один в другом. Нагляднее это видно на дереве элементов, так называется структура отношений тегов документа между собой (рис. 5.11).

Рис. 5.11. Дерево элементов для примера

На рис. 5.11 в удобном виде представлена вложенность элементов и их иерархия. Здесь дочерним элементом по отношению к тегу <div> выступает тег <p>. Вместе с тем тег <strong> не является дочерним для тега <div>, поскольку он расположен в контейнере <p>.

Вернёмся теперь к селекторам. Дочерним селектором считается такой, который в дереве элементов находится прямо внутри родительского элемента. Синтаксис применения таких селекторов следующий.

Селектор 1 > Селектор 2 { Описание правил стиля }

Стиль применяется к Селектору 2, но только в том случае, если он является дочерним для Селектора 1.

Если снова обратиться к примеру 5.12, то стиль вида P > EM { color: red } будет установлен для первого абзаца документа, поскольку тег <em> находится внутри контейнера <p>, и не даст никакого результата для второго абзаца. А все из-за того, что тег <em> во втором абзаце расположен в контейнере <strong>, поэтому нарушается условие вложенности.

По своей логике дочерние селекторы похожи на селекторы контекстные. Разница между ними следующая. Стиль к дочернему селектору применяется только в том случае, когда он является прямым потомком, иными словами, непосредственно располагается внутри родительского элемента. Для контекстного селектора же допустим любой уровень вложенности. Чтобы стало понятно, о чем идет речь, разберём следующий код (пример 5.13).

Пример 5.13. Контекстные и дочерние селекторы

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Дочерние селекторы</title><style>DIV I { /* Контекстный селектор */ color: green; /* Зеленый цвет текста */}P > I { /* Дочерний селектор */ color: red; /* Красный цвет текста */}</style></head><body><div><p><i>Lorem ipsum dolor sit amet</i>, consectetuer adipiscing    elit, sed diem nonummy nibh euismod tincidunt ut lacreet <i>dolore magna</i>    aliguam erat volutpat.</p></div></body></html>

Результат данного примера показан на рис. 5.12.

Рис. 5.12. Цвет текста, заданный с помощью дочернего селектора

На тег <i> в примере действуют одновременно два правила: контекстный селектор (тег <i> расположен внутри <div>) и дочерний селектор (тег <i> является дочерним по отношению к <p>). При этом правила являются равносильными, поскольку все условия для них выполняются и не противоречат друг другу. В подобных случаях применяется стиль, который расположен в коде ниже, поэтому курсивный текст отображается красным цветом. Стоит поменять правила местами и поставить DIV I ниже, как цвет текста изменится с красного на зеленый.

Заметим, что в большинстве случаев от добавления дочерних селекторов можно отказаться, заменив их контекстными селекторами. Однако использование дочерних селекторов расширяет возможности по управлению стилями элементов, что в итоге позволяет получить нужный результат, а также простой и наглядный код.

Удобнее всего применять указанные селекторы для элементов, которые обладают иерархической структурой – сюда относятся, например, таблицы и разные списки. В примере 5.13 показано изменение вида списка с помощью стилей. За счёт вложения одного списка в другой получаем разновидность меню. Заголовки при этом располагаются горизонтально, а набор ссылок – вертикально под заголовками (рис. 5.13).

Рис. 5.13. Список в виде меню

Для размещения текста по горизонтали к селектору LI добавляется стилевое свойство float. Чтобы при этом разделить между собой стиль горизонтального и вертикального списка и применяются дочерние селекторы (пример 5.14).

Пример 5.14. Использование дочерних селекторов

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Дочерние селекторы</title><style>UL#menu { margin: 0; padding: 0; /* Убираем отступы */}UL#menu > LI { list-style: none; /* Убираем маркеры списка */ width: 100px; /* Ширина элемента в пикселах */ background: #b3d9d2; /* Цвет фона */ color: #333; /* Цвет текста */ padding: 5px; /* Поля вокруг текста */ font-family: Arial, sans-serif; /* Рубленый шрифт */ font-size: 90%; /* Размер шрифта */ font-weight: bold; /* Жирное начертание */ float: left; /* Располагаем элементы по горизонтали */}LI > UL { list-style: none; /* Убираем маркеры списка */ margin: 0; padding: 0; /* Убираем отступы вокруг элементов списка */ border-bottom: 1px solid #666; /* Граница внизу */ padding-top: 5px; /* Добавляем отступ сверху */}LI > A { display: block; /* Ссылки отображаются в виде блока */ font-weight: normal; /* Нормальное начертание текста */ font-size: 90%; /* Размер шрифта */ background: #fff; /* Цвет фона */ border: 1px solid #666; /* Параметры рамки */ border-bottom: none; /* Убираем границу снизу */ padding: 5px; /* Поля вокруг текста */}</style></head><body><ul id="menu"> <li>Правка <ul> <li><a href="#">Отменить</a></li> <li><a href="#">Вырезать</a></li> <li><a href="#">Копировать</a></li> <li><a href="#">Вставить</a></li> </ul> </li> <li>Начертание<ul> <li><a href="#">Жирное</a></li> <li><a href="#">Курсивное</a></li> <li><a href="#">Подчеркнутое</a></li> </ul> </li><li>Размер<ul> <li><a href="#">Маленький</a></li> <li><a href="#">Нормальный</a></li> <li><a href="#">Средний</a></li> <li><a href="#">Большой</a></li> </ul> </li> </ul></body></html>

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

Селекторы атрибутов

Многие теги различаются по своему действию в зависимости от того, какие в них используются атрибуты. Например, тег <input> может создавать кнопку, текстовое поле и другие элементы формы всего лишь за счёт изменения значения атрибута type. При этом добавление правил стиля к селектору INPUT применит стиль одновременно ко всем созданным с помощью этого тега элементам. Чтобы гибко управлять стилем подобных элементов, в CSS введены селекторы атрибутов. Они позволяют установить стиль по присутствию определённого атрибута тега или его значения.

Рассмотрим несколько типичных вариантов применения таких селекторов.

Простой селектор атрибута

Устанавливает стиль для элемента, если задан специфичный атрибут тега. Его значение в данном случае не важно. Синтаксис применения такого селектора следующий.

[атрибут] { Описание правил стиля }

Селектор[атрибут] { Описание правил стиля }

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

В примере 5.15 показано изменение стиля тега <q>, в том случае, если к нему добавлен атрибут title.

Пример 5.15. Вид элемента в зависимости от его атрибута

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Селекторы атрибутов</title><style>Q { font-style: italic; /* Курсивное начертание */ quotes: "\00AB" "\00BB"; /* Меняем вид кавычек в цитате */}Q[title] { color: maroon; /* Цвет текста */}</style></head><body><p>Продолжая известный закон Мерфи, который гласит: <q>Если неприятность    может случиться, то она обязательно случится</q>, можем ввести свое наблюдение: <q title="Из законов Фергюссона-Мержевича">После того, как веб-страница    будет корректно отображаться в одном браузере, выяснится,    что она неправильно показывается в другом</q>.</p></body></html>

Результат примера показан на рис. 5.14.

Рис. 5.14. Изменение стиля элемента в зависимости от применения атрибута title

В данном примере меняется цвет текста внутри контейнера <q>, когда к нему добавляется title. Обратите внимание, что для селектора Q[title] нет нужды повторять стилевые свойства, поскольку они наследуются от селектора Q.

Атрибут со значением

Устанавливает стиль для элемента в том случае, если задано определённое значение специфичного атрибута. Синтаксис применения следующий.

[атрибут="значение"] { Описание правил стиля }

Селектор[атрибут="значение"] { Описание правил стиля }

В первом случае стиль применяется ко всем тегам, которые содержат указанное значение. А во втором – только к определённым селекторам.

В примере 5.16 показано изменение стиля ссылки в том случае, если тег <a> содержит атрибут target со значением _blank. При этом ссылка будет открываться в новом окне и чтобы показать это, с помощью стилей добавляем небольшой рисунок перед текстом ссылки.

Пример 5.16. Стиль для открытия ссылок в новом окне

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Селекторы атрибутов</title><style>A[target="_blank"] {     background: url(images/blank.png) 0 6px no-repeat; /* Параметры фонового рисунка */ padding-left: 15px; /* Смещаем текст вправо */}</style></head><body><p><a href="1.html">Обычная ссылка</a> | <a href="link2" target="_blank">Ссылка в новом окне</a></p></body></html>

Результат примера показан ниже (рис. 5.15).

Рис. 5.15. Изменение стиля элемента в зависимости от значения target

В данном примере рисунок к ссылке добавляется с помощью свойства background. В его функции входит создание повторяющейся фоновой картинки, но повторение фона можно отменить через значение no-repeat, что в итоге даст единственное изображение.


Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.056 с.