Примечание.
Хотя знаки кавычек, специфицированные в 'quotes' предыдущего примера, по соглашению находятся на
клавиатурах компьютера, установки для высококачественного вывода потребуют других символов ISO 10646.
В следующей информативной таблице приведён список некоторых символов кавычек ISO 10646:
|
Ориентировочное представление |
код ISO 10646 (hex) |
Описание |
|---|
| " | 0022 | КАВЫЧКА [двойная
кавычка ASCII]
|
| ' | 0027 | АПОСТРОФ [одиночная кавычка ASCII]
|
| < | 2039 | ОДИНОЧНАЯ ЛЕВАЯ УГЛОВАЯ КАВЫЧКА
|
| > | 203A | ОДИНОЧНАЯ ПРАВАЯ УГЛОВАЯ КАВЫЧКА
|
| < | 00AB | ЛЕВАЯ ДВОЙНАЯ УГЛОВАЯ КАВЫЧКА
|
| > | 00BB | ПРАВАЯ ДВОЙНАЯ УГЛОВАЯ КАВЫЧКА
|
| ` | 2018 | ЛЕВАЯ ОДИНОЧНАЯ КАВЫЧКА [single high-6]
|
| ' | 2019 | ПРАВАЯ ОДИНОЧНАЯ КАВЫЧКА [single high-9]
|
| `` | 201C | ЛЕВАЯ ДВОЙНАЯ КАВЫЧКА [double high-6]
|
| '' | 201D | ПРАВАЯ ДВОЙНАЯ КАВЫЧКА [double high-9]
|
| ,, | 201E | ДВОЙНАЯ КАВЫЧКА LOW-9 [double low-9] |
Знаки кавычек вставляются в
соответствующих местах документа
значениями 'open-quote'
и 'close-quote' свойства 'content'.
Каждое вхождение 'open-quote' или 'close-quote'
замещается одной их строк значения 'quotes', базируясь на
глубине вложения.
'Open-quote' относится к
первой кавычке из пары, 'close-quote' относится ко
второй. То, какая пара кавычек используется,
зависит от уровня вложения кавычек: число
вхождений 'open-quote' во всём сгенерированном
тексте перед текущим вхождением минус
число вхождений 'close-quote'. Если глубина - 0,
используется первая пара, если глубина - 1,
вторая пара и т.д. Если глубина вложения
больше, чем число пар, повторяется
последняя пара.
Обратите внимание, что
глубина вложения кавычек не зависит от
вложения документа-источника или структуры
форматирования.
Некоторые стили печати
требуют, чтобы знак открывающей кавычки
повторялся перед каждым параграфом блока
кавычек, охватывающего несколько
параграфов, но только последний параграф
оканчивался знаком закрывающей кавычки. В
CSS этого можно добиться вставкой "фантома"
закрывающих кавычек. Ключевое слово 'no-close-quote' уменьшает
уровень кавычек, но не вставляет знак
кавычки.
Пример(ы):
Следующая таблица стилей помещает знаки открывающей кавычки в каждом параграфе в
BLOCKQUOTE и вставляет одиночную закрывающую кавычку в конце:
BLOCKQUOTE P:before { content: open-quote }
BLOCKQUOTE P:after { content: no-close-quote }
BLOCKQUOTE P.last:after { content: close-quote }
Это относится к последнему параграфу, маркированному классом "last",
поскольку нет селекторов, которые могут совпадать с последним потомком элемента.
Для симметрии имеется также ключевое слово 'no-open-quote', которое ничего
не вставляет, а увеличивает глубину закавычивания на единицу.
Примечание. Если язык закавычивания отличается от языка
окружающего текста, то лучше использовать знаки кавычек языка окружающего текста, а не языка закавычивания.
Пример(ы):
Французский внутри английского:
The device of the order of the garter is “Honi soit qui mal y pense.”
Английский внутри французского:
Il disait: < Il faut mettre l'action en ‹ fast
forward ›.>
Таблица стилей типа следующей установит
свойство 'quotes' таким образом, что 'open-quote' и 'close-quote'
будут корректно работать во всех элементах.
Это правила для документов, содержащих
только английский, французский или оба этих
языка. Одно правило понадобится для каждого
дополнительного языка. Обратите внимание
на использование комбинатора-потомка (">")
для установки кавычек в элементы на базе
языка окружающего текста:
[LANG|=fr] > * { quotes: "<" ">" "\2039" "\203A" }
[LANG|=en] > * { quotes: "\201C" "\201D" "\2018" "\2019" }
Знаки кавычек для английского показаны здесь в такой форме, что большинство людей
будет способно их напечатать. Если Вы можете печатать их напрямую, то они будут выглядеть примерно так:
[LANG|=fr] > * { quotes: "<" ">" "<" ">" }
[LANG|=en] > * { quotes: """ """ "'" "'" }
12.5 Автоматические счётчики и нумерация
Автоматическая нумерация в CSS2 контролируется двумя свойствами,
'counter-increment'
и 'counter-reset'.
Счётчики, определённые в этих свойствах,
используются с функциями counter() и counters()
свойства 'content'.
Свойство 'counter-increment'
принимает одно или более имён счётчиков (идентификаторы),
за каждым из которых может следовать целое
число. Это число обозначает, насколько
счётчик увеличивается при каждом появлении
элемента. Увеличение по умолчанию - 1.
Допустимы 0 и негативные значения.
Свойство
'counter-reset'
также содержит список из одного или более
имён счётчиков, за каждым из которых может
следовать целое число. Целое число задаёт
значение, в которое счётчик сбрасывается при каждом появлении
элемента. По умолчанию - 0.
Если 'counter-increment'
относится к счётчику, который не находится
в области видимости (см. ниже)
какого-либо 'counter-reset',
то принимается, что счётчик установлен в 0
корневым элементом.
Пример(ы):
Здесь показан способ нумерации глав и разделов:
"Chapter 1", "1.1", "1.2" и т.д.:
H1:before {
content: "Chapter " counter(chapter) ". ";
counter-increment: chapter; /* Добавляет 1 к главе */
counter-reset: section; /* Устанавливает раздел в 0 */
}
H2:before {
content: counter(chapter) "." counter(section) " ";
counter-increment: section;
}
Если элемент увеличивает/сбрасывает счётчик и использует его (в свойстве 'content'
в псевдоэлементах :before или :after), то счётчик
используется после того, как увеличен/сброшен.
Если
элемент и увеличивает, и сбрасывает счётчик, то счётчик сначала
сбрасывается, а затем увеличивается.
Свойство
'counter-reset'
следует правилам каскадирования. Таким
образом, в соответствии с каскадированием,
следующая таблица стилей:
H1 { counter-reset: section -1 }
H1 { counter-reset: imagenum 99 }
сбросит только 'imagenum'. Чтобы сбросить оба счётчика, их нужно
специфицировать вместе:
H1 { counter-reset: section -1 imagenum 99 }
Счётчики являются "самовкладывающимися",
т.е. повторное использование счётчика в
элементах-потомках автоматически создаёт
новый объект счётчика. Это важно, например,
для таких случаев, как списки в HTML, где
элементы могут вкладываться внутри себя на
произвольную глубину, и может оказаться
невозможным определить уникально
именованный счётчик для каждого уровня.
Пример(ы):
Так, следующего достаточно для нумерации
вложенных элементов списка. Результат
очень похож на применение установки 'display:list-item'
и 'list-style: inside' в элементе LI:
OL { counter-reset: item }
LI { display: block }
LI:before { content: counter(item) ". "; counter-increment: item }
Самовложение базируется на том принципе,
что каждый элемент, имеющий 'counter-reset'
для счётчика X, создаёт новый счётчик X, область видимости
которого - элемент, его предшествующие
родственники и все потомки элемента и его
предшествующих родственников.
В
предыдущем примере OL создаст счётчик, и все
потомки OL будут ссылаться на этот счётчик.
Если мы обозначим с помощью item[n] nый экземпляр счётчика "item"
и "(" and ")" - начало и конец области видимости, то следующий фрагмент HTML будет
использовать указанные счётчики. (Мы используем ту же таблицу стилей, что и в предыдущем примере).
<OL> <!-- (set item[0] to 0 -->
<LI>item <!-- increment item[0] (= 1) -->
<LI>item <!-- increment item[0] (= 2) -->
<OL> <!-- (set item[1] to 0 -->
<LI>item <!-- increment item[1] (= 1) -->
<LI>item <!-- increment item[1] (= 2) -->
<LI>item <!-- increment item[1] (= 3) -->
<OL> <!-- (set item[2] to 0 -->
<LI>item <!-- increment item[2] (= 1) -->
</OL> <!-- ) -->
<OL> <!-- (set item[3] to 0 -->
<LI> <!-- increment item[3] (= 1) -->
</OL> <!-- ) -->
<LI>item <!-- increment item[1] (= 4) -->
</OL> <!-- ) -->
<LI>item <!-- increment item[0] (= 3) -->
<LI>item <!-- increment item[0] (= 4) -->
</OL> <!-- ) -->
<OL> <!-- (reset item[4] to 0 -->
<LI>item <!-- increment item[4] (= 1) -->
<LI>item <!-- increment item[4] (= 2) -->
</OL> <!-- ) -->
Функция 'counters()' генерирует строку,
составленную из значений всех счётчиков с
тем же самым именем, разделённых заданной
строкой.
Пример(ы):
Следующая
таблица стилей нумерует вложенные элементы списка как "1", "1.1", "1.1.1" и т.д.
OL { counter-reset: item }
LI { display: block }
LI:before { content: counters(item, "."); counter-increment: item }
По умолчанию счётчики форматируются десятичными
числами, а все стили, доступные для свойства 'list-style-type', доступны также для
счётчиков.
Обозначение будет такое:
counter(name)
для таблицы стилей по умолчанию, или:
counter(name, 'list-style-type')
Допустимы все стили, включая 'disc', 'circle', 'square' и 'none'.
Пример(ы):
H1:before { content: counter(chno, upper-latin) ". " }
H2:before { content: counter(section, upper-roman) " - " }
BLOCKQUOTE:after { content: " [" counter(bq, hebrew) "]" }
DIV.note:before { content: counter(notecntr, disc) " " }
P:before { content: counter(p, none) }
Элемент, который не отображается ('display' установлено в 'none'),
не может установить или сбросить счётчик.
Пример(ы):
С помощью следующей таблицы стилей
элементы H2 с классом "secret" не
увеличивают 'count2'.
H2.secret {counter-increment: count2; display: none}
В то же время, элементы с 'visibility',
установленной в 'hidden', увеличивают счётчики.
Большинство элементов уровня блока в CSS
генерируют один основной бокс блока.
В этом разделе мы обсуждаем два механизма CSS,
которые заставляют элемент генерировать
два бокса: один основной бокс блока (для
содержимого элемента) и отдельный бокс
маркёра (для элемента оформления, такого
как кружок, изображение или номер). Бокс
маркёра может быть позиционирован внутри
или вне основного бокса. В отличие от
содержимого :before и :after, бокс маркёра не
влияет на позицию основного бокса, какой бы
ни была схема позиционирования.
Самым
общим из этих двух механизмов является
новый для CSS2 механизм, называемый
маркёры.
Механизм с более ограниченными
возможностями привлекает свойства списков CSS1.
Свойства списков дают авторам быстрый
результат для многих сценариев
упорядоченных и неупорядоченных списков.
Однако маркёры дают авторам точный
контроль над содержимым и позицией
маркёров. Маркёры можно использовать
вместе со счётчиками для
создания новых стилей списков, нумерации
примечаний на полях и многого другого.
Например, следующий пример иллюстрирует,
как маркёры могут использоваться для того,
чтобы добавлять точку после каждого
элемента нумерованного списка.
Эта программа HTML и таблица стилей:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Создание списка с маркёрами</TITLE>
<STYLE type="text/css">
LI:before {
display: marker;
content: counter(mycounter, lower-roman) ".";
counter-increment: mycounter;
}
</STYLE>
</HEAD>
<BODY>
<OL>
<LI> Это первый элемент списка.
<LI> Это второй элемент списка.
<LI> Это третий элемент списка.
</OL>
</BODY>
</HTML>
должны дать на выходе примерно следующее:
i. Это первый элемент списка.
ii. Это второй элемент списка.
iii. Это третий элемент списка.
С помощью селекторов
потомков и дочерних
селекторов можно специфицировать
маркёры различных типов в зависимости от
глубины вложения списков.
Маркёры создаются путём установки
свойства 'display' в 'marker' внутри
псевдоэлементов :before или :after. Поскольку
содержимое 'block' и 'inline' в :before и :after является
частью основного бокса,
генерируемого элементом, содержимое 'marker'
форматируется в независимом боксе маркёра
вне основного бокса. Боксы маркёра
форматируются как единая строка (т.е. один бокс
строки (строчный бокс)), поэтому они не
обладают такой гибкостью, как поплавки.
Боксы маркёра создаются только тогда, когда
свойство 'content' псевдоэлементов
действительно генерирует содержимое.
Боксы
маркёра имеют заполнение и рамку, но не
имеют полей.
Для псевдоэлемента :before
базовая линия текста в боксе маркёра будет
выровнена вертикально относительно
базовой линии текста первой строки
содержимого основного бокса. Если основной
бокс не содержит текста, верхний внешний
край бокса маркёра будет выровнен с верхним
внешним краем основного бокса. Для
псевдоэлемента :after базовая линия текста в
боксе маркёра будет выровнена вертикально
относительно базовой линии текста
последней строки содержимого основного
бокса. Если основной бокс не содержит
текста, нижний внешний край бокса маркёра
будет выровнен с нижним внешним краем
основного бокса.
Высота бокса маркёра
задаётся в свойстве 'line-height'. Бокс маркёра :before
(:after) участвует в подсчёте высоты первого (последнего)
строчного бокса основного бокса. Таким
образом, маркёры выравниваются по первой и
последней строке содержимого элемента,
даже если боксы маркёра находятся в разных
строчных боксах. Если в основном боксе
отсутствует первый или последний строчный
бокс, то бокс маркёра сам устанавливает
свой первый строчный бокс.
Вертикальное
выравнивание бокса маркёра внутри его
строчного бокса специфицируется свойством 'vertical-align'.
Если
значение свойства 'width'
- 'auto', то ширина содержимого бокса
маркёра является шириной содержимого,
иначе - это значение 'width'. Для значений 'width' меньших, чем ширина
содержимого, свойство 'overflow'
специфицирует поведение при переполнении.
Боксы маркёра могут перекрывать основные
боксы. Для значений 'width'
больших, чем ширина содержимого,
свойство 'text-align' определяет
горизонтальное выравнивание содержимого в
боксе маркёра.
Свойство 'marker-offset'
специфицирует смещение по горизонтали
между боксом маркёра и ассоциированным основным
боксом. Расстояние измеряется между их
ближайшими краями рамок.
Примечание.
Если маркёр всплывает вправо от поплавка в
содержимом, отформатированном слева направо,
то основной бокс будет всплывать вниз от
правой стороны поплавка, но боксы маркёра
будут появляться слева от поплавка.
Поскольку левый край рамки основного бокса
расположен слева от поплавка (см. описание поплавков), а бокс маркёра
расположен вне края рамки основного бокса,
маркёр расположится также слева от
поплавка. Аналогичным будет и поведение при
форматировании справа налево, когда маркёр
всплывёт слева от поплавка.
Если
свойство 'display'
имеет значение 'marker' для содержимого,
генерируемого элементом с 'display: list-item', то
бокс маркёра, генерируемый для ':before',
замещает нормальный маркёр элемента списка.
В следующем примере содержимое
центрируется в боксе маркёра фиксированной
ширины.
Этот документ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Выравнивание содержимого в боксе маркёра</TITLE>
<STYLE type="text/css">
LI:before {
display: marker;
content: "(" counter(counter) ")";
counter-increment: counter;
width: 6em;
text-align: center;
}
</STYLE>
</HEAD>
<BODY>
<OL>
<LI> Это первый элемент списка.
<LI> Это второй элемент списка.
<LI> Это третий элемент списка.
</OL>
</BODY>
</HTML>
должен дать примерно такой вывод:
(1) Это первый
элемент списка.
(2) Это второй
элемент списка.
(3) Это третий
элемент списка.
В следующем примере создаются маркёры до и после элементов списка.
Этот документ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Маркёры до и после элементов списка</TITLE>
<STYLE type="text/css">
@media screen, print {
LI:before {
display: marker;
content: url("smiley.gif");
LI:after {
display: marker;
content: url("sad.gif");
}
}
</STYLE>
</HEAD>
<BODY>
<UL>
<LI>первый элемент списка появляется первым
<LI>второй элемент списка появляется вторым
</UL>
</BODY>
</HTML>
должен дать примерно такой вывод (здесь используется рисунок ascii вместо изображения gif улыбки):
:-) первый элемент списка
появляется первым :-(
:-) второй элемент списка
появляется вторым :-(
В следующем примере маркёры используются
для нумерации примечаний (параграфов).
Данный документ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Маркёры для создания нумерованных примечаний 4</TITLE>
<STYLE type="text/css">
P { margin-left: 12 em; }
@media screen, print {
P.Note:before {
display: marker;
content: url("note.gif")
"Примечание " counter(note-counter) ":";
counter-increment: note-counter;
text-align: left;
width: 10em;
}
}
</STYLE>
</HEAD>
<BODY>
<P>Это первый параграф данного документа.</P>
<P CLASS="Note">Это очень короткий документ.</P>
<P>Это конец.</P>
</BODY>
</HTML>
должен дать примерно такой вывод:
Это первый параграф
данного документа.
Примечание 1: Это очень короткий
документ.
Это конец.
Это свойство специфицирует расстояние
между ближайшим краем рамки бокса маркёра
и ассоциированным с ним основным
боксом. Смещение может или
специфицироваться пользователем (<length>), или
выбираться ПА ('auto'). Значения размеров могут
быть отрицательными, но могут существовать
ограничения, в зависимости от специфики
реализации.
В следующем примере показано, как маркёры
могут использоваться для добавления точек
после каждого элемента нумерованного
списка.
Эта программа HTML и таблица стилей:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Пример маркёров 5</TITLE>
<STYLE type="text/css">
P { margin-left: 8em } /* Создаёт пространство для счётчиков */
LI:before {
display: marker;
marker-offset: 3em;
content: counter(mycounter, lower-roman) ".";
counter-increment: mycounter;
}
</STYLE>
</HEAD>
<BODY>
<P> Это большой предшествующий параграф ...
<OL>
<LI> Это первый элемент списка.
<LI> Это второй элемент списка.
<LI> Это третий элемент списка.
</OL>
<P> Это большой последующий параграф ...
</BODY>
</HTML>
должен дать примерно такой вывод:
Это большой предшествующий
параграф ...
i. Это первый элемент списка.
ii. Это второй элемент списка.
iii. Это третий элемент списка.
Это большой последующий
параграф ...
Свойства
списков создают базовое
визуальное форматирование списков. Как и с
более общими маркёрами, элемент с 'display:
list-item' генерирует основной
для содержимого элемента и
необязательный бокс маркёра. Другие
свойства списка позволяют авторам
специфицировать тип маркёра (изображение,
глиф или цифра) и его позицию относительно
основного бокса (вне или внутри него перед
содержимым). Они не позволяют авторам
специфицировать другие стили (цвет, шрифт,
выравнивание и т.п.) для маркёра списка или
уточнять его позицию относительно
основного бокса.
Следовательно, если
маркёр M (созданный в 'display: marker')
используется с элементом списка, созданным
в свойстве списка, M замещает стандартный
маркёр элемента списка.
Вместе со
свойствами списка свойства фона
применяются только к основному боксу; бокс
маркёра 'outside' прозрачен. Маркёры дают
больший контроль над стилем бокса маркёра.
-
'list-style-type'
| Значение: | disc | circle | square | decimal | decimal-leading-zero |
lower-roman | upper-roman | lower-greek | lower-alpha | lower-latin | upper-alpha | upper-latin |
hebrew | armenian | georgian |
cjk-ideographic | hiragana | katakana | hiragana-iroha | katakana-iroha |
none | inherit
|
| Начальное: | disc |
| Применяется: | к
элементам с 'display: list-item' |
| Наследуется: | да
|
| Процентное: | N/A
|
| Носитель: | визуальный
|
Это свойство специфицирует вид маркёра
элемента списка, если
'list-style-image'
имеет значение 'none' или если изображение, на
которое указывает URI, не может быть
отображено. Значение 'none' специфицирует
отсутствие маркёров, для других случаев имеются
три типа маркёров: глифы, системы нумерации
и алфавитные системы.
Примечание. Нумерованные списки
улучшают доступность документа, т.к. делают
списки более удобными для навигации.
Глифы специфицируются с помощью disc,
circle и
square. Их точное
представление зависит от ПА.
Системы нумерации специфицируются с помощью:
-
decimal
- Десятеричных чисел, начинающихся с 1.
- decimal-leading-zero
- Десятеричных чисел, дополненных начальными нулями (например, 01, 02, 03, ..., 98, 99).
- lower-roman
- Римских цифр в нижнем регистре (i, ii, iii, iv, v и т.д.).
- upper-roman
- Римских цифр в верхнем регистре (I, II, III, IV, V и т.д.).
- hebrew
- Традиционной еврейской нумерации.
- georgian
- Традиционной грузинской нумерации (an, ban, gan, ..., he, tan, in, in-an, ...).
- armenian
- Традиционной армянской нумерации.
- cjk-ideographic
- Простых идеографических чисел.
- hiragana
- a, i, u, e, o, ka, ki, ...
- katakana
- A, I, U, E, O, KA, KI, ...
- hiragana-iroha
- i, ro, ha, ni, ho, he, to, ...
- katakana-iroha
- I, RO, HA, NI, HO, HE, TO, ...
ПА, не распознающий системы нумерации, должен использовать 'decimal'.
Примечание.
Этот документ не специфицирует точный механизм действия каждой системы нумерации
(например, как вычисляются римские цифры). В будущих Примечаниях W3C могут быть даны дальнейшие разъяснения.
Алфавитные системы специфицируются с помощью:
- lower-latin
или lower-alpha
- Букв ascii нижнего регистра (a, b, c, ... z).
- upper-latin
или upper-alpha
- Букв ascii верхнего регистра (A, B, C, ... Z).
- lower-greek
- Классических греческих букв нижнего регистра альфа, бета, гамма, ... (α, β, γ, ...)
Эта спецификация не определяет то, как происходит перенос алфавитной системы в конце
алфавита. Например, после 26 элементов списка представление 'lower-latin' не определено. Поэтому для длинных
списков мы рекомендуем, чтобы авторы специфицировали точные числа.
Например, следующий документ HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Нумерация латинскими буквами нижнего регистра</TITLE>
<STYLE type="text/css">
OL { list-style-type: lower-roman }
</STYLE>
</HEAD>
<BODY>
<OL>
<LI> Это первый элемент списка.
<LI> Это второй элемент списка.
<LI> Это третий элемент списка.
</OL>
</BODY>
</HTML>
может дать на выходе:
i Это первый элемент списка.
ii Это второй элемент списка.
iii Это третий элемент списка.
Обратите внимание, что выравнивание
маркёров списка (здесь - по правому краю)
зависит от ПА.
Примечание. Следующие версии CSS могут предоставить
более совершенные механизмы международных стилей нумерации.
Это свойство определяет изображение,
которое будет использоваться как маркёр
элемента списка. Если изображение доступно,
оно замещает маркёр, установленный 'list-style-type'.
Пример(ы):
В следующем примере устанавливается маркёр
- изображение "ellipse.png" - в начале каждого элемента списка .
UL { list-style-image: url("http://png.com/ellipse.png") }
Это свойство специфицирует позицию бокса маркёра в основном боксе блока.
Значения имеют следующий смысл:
- outside
- Бокс маркёра находится вне основного бокса блока.
Примечание. CSS1 не специфицировал точное размещение бокса маркёра из соображений совместимости, и в CSS2 осталась
такая же двусмысленность. Для более точного управления боксами маркёров используйте маркёры.
- inside
- Бокс маркёра это первый инлайн-бокс в боксе основного блока, после которого всплывает содержимое элемента.
Например:
<HTML>
<HEAD>
<TITLE>Сравнение позиций inside/outside</TITLE>
<STYLE type="text/css">
UL { list-style: outside }
UL.compact { list-style: inside }
</STYLE>
</HEAD>
<BODY>
<UL>
<LI>first list item comes first
<LI>second list item comes second
</UL>
<UL class="compact">
<LI>first list item comes first
<LI>second list item comes second
</UL>
</BODY>
</HTML>
Этот пример отображается так:
В тексте справа-налево маркёры должны выводиться с правой стороны бокса.
Свойство 'list-style'
- это сокращённое обозначение для установки
трёх свойств: 'list-style-type', 'list-style-image' и 'list-style-position' в
одном месте в таблице стилей.
Пример(ы):
UL { list-style: upper-roman inside } /* Какой-либо UL */
UL > UL { list-style: circle outside } /* UL - потомок UL */
Хотя авторы могут специфицировать информацию о 'list-style'
непосредственно в элементах списка (напр., LI
в HTML), это нужно делать аккуратно. Следующие правила похожи, но в первом объявляется селектор-потомок,
а во втором (более специфический) дочерний селектор.
OL.alpha LI { list-style: lower-alpha } /* LI - потомок OL */
OL.alpha > LI { list-style: lower-alpha } /* LI-наследник OL */
Авторы, использующие только селекторы-потомки,
могут не получить тот результат, на который рассчитывали. Рассмотрим следующие правила:
<HTML>
<HEAD>
<TITLE>ПРЕДУПРЕЖДЕНИЕ: Непредсказуемый результат из-за каскадирования</TITLE>
<STYLE type="text/css">
OL.alpha LI { list-style: lower-alpha }
UL LI { list-style: disc }
</STYLE>
</HEAD>
<BODY>
<OL class="alpha">
<LI>level 1
<UL>
<LI>level 2
</UL>
</OL>
</BODY>
</HTML>
Ожидается, что элементы списка уровня 1
будут маркированы лэйблами 'lower-alpha', а
элементы уровня 2 - лэйблами 'disc'. Однако порядок
каскадирования вызовет маскирование
второго правила первым (которое содержит
специфическую информацию класса). В
следующих правилах для решения проблемы
используется дочерний
селектор:
OL.alpha > LI { list-style: lower-alpha }
UL LI { list-style: disc }
Другим решением может быть спецификация
информации 'list-style' только для
типа элемента списка:
OL.alpha { list-style: lower-alpha }
UL { list-style: disc }
При наследовании значения 'list-style' будут
перенесены из элементов OL и UL в элементы LI.
Это рекомендуемый способ спецификации
информации стиля списка.
Пример(ы):
Значение URI может комбинироваться с
любым другим значением, как здесь:
UL { list-style: url("http://png.com/ellipse.png") disc }
В данном примере 'disc' будет
использоваться, если изображение
недоступно.
Значение 'none' свойства 'list-style' устанавливает
'list-style-type'
и 'list-style-image'
в 'none':
UL { list-style: none }
В результате - никакие маркёры элементов списка не отображаются.
 |
|