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 ] ] | inherit
Начальное значение:  auto
Область применения:  все элементы
Наследование:  да
Процентное задание значений:  нет
Ассоциированные устройства:  устройства визуального форматирования, интерактивные устройства

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

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
Курсор, указывающий на занятость программы, когда пользователю необходимо подождать. Зачастую представляется в виде циферблата или песочных часов.
help
Курсор, означающий, что для объекта, на который он указывает, имеется справочная информация. Зачастую представляется в виде вопросительного знака или воздушного шара.
<uri>
Агент пользователя загружает курсор из ресурса, задаваемого этим URI. Если агенту не удается обработать курсор, расположенный первым в списке курсоров, он должен попытаться обработать второй, третий и т.д. Если агенту не удается обработать ни одного курсора, заданного пользователем, он должен использовать общий курсор, расположенный в конце этого списка.

Пример(ы):

P { cursor : url("mything.cur"), url("second.csr"), text; }

18.2 Пользовательские настройки цветов

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

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

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

Ниже перечислены дополнительные значения атрибутов 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'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример(ы):

Ниже приведен пример прорисовки толстого контура вокруг элемента BUTTON: BUTTON { outline-width : thick }

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

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

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

Пример(ы):

Например, для того, чтобы всякий раз, когда некоторый элемент находится в фокусе или активизирован, вокруг него отображалась толстая линия черного или красного цвета, соответственно, можно использовать следующие правила: :focus { outline: thick solid black } :active { outline: thick solid red }

18.5 Увеличение

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

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