Виджет менюверсия добавлена: 1.9
Описание: Тематическое меню с взаимодействием мышью и клавиатурой для навигации.
Меню можно создать из любого допустимого разметки, при условии, что элементы имеют строгие отношения родитель/дочерний. Наиболее часто используемый элемент — неупорядоченный список (<ul>). Кроме того, содержимое каждого пункта меню должно быть заключено в элемент DOM уровня блока. В примере ниже <div> используются в качестве обёртки:
<ul id="menu">
<li>
<div>Item 1</div>
</li>
<li>
<div>Item 2</div>
</li>
<li>
<div>Item 3</div>
<ul>
<li>
<div>Item 3-1</div>
</li>
<li>
<div>Item 3-2</div>
</li>
<li>
<div>Item 3-3</div>
</li>
</ul>
</li>
<li>
<div>Item 4</div>
</li>
<li>
<div>Item 5</div>
</li>
</ul> Если вы используете структуру, отличную от <ul>/<li>, включая использование одного и того же элемента для меню и пунктов меню, используйте параметр menus, чтобы указать способ различения двух элементов, например, menus: "div.menuElement".
Любой пункт меню можно отключить, добавив класс ui-state-disabled к этому элементу.
Иконки
Чтобы добавить иконки в меню, включите их в разметку:
<ul id="menu">
<li>
<div><span class="ui-icon ui-icon-disk"></span>Save</div>
</li>
</ul> Меню автоматически добавляет необходимый отступ к пунктам без иконок.
Разделители
Элементы разделителей можно создать, включив пункты меню, содержащие только пробелы и/или дефисы:
<ul id="menu">
<li>
<div>Item 1</div>
</li>
<li>-</li>
<li>
<div>Item 2</div>
</li>
</ul> Взаимодействие с клавиатурой
-
ENTER/SPACE: Выполнить действие выделенного пункта меню, которое может заключаться в открытии подменю. -
UP: Переместить фокус на предыдущий пункт меню. -
DOWN: Переместить фокус на следующий пункт меню. -
RIGHT: Открыть подменю, если оно доступно. -
LEFT: Закрыть текущее подменю и переместить фокус на родительский пункт меню. Если не в подменю, ничего не делать. -
ESCAPE: Закрыть текущее подменю и переместить фокус на родительский пункт меню. Если не в подменю, ничего не делать.
Ввод буквы перемещает фокус на первый элемент, заголовок которого начинается с этой буквы. Повтор ввода той же буквы циклически перебирает соответствующие элементы. Ввод дополнительных символов в течение таймера в одну секунду соответствует этим символам.
Отключенные элементы могут получить фокус клавиатуры, но не допускают никакого другого взаимодействия.
Стиль
Виджет меню использует фреймворк CSS jQuery UI CSS framework для стилизации своего внешнего вида. Если требуется специфическая стилизация меню, для переопределений или в качестве ключей для classes параметра можно использовать следующие имена классов CSS:
-
ui-menu: Внешний контейнер меню, а также любое вложенное подменю. Этот элемент верхнего уровня будет дополнительно иметь классui-menu-icons, если меню содержит иконки.-
ui-menu-item: Контейнер для отдельных пунктов меню. Он содержит элемент для самого текста пункта, а также элемент для подменю.-
ui-menu-item-wrapper: Элемент обёртки внутри каждого отдельного пункта меню, содержащий текстовое содержимое и значок, указывающий на подменю.-
ui-menu-icon: Значки подменю, установленные через параметрicons.
-
-
-
ui-menu-divider: Элементы разделителей между пунктами меню.
-
Зависимости
Дополнительные заметки:
- Для работы данного виджета требуется функциональный CSS. Если вы создаете пользовательскую тему, используйте специфический CSS-файл виджета в качестве отправной точки.
Параметры
классы
{} Укажите дополнительные классы для добавления к элементам виджета. Любой из классов, указанных в разделе Стилизация, может быть использован в качестве ключей для переопределения их значения. Чтобы узнать больше об этом параметре, ознакомьтесь со статьей статьёй о параметре classes.
Инициализируйте меню с заданным параметром classes, изменяя стили для класса ui-menu:
$( ".selector" ).menu({
classes: {
"ui-menu": "highlight"
}
}); Получите или установите свойство параметра classes, после инициализации, здесь считываем и изменяем стили для класса ui-menu:
// Getter var themeClass = $( ".selector" ).menu( "option", "classes.ui-menu" ); // Setter $( ".selector" ).menu( "option", "classes.ui-menu", "highlight" );
отключено
false true.Инициализируйте меню с заданным параметром disabled:
$( ".selector" ).menu({
disabled: true
}); Получите или установите параметр disabled после инициализации:
// Getter var disabled = $( ".selector" ).menu( "option", "disabled" ); // Setter $( ".selector" ).menu( "option", "disabled", true );
иконки
{
submenu: "ui-icon-carat-1-e"
} Инициализируйте меню с заданным параметром icons:
$( ".selector" ).menu({
icons: { submenu: "ui-icon-circle-triangle-e" }
}); Получите или установите параметр icons после инициализации:
// Getter
var icons = $( ".selector" ).menu( "option", "icons" );
// Setter
$( ".selector" ).menu( "option", "icons", { submenu: "ui-icon-circle-triangle-e" } ); элементы
"> *" Селектор для элементов, которые служат пунктами меню.
items не должен изменяться после инициализации.Инициализируйте меню с заданным параметром items:
$( ".selector" ).menu({
items: ".custom-item"
}); Получите параметр items после инициализации:
// Getter var items = $( ".selector" ).menu( "option", "items" );
позиция
{ my: "left top", at: "right top" } of по умолчанию устанавливается на родительский пункт меню, но вы можете указать другой элемент для позиционирования. Для получения более подробной информации о различных параметрах вы можете обратиться к утилите jQuery UI Position.Инициализируйте меню с заданным параметром position:
$( ".selector" ).menu({
position: { my: "left top", at: "right-5 top+5" }
}); Получите или установите параметр position после инициализации:
// Getter
var position = $( ".selector" ).menu( "option", "position" );
// Setter
$( ".selector" ).menu( "option", "position", { my: "left top", at: "right-5 top+5" } ); роль
"menu" Настройте ARIA-роли, используемые для меню и пунктов меню. По умолчанию используется "menuitem" для элементов. Установка параметра role в "listbox" приведет к использованию "option" для элементов. Если установлено значение null, роли не будут установлены, что полезно, если меню управляется другим элементом, который поддерживает фокус.
role не должен изменяться после инициализации. Существующие (под)меню и пункты меню не будут обновлены.Инициализируйте меню с заданным параметром role:
$( ".selector" ).menu({
role: null
}); Получите параметр role после инициализации:
// Getter var role = $( ".selector" ).menu( "option", "role" );