Создавать окна с текстом мы уже научились, дальше мы рассмотрим элементы button и label, поговорим о стилях CSS2, а также вкратце рассмотрим использование скриптов в XUL-документе. Начнем как обычно с примера:
<?xml version="1.0" encoding="windows-1251"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window title="Button, label, стиль и скрипт" id="second" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script src="second.js" type="application/x-javascript"/> <label control="button1" id="label" value="Это элемент label!!!"/> <button id="button1" label="Нажми меня" oncommand="alert('Ты нажал!'); return false;"/> <button id="button2" accesskey="z" label="Меня тоже можешь нажать" oncommand="isee();"/> </window>Забрать пример
В примере был подключен внешний файл second.js, содержащий функцию isee():
function isee() { document.getElementById("label").value="Label! LABEL! LaBeL!"; }
Далее я объясню все строки документа, а также опишу атрибуты рассмотренных элементов.
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> Данная строка является инструкцией обработки и обычно частью пролога документа, а не его содержимым. Строка указывает на файл стилей, который будет использоваться. href="chrome://global/skin/" указывает, что нужно использовать таблицу стилей, которую использует Mozilla. Давайте создадим свою таблицу стилей и присоединим к нашему документу:
window { background-color: #E0E9E9; color: black; font-family: "Trebuchet MS", Trebuchet, Verdana, sans-serif; } label { border: solid; border-color: #4682B4; font-size: large; text-align: center; padding: 10px 0; } button { color: #E0E9E9; margin: 30px; }
Благодаря данной таблице стилей очень хорошо видно, что текст на элементе button есть ни что иное как label, а у элемента button даже атрибут для установки текста называется label.
Для использования нашего стиля необходимо добавить следующюю строчку:
<?xml-stylesheet href="file:D:/Coding/xml/xul/xul_continue/2_1.css" type="text/css"?>Забрать пример
Обратите внимание, если запускать документ через командную строку, то необходимо указывать абсолютный путь к файлу(Например, file:D:/Coding/xml/xul/xul_continue/2_1.css), а если запуска происходит через Мозиллу, то можно использовать относительный путь, причем file: можно опустить. То есть, если вы запускаете приведенный выше пример через командную строку, то для того чтобы работал скрипт нужно указать абсолютный путь к файлу.
Элемент script аналогичен тегу <script> в HTML и предназначен для объявления скрипта, обычно скрипт располагается отдельно, путь к нему указывается с помощью атрибута src, но также существует возможность разместить скрипт между открывающимися и закрывающимися тегами элемента:
<script> window.title = "Заголовок с помощью скрипта"; </script>
У этого элемента есть еще один атрибут – type, указывающий на язык скрипта, чаще всего используется ‘application/x-javascript’.
Перейдем к рассмотрению элемента label. Элемент используется как элемент управления, если пользователь кликнет на label’е, то в фокусе окажется элемент, связанный с lebel. У элемента есть следующие атрибуты:
accesskey - горячая клавиша.
control - указывает на id элемента с которым связан данный label.
crop - если выделено мало места, чтобы поместить label в отведённое место, то он обрезается в соответствии со значениями атрибута:
Всем пользователям очень знакомый элемент button, ну куда без него? Так что просто опишу атрибуты:
accesskey - горячая клавиша. Клавиша, определенная в этом поле и нажатая вместе с функциональной клавишей (обычно CTRL или ALT, в зависимости от платформы), приводит к срабатыванию кнопки.
crop - если выделено мало места, чтобы поместить label в отведённое место, то он обрезается в соответствии со значениями атрибута:
<command id="cmd_alert" oncommand="alert('Что читать не умеешь?');"/> <button label="Не нажимать!" command="cmd_alert"/>
Также можно указать действие сразу, без ссылки:
<button label="Не нажимать!" oncommand="alert('Что читать не умеешь?'); return false;"/>
Используя полученные знания приведу пример создания кнопки как в настройках Мозиллы.
Для этого создадим таблицу стилей вот с таким содержимым:
window { background-color: #fff; } button { margin: 30px; } .button { -moz-appearance: none; border: 1px solid transparent; background-color: transparent; margin-left: 5px; margin-right: 5px; color: black; } .button:hover, .button:focus { border: 1px solid; -moz-border-left-colors: #98B4E2; -moz-border-top-colors: #98B4E2; -moz-border-right-colors: #98B4E2; -moz-border-bottom-colors: #98B4E2; background-color: #E0E8F6; } .button[checked="true"] { border: 1px solid; -moz-border-left-colors: #316AC5; -moz-border-top-colors: #316AC5; -moz-border-right-colors: #316AC5; -moz-border-bottom-colors: #316AC5; background-color: #C1D2EE; }
Класс button устанавливает стиль кнопки, здесь все параметры являются стандартными за исключением -moz-appearance, который является расширением Mozilla CSS2 и позволяет включить поддержку тем, точнее отключить стандартную тему ОС при использовании значения none. Параметр имеет много значений и некоторые из них совпадают с тегами XUL. Например, чтобы из label сделать подобие кнопки в таблицу стилей в место описания label нужно добавить -moz-appearance: button. Все отсльное интуитивно понятно при наличии знаний в CSS2, так что не буду на этом останавливаться. Если у вас есть какие-то вопросы или предложения - пишите.
А напоследок приведу листинг примера со стильными кнопками:
<?xml version="1.0" encoding="windows-1251"?> <?xml-stylesheet href="2_2.css" type="text/css"?> <window title="Стильная кнопка" id="StyleButton" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <button id="style-button1" class="button" label="Привет" image="../../files/logo.gif" orient="vertical" dir="ltr"/> <button id="style-button2" class="button" label="Пока" image="../../files/logo.gif" orient="vertical" dir="ltr"/> </window>Забрать пример
Вот такая красота и все это благодаря небольшим познаниям в XUL и CSS2. Все пока...