18 Интерфейс пользователя

Содержание

18.1 Курсоры: свойство 'cursor'

'cursor'
Значение:  [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize | text | wait | help | progress ] ] | inherit
Начальное значение:  auto
Область применения:  все элементы
Наследование:  да
Процентное задание:  Н/Д
Устройства:  устройства визуального форматирования, интерактивные устройства
Вычисляемое значение:  как определено, за исключением того, что любые относительные URL преобразуются в абсолютные

Данное свойство определяет тип курсора, используемого при работе с указывающим устройством. Значения имеют следующий смысл:

auto
Агент пользователя определяет отображаемый курсор, исходя из текущего контекста.
crosshair
Простое перекрестие (например, короткие отрезки напоминающее символ "+").
default
Курсор, используемый на данной платформе по-умолчанию. Зачастую представляется в виде стрелки.
pointer
Курсором представляется указателем, обозначающим ссылку.
move
Курсор, определяющий объект, который можно переместить.
e-resize, ne-resize, nw-resize, n-resize, se-resize, sw-resize, s-resize, w-resize
Курсор, определяющий перемещение некоторого края. Например, при перемещении, начинающемся с правого нижнего угла блока, используется курсор 'se-resize'.
text
Курсор, используемый при выделении текста. Зачастую представляется в виде вертикальной линии "|".
wait,
Курсор, указывающий на занятость программы, когда пользователю следует подождать. Зачастую представляется в виде циферблата или песочных часов.
progress
Индикатор выполнения. Программа выполняет некоторую обработку, но отличается от 'wait', в котором пользователь может все еще взаимодействовать с программой. Зачастую представляется в виде вращающихся песочных часов, или в виде стрелки с циферблатом или песочными часами.
help
Курсор, означающий, что для объекта, на который он указывает, имеется справочная информация. Зачастую представляется в виде вопросительного знака или воздушного шара.
<uri>
Агент пользователя загружает курсор из ресурса, задаваемого этим URI. Если агенту не удается обработать курсор, расположенный первым в списке курсоров, ему следует попытаться обработать второй, третий и т.д. Если агенту не удается обработать ни одного курсора, заданного пользователем, он должен использовать общий курсор, расположенный в конце этого списка.

Пример(ы):


