410013796724260
• Webmoney
R335386147728
Z369087728698
Перейти к содержанию jQuery
Виджет tabs библиотеки jQueryВкладки, как правило, используются для разбивки содержимого на несколько групп, между которыми можно переключаться. Это позволяет сэкономить страничное пространство и не дергать полосу прокрутки вперед-назад. Очень часто разработчики, обладая необходимыми знаниями в области использования таких функций библиотеки jQuery, как селектор элементов, поиск и фильтрация элементов, управления css-стилями и т.д. самостоятельно создавали базовые вкладки. Однако в библиотеку пользовательского интерфейса jQuery UI включен многофункциональный виджет tabs, который стал частью её коллекции элементов управления. В этой статье рассмотрим опции, методы, события и представленный ниже пример использования виджета tabs. В этом примере Вы можете переключать вкладки и изменить стиль их представления, а также выполнить программное переключение вкладок; идентификатор активируемой вкладки отображается в консоли браузера. Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus. Morbi tincidunt, dui sit amet facilisis feugiat, odio metus gravida ante, ut pharetra massa metus id nunc. Duis scelerisque molestie turpis. Sed fringilla, massa eget luctus malesuada, metus eros molestie lectus, ut tempus eros massa ut dolor. Aenean aliquet fringilla sem. Suspendisse sed ligula in ligula suscipit aliquam. Praesent in eros vestibulum mi adipiscing adipiscing. Morbi facilisis. Curabitur ornare consequat nunc. Aenean vel metus. Ut posuere viverra nulla. Aliquam erat volutpat. Pellentesque convallis. Maecenas feugiat, tellus pellentesque pretium posuere, felis lorem euismod felis, eu ornare leo nisi vel felis. Mauris consectetur tortor et purus. Mauris eleifend est et turpis. Duis id erat. Suspendisse potenti. Aliquam vulputate, pede vel vehicula accumsan, mi neque rutrum erat, eu congue orci lorem eget lorem. Vestibulum non ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce sodales. Quisque eu urna vel enim commodo pellentesque. Praesent eu risus hendrerit ligula tempus pretium. Curabitur lorem enim, pretium nec, feugiat nec, luctus a, lacus. Нажатием на кнопку «Изменить стиль» Вы можете изменить стиль представления вкладок и их содержимого. В представленном примере демонстрируется возможность настройки стилей вкладок под интерфейс Вашего сайта/страниц. Описание css-настроек рассмотрено ниже. Кнопкой «Переключатель вкладок» Вы можете программно выполнять переход с одной вкладки на другую. Описание примераЛистинг примера включает секцию <head> с загрузкой необходимых файлов, и секцию <body>, в которой определяется структура вкладок с контентом и javascript-код. Комментарий к коду представлен после листинга. Методы обработки нажатий кнопок рассмотрены отдельно. Скрыть листинг примера <head> <link rel="stylesheet" href="code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/jquery-1.12.4.js"> </script> <script src="https://code.jquery.com/jquery-ui.min.js"> </script> </head> <body> <!--------------------------------------------------------> <div id="tabs"> <ul> <li><a href="#tabs-1">Nunc tincidunt</a></li> <li><a href="#tabs-2">Proin dolor</a></li> <li><a href="#tabs-3">Aenean lacinia</a></li> </ul> <div id="tabs-1"> <p>Proin elit arcu, rutrum commodo, vehicula ...</p> </div> <div id="tabs-2"> <p>Morbi tincidunt, dui sit amet facilisis ...</p> </div> <div id="tabs-3"> <p>Mauris eleifend est et turpis. Duis id ...</p> </div> </div> <!--------------------------------------------------------> <script type="text/javascript"> $(function() { $("#tabs").tabs(); }); </script> </body> Загрузка библиотек Необходимую версию библиотеки jQuery UI как в сжатом виде, наименование которой включает аббревиатуру min, так и в открытом виде, Вы можете выбрать на сайте http://code.jquery.com/ui/. Описание вкладок JavaScript код Горячие клавишиПри нахождении фокуса на заголовке вкладки можно использовать следующие горячие клавиши для перемещения по вкладкам :
CSS-стили вкладкиДля адаптации интерфейса вкладок к стилю представления на сайте необходимо выбрать соответствующий jquery-ui.css. Разработчики библиотеки jQuery предлагают целый набор различных стилей (Themes) на странице code.jquery.com/ui/. Конечно же, может так случиться, что ни один из стилей не будет удовлетворять Вас в полном объёме. Т.е. найдется какой-либо элемент вкладки, который необходимо настраивать отдельно. В листинге представлены параметры стилей, которые в примере изменяются, демонстрируя возможность адаптации вкладок к интерфейсу сайта. Значения параметров определены в файле https//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css, т.е. это базовый/base набор. На странице https://jqueryui.com/themeroller/ Вы можете адаптировать css-файл со стилями для всех виджетов библиотеки jQuery UI, которые используются на Вашем сайте. Скрыть листинг стилей .ui-widget-header { border : 1px solid #dddddd; background : #e9e9e9; color : #333333; } .ui-widget-content { background : #ffffff; color : #000; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited, a.ui-button, a:link.ui-button, a:visited.ui-button, .ui-button { color : 454545; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { border : 1px solid #003eff; background : #007fff; font-weight : normal; color : #ffffff; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } JavaScript кодРазделим весь JavaScript код на две части. В первой части рассмотрим js-код, взаимодействующий и управляющий вкладками. Во второй части – код управления стилями. JS-код взаимодействия с вкладкамиВ представленном ниже листинге javascript-кода имеется два метода : tabs и click. Для обоих методов селектором выбираются DOM-элементы с идентификаторами id, равными tabs и btnTab. В первом случае – это блок div с описанием вкладок, во втором случае – это кнопка btnTab. Первый метод tabs вызывается сразу же после загрузки страницы и формирования структуры DOM. Как было отмечено выше, метод tabs может быть вызван либо без параметров, либо с параметром, как это представлено в листинге. Второй метод подключен к кнопке «Переключатель вкладок», и вызывается при нажатии на кнопку (click). В методе сначала определяется индекс (idx) открываемой активной вкладки, после чего вызывается метод открытия вкладки. Обратите внимание, что определение текущей активной вкладки и открытие вкладки выполняются практически с одними и теми же параметрами метода tabs; только во втором случае добавляется индекс открываемой вкладки idx. Скрыть листинг <script> $('#tabs').tabs({ // event : 'mouseover', beforeActivate: function (event, ui) { // вывод в консоль брайзера // идентификатора открываемой вкладки console.log('id = ' + ui.newPanel[0].id); }, fx : { opacity: 'toggle', duration : 'fast' }, spinner: 'Загрузка ...', cache: false }); //----------------------------------------------------- $("#btnTab").click(function (event) { // определение индекса открываемой вкладки let idx = $('#tabs').tabs('option', 'active') + 1; if (idx === 3) idx = 0; // открытие вкладки $('#tabs').tabs('option', 'active', idx); }); </script> В листинге методу tabs в качестве параметра передается литерал объектов, обернутый в фигурные скобки. Таким образом, описание нескольких объектов можно представить в виде одного JSON-объекта, включающего :
В списке конфигурационных параметров, передаваемых методу tabs, представлены наиболее примечательные. С полным перечнем параметров Вы можете познакомиться на демонстрационной странице jQuery UI. JS-код изменения стиляВторая часть раздела js-скриптов демонстрирует возможность динамического изменения css-стилей вкладок. Практического применения данный код, конечно же, не имеет, поскольку, как правило, все css-стили определяются во внешнем файле. Однако, из этого листинга можно понять, какие css-параметры следует настраивать для адаптации вкладок к интерфейсу сайта. Также в данном листинге демонстрируется представление css-параметров в виде литерала объектов, который передается методу $.injectCSS. Листинг кода изменения css-стилей включает обработчик нажатия кнопки btnStyle и два метода : changeStyle и restoreStyle. Первый метод изменяет стили представления вкладок, второй метод – восстанавливает стили. Символы переноса '\' используются только для наглядности представления наименований тегов элементов DOM; практически они должны быть указаны одной строкой. Скрыть листинг <script> $("#btnStyle").click(function (event) { $('#btnStyle').toggleClass('changed_css'); if ($('#btnStyle').hasClass('changed_css')) { $('#btnStyle').html('Восстановить стиль'); changeStyle(); } else { $('#btnStyle').html('Изменить стиль'); restoreStyle(); } }); function changeStyle() { $.injectCSS({ '.ui-widget-header' : { 'border': '1px solid #dddddd', 'background': '#e949e9', 'color': '#333333' }, '.ui-widget-content' : { 'background': '#ea4eea', 'color': '#33f3f3' }, '.ui-state-default a, \ .ui-state-default a:link, \ .ui-state-default a:visited, \ a.ui-button, \ a:link.ui-button, \ a:visited.ui-button, \ .ui-button' : { 'color' : '#45e2e9' }, '.ui-state-active, \ .ui-widget-content .ui-state-active, \ .ui-widget-header .ui-state-active, \ a.ui-button:active, \ .ui-button:active, \ .ui-button.ui-state-active:hover' : { 'border': '1px solid #003eff', 'background': '#bb7fff', 'font-weight': 'normal', 'color': '#ffffff' } }); } function restoreStyle() { $.injectCSS({ '.ui-widget-header' : { 'border': '1px solid #dddddd', 'background': '#e9e9e9', 'color': '#333333' }, '.ui-widget-content' : { 'background': '#ffffff', 'color': '#000' }, '.ui-state-default a, \ .ui-state-default a:link, \ .ui-state-default a:visited, \ a.ui-button, \ a:link.ui-button, \ a:visited.ui-button, \ .ui-button' : { 'color' : '#454545' }, '.ui-state-active, \ .ui-widget-content .ui-state-active, \ .ui-widget-header .ui-state-active, \ a.ui-button:active, \ .ui-button:active, \ .ui-button.ui-state-active:hover' : { 'border': '1px solid #003eff', 'background': '#007fff', 'font-weight': 'normal', 'color': '#ffffff' } }); } </script> Опции управления вкладкамиactive
// Создание tabs с активностью 1-ой вкладки $(".tabs").tabs({ active: 1 }); // Getter let active = $(".tabs").tabs("option", "active"); // Setter $(".tabs").tabs("option", "active", 1); collapsible // Создание tabs $(".tabs").tabs({ collapsible: true }); // Getter let collaps=$(".tabs").tabs("option","collapsible"); // Setter $(".tabs").tabs( "option", "collapsible", true ); disabled Поддерживаемые типы :
// Создание tabs $(".tabs").tabs({ disabled: [1, 2] }); // Getter let disabled=$(".tabs").tabs("option","disabled"); // Setter $(".tabs").tabs("option", "disabled", [1, 2]); event // Создание tabs $(".tabs").tabs({ event: "mouseover" }); // Getter let event=$(".tabs").tabs("option","event"); // Setter $(".tabs").tabs("option", "event", "mouseover"); heightStyle
// Создание tabs $(".tabs").tabs({ heightStyle: "fill" }); // Getter var hs = $(".tabs").tabs("option", "heightStyle"); // Setter $(".tabs").tabs("option", "heightStyle", "fill"); hide
// Создание tabs $(".tabs").tabs({ hide: {effect: "explode", duration: 1000} }); // Getter var hide = $(".tabs").tabs("option", "hide"); // Setter $(".tabs").tabs("option", "hide", {effect: "explode", duration: 1000}); show
// Создание tabs $(".tabs").tabs({ show: {effect: "blind", duration: 1000} }); // Getter var show = $(".tabs").tabs("option", "show"); // Setter $(".tabs").tabs("option", "show", {effect: "blind", duration: 1000}); Методы управления вкладками
destroy() $(".tabs").tabs("destroy"); disable() // Блокирование доступа $(".tabs").tabs("disable"); disable(idx) // Блокирование доступа к 3-й вкладке $(".tabs").tabs("disable", 2); disable(href) // Блокирование доступа к вкладке info $(".tabs").tabs("disable", "#info"); enable() $(".tabs").tabs("enable"); enable(idx) $(".tabs").tabs("enable", 1); enable(href) $(".tabs").tabs("enable", "#info"); instance() console.log('instance exists : ' + ($(".tabs").tabs("instance") != null)); load(idx) $(".tabs").tabs("load", 1); load(href) $(".tabs").tabs("load", "info")); option(optionName) let enabled = $(".tabs").tabs("option","enabled"); option() let options = $(".tabs").tabs("option"); option(optionName, value) $(".tabs").tabs("option", "disabled", true); option(literal) $(".tabs").tabs("option", {disabled: true}); refresh() $(".tabs").tabs("refresh"); widget() // Получение виджета tabs в виде объекта jQuery let widget = $(".tabs").tabs("widget"); // Блокирование доступа к объекту if (widget != null) widget.tabs("disable", 2); События
Виджет tabs реагирует на стандартные события DOM : blur, focus, load, resize, scroll, unload, beforeunload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup. activate(event, ui)
Ниже представлен пример инициализации виджета tabs, у которого будет вызываться callback-функция после активации вкладки : $(".tabs").tabs({ activate: function(event, ui) { // ... } }); beforeActivate(event, ui)
Ниже представлен пример инициализации виджета tabs, у которого будет вызываться callback-функция перед активацией вкладки : $(".tabs").tabs({ beforeActivate: function(event, ui) { // ... } }); beforeLoad(event, ui)
Ниже представлен пример инициализации виджета tabs, у которого будет вызываться callback-функция перед загрузкой содержимого : $(".tabs").tabs({ beforeLoad: function(event, ui) { // ... } }); create(event, ui)
Ниже представлен пример инициализации tabs, у которого будет вызвана callback-функция после создания виджета : $(".tabs").tabs({ create: function(event, ui) { // ... } }); load(event, ui)
Ниже представлен пример инициализации tabs, у которого будет вызвана callback-функция после загрузки вкладки : $(".tabs").tabs({ load: function(event, ui) { // ... } }); Связанные страницыОписание библиотеки jQueryВиджет вкладок accordion |