Обработка системных цветов на JavaScript
Обработка системных цветов на JavaScript
Еще со времен CSS2 появилась возможность использовать в качестве стиля цвета так называемые системные цвета, то есть значения из текущей цветовой схемы пользователя. Таким образом можно оформлять свои web-приложения, чтобы они не выбивались из привычной пользователю цветовой гаммы.
Ниже приведена таблица с названиями системных цветов. Цвета не фиксированные и могут отличаться даже в разных браузерах на одном компьютере.
Название цвета | Пример | Описание |
---|---|---|
ActiveBorder | граница активного окна | |
ActiveCaption | заголовок активного окна | |
AppWorkspace | фоновый цвет интерфейса нескольких документов | |
Background | фоновый цвет рабочего стола | |
ButtonFace | лицевой цвет трехмерных элементов | |
ButtonHighlight | темная тень для трехмерных элементов (для краев, обращенных в сторону от источника света) | |
ButtonShadow | цвет тени для трехмерных элементов | |
ButtonText | текст на кнопках | |
CaptionText | текст в заголовке, поле размера и поле стрелки прокрутки | |
GrayText | отключенный текст | |
Highlight | выделенный элемент в элементе управления | |
HighlightText | выделенный текст в элементе управления | |
InactiveBorder | граница неактивного окна | |
InactiveCaption | заголовок неактивного окна | |
InactiveCaptionText | цвет текста в неактивном заголовке | |
InfoBackground | фоновый цвет для элементов всплывающей подсказки | |
InfoText | цвет текста для элементов всплывающей подсказки | |
Menu | фоновый цвет меню | |
MenuText | текст в меню | |
Scrollbar | серая область полосы прокрутки | |
ThreeDDarkShadow | темная тень для трехмерных элементов | |
ThreeDFace | лицевой цвет трехмерных элементов | |
ThreeDHighlight | цвет выделения для трехмерных элементов | |
ThreeDLightShadow | светлый цвет для трехмерных элементов (для краев, обращенных к источнику света) | |
ThreeDShadow | темная тень для трехмерных элементов | |
Window | фоновый цвет окна | |
WindowFrame | рамка окна | |
WindowText | текст в окнах |
И вот мы плавно подошли к задаче. Если цвета отличаются на разных устройствах, то каким образом можно определить, чему же соответствует тот или иной системный цвет в текущий момент времени? Сделать это можно при помощи вот такого скрипта на JavaScript:
Code (JavaScript) : Убрать нумерацию
- <script type="text/javascript">
- function system_color_to_hex(color_name) {
- var div=document.createElement('div');
- div.style.display='none';
- div.style.color=color_name;
- document.body.appendChild(div);
- var styles=window.getComputedStyle(div);
- for (var hex='',
- color=styles.color.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),
- i=1; i<4; i++) {
- hex+=('0'+parseInt(color[i]).toString(16)).slice(-2).toUpperCase();
- }
- hex='#'+hex;
- document.body.removeChild(div);
- return hex;
- }
- </script>
Code (JavaScript) : Убрать нумерацию
- console.log(system_color_to_hex('ButtonHighlight'));
- // #F0F0F0 (значение может быть другим)
- console.log(system_color_to_hex('rgb(100, 69, 12)'));
- // #64450C
- console.log(system_color_to_hex('DarkSlateGrey'));
- // #2F4F4F
Просмотров: 203 | Комментариев: 1
Комментарии
Отзывы посетителей сайта о статье
Добавить комментарий
Заполните форму для добавления комментария
Жалко, тысячи (скорее, миллионы) сайтов забили на это, ссылаясь на пользователей Android или iOS.
На некоторых сайтах забыли даже про пару 'ButtonFace'|'ThreeDFace'|'ThreeDLightShadow' + 'ButtonText' — добавили поддержку "высокого контраста" так, что при его включении найти хоть какие-нибудь нужные кнопки становится гораздо труднее :))