:link,:visited { cursor: url(example.svg#linkcursor), url(hyper.cur), pointer }

Данный пример устанавливает в качестве курсора для всех гиперссылок (и для посещенных и для непосещенных) внешний SVG-курсор. Агенты пользователей, не поддерживающие SVG-курсоры, просто переключаться на следующее значение и попытаются использовать курсор "hyper.cur". Если не поддерживается также и этот формат курсора, то агент пользователя перейдет к следующему значению и просто представит курсор 'pointer'.

18.2 Системные цвета

Примечание. Системные цвета нежелательны в Цветовом модуле CSS3.

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

Для системы, в которой отсутствует соответствующее значение, заданное значение следует сопоставить с ближайшим к нему системным значением, или цветом, используемым по-умолчанию.

Ниже перечислены дополнительные значения для связанных с цветом свойств CSS, и их семантика. Любое свойство, используемое при настройке цветов (например, 'color' или 'background-color'), может принимать одно из следующих имен. Несмотря на независимость от регистра, рекомендуется соблюдать используемое в них сочетание заглавных и строчных букв, делающее данные имена более разборчивыми.

ActiveBorder
Граница активного окна.
ActiveCaption
Заголовок активного окна.
AppWorkspace
Цвет фона интерфейса многостраничного документа.
Background
Цвет фона рабочего стола.
ButtonFace
Цвет "лицевой" стороны трехмерных элементов.
ButtonHighlight
Цвет подсветки для трехмерных элементов (для краев, расположенных "лицом" в сторону, противоположную от источника света).
ButtonShadow
Цвет тени трехмерных элементов.
ButtonText
Цвет текста на кнопках.
CaptionText
Цвет текста в заголовках, в элементах управления размерами и стрелочных блоках полосы прокрутки.
GrayText
Цвет отключенного (недоступного) текста. Если текущий драйвер дисплея не поддерживает насыщенно-серый цвет, для этого цвета устанавливается значение #000.
Highlight
Цвет объекта(ов), выделяемых в элементах управления.
HighlightText
Цвет текста объекта(ов), выделенных в элементах управления.
InactiveBorder
Цвет границы неактивного окна.
InactiveCaption
Цвет заголовка неактивного окна.
InactiveCaptionText
Цвет текста в неактивном заголовке.
InfoBackground
Цвет фона всплывающей подсказки.
InfoText
Цвет текста всплывающей подсказки.
Menu
Цвет фона меню.
MenuText
Цвет текста в меню.
Scrollbar
Цвет полосы прокрутки.
ThreeDDarkShadow
Цвет темной тени для трехмерных элементов.
ThreeDFace
Цвет "лицевой" стороны трехмерных элементов.
ThreeDHighlight
Цвет подсветки для трехмерных элементов.
ThreeDLightShadow
Светлый цвет для трехмерных элементов (для краев, расположенных "лицом" к источнику света).
ThreeDShadow
Цвет темной тени для трехмерных элементов.
Window
Цвет фона окна.
WindowFrame
Цвет рамки окна.
WindowText
Цвет текста в окне.

Пример(ы):

Например, следующее правило позволяет использовать одинаковые цвета для оформления элементов переднего и заднего плана и в абзаце и в пользовательском окне:


p { color: WindowText; background-color: Window }

18.3 Настройки пользователя для шрифтов

Как и для цветов, авторы могут задавать шрифты таким образом, чтобы использовать системные ресурсы пользователя. Более подробную информацию можно получить в описании свойства 'font'.

18.4 Динамические контуры: свойство 'outline'

Иногда авторам таблиц стилей необходимо акцентировать внимание на некотором визуально отображаемом объекте, например, на кнопке, активном поле формы, месте для графического объекта и т.д. В CSS 2.1 отличие контура от границ состоит в следующем:

  1. Контуры вообще не занимают места.
  2. Контуры могут иметь непрямоугольную форму.

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

'outline'
Значение:  [ <'outline-color'> || <'outline-style'> || <'outline-width'> ] | inherit
Начальное значение:  см. каждое свойство в отдельности
Область применения:  все элементы
Наследование:  нет
Процентное задание:  Н/Д
Устройства:  устройства визуального форматирования, интерактивные устройства
Вычисляемое значение:  см. каждое свойство в отдельности
'outline-width'
Значение:  <ширина границы> | inherit
Начальное значение:  medium
Область применения:  все элементы
Наследование:  нет
Процентное задание:  Н/Д
Устройства:  устройства визуального форматирования, интерактивные устройства
Вычисляемое значение:  абсолютная длина; '0' если стиль границ – 'none'
'outline-style'
Значение:  <стиль границы> | inherit
Начальное значение:  none
Область применения:  все элементы
Наследование:  нет
Процентное задание:  Н/Д
Устройства:  устройства визуального форматирования, интерактивные устройства
Вычисляемое значение:  как определено
'outline-color'
Значение:  <цвет> | invert | inherit
Начальное значение:  invert
Область применения:  все элементы
Наследование:  нет
Процентное задание:  Н/Д
Устройства:  устройства визуального форматирования, интерактивные устройства
Вычисляемое значение:  как определено

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

Контур выводится непосредственно за пределами края границы.

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

Свойство 'outline-width' принимает те же значения, что и свойство 'border-width'.

Свойство 'outline-style' принимает те же значения, что и свойство 'border-style', за исключением значения 'hidden', недопустимого для стиля контура.

Значение свойства 'outline-color' принимает все цвета, так же как ключевое слово 'invert'. 'Invert' осуществляющее инверсию цветов, используемых для отображения пикселов на экране. Этот традиционный прием используется, для того чтобы независимо от цвета фона были всегда видны акцентирующие границы.

Соответствующие агенты пользователей могут игнорировать значение 'invert' на платформах, не поддерживающих инверсию цветов, используемых для отображения пикселов на экране. Если агент пользователя не поддерживает значение 'invert', тогда начальное значение свойства 'outline-color' равно значению свойства 'color', аналогично начальному значению свойства 'border-top-color'.

Свойство 'outline' — это стенографическое свойство, оно устанавливает значения для всех трех свойств 'outline-style', 'outline-width' и 'outline-color'.

Примечание.Контуры выглядят одинаково со всех сторон. В отличие от границ, у них нет свойства 'outline-top' или 'outline-left'.

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

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

Пример(ы):

Ниже приведен пример прорисовки толстого контура вокруг элемента BUTTON:


button { outline-width : thick solid}

Для динамического изменения толщины контура без необходимости переформатирования страницы можно использовать скрипты.

18.4.1 Контуры и фокус

В графическом интерфейсе пользователя контуры могут использоваться вокруг элементов страницы, на которых располагается фокус. Эти контуры выступают в роли дополнения к границам, так что их вывод или удаление не должны приводить к переформатированию документа. Фокус представляет собой часть процесса взаимодействия пользователя с документом (например, для ввода текста, выбора кнопки и т.д.). Агенты пользователей, поддерживающие группу интерактивных устройств, должны отслеживать местоположение фокуса и должны предоставлять средства для его формирования. Это может быть сделано путем использования динамических контуров в сочетании с псевдоклассом :focus.

Пример(ы):

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


:focus  { outline: thick solid black }
:active { outline: thick solid red }

18.5 Увеличение

Группа разработчиков CSS считает, что увеличение документа или его отдельных частей не следует описывать посредством таблиц стилей. Агенты пользователей могут поддерживать эту процедуру другими способами (например, с помощью более крупных изображений, более громких звуков и т.д.)

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