- PVSM.RU - https://www.pvsm.ru -
Статья рассчитана на пользователей только начинающих работать с jQuery UI и желающих на практике познакомиться с этой библиотекой.
Под Windows-подобностью интерфейса предполагаются такие основные свойства как — наличие окон, возможность их перетаскивания, возможность изменения размера окон, их свертывания/развертывания и т.д. Вот что должно получиться в итоге [1].
Итак, имеем желание создать пример интерактивного пользовательского Windows-подобного интерфейса и возможности использовать для этой цели jQuery UI – тогда, добро пожаловать под кат.
Кто еще не знает, что такое jQuery UI, может подробнее почитать об этом на русском языке, пройдя по следующей ссылке [2]. О появлении русского перевода документации рассматриваемой библиотеки уже упоминалось на Хабре [3].
Для начала скачиваем библиотеку с официального сайта http://jqueryui.com [4]. Интерфейс имеет множество опций для кастомизации, для нашего примера понадобятся все компоненты и тема Flick.
После закачки и извлечения загруженных компонентов на компьютер получится следующая файловая структура:
С папками сss и js всё понятно, а шаблон для index.html напишем такой:
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset="utf-8">
- <title> Создание Windows-подобного интерфейса при помощи jQuery UI </title>
- <!-- Подключаем jQuery UI CSS -->
- <link rel="stylesheet" href="css/flick/jquery-ui-1.8.16.custom.css" type="text/css" />
- <!--Подключаем сначала jQuery затем уже jQuery UI! -->
- <script src="js/jquery-1.6.2.min.js"></script>
- <script src="js/jquery-ui-1.8.16.custom.min.js"></script>
- </head>
- <body>
- </body>
- </html>
* This source code was highlighted with Source Code Highlighter [5].
Пришло время создать код для первого диалогового окна. Согласно документации, окна в jQuery UI — это обычные “дивы” (div), к которым применен соответствующий класс и метод инициализации. Внутрь такого блока помещается содержимое окна.
В тэг body добавим следующий код:
- <div id="dialog_window_1" class="dialog_window" title="Это наше первое диалоговое окно">
- <p>Привет, мир!</p>
- </div>
* This source code was highlighted with Source Code Highlighter [5].
Для инициализации окна, требуется исполнить JavaScript код. Его можно вынести в отдельный файл и подключить в теге , а можно там же указать следующую конструкцию:
- <script>
- $(document).ready(function() {
- $('#dialog_window_1').dialog();
- });
- </script>
* This source code was highlighted with Source Code Highlighter [5].
Теперь, если открыть в браузере файл index.html, то мы получим следующее:
Обратите внимание, это окно уже обладает такими свойствами drug-n-drop, изменение размера, и возможностью закрытия.
Теперь создадим простую форму для возможности вызова диалоговых окон из другого диалогового окна. Вставим код ниже в содержимое нашего первого окна, т.е. внутрь дива вместо строки «Привет, мир!»:
- <h3>Создание нового окна </h3>
- <table class="dialog_form">
- <tr>
- <th>Заголовок окна </th>
- </tr>
- <tr>
- <td><input type="text" id="new_window_title" /></td>
- </tr>
- <tr>
- <th>
- Содержимое окна
- </th>
- </tr>
- <tr>
- <td>
- <textarea id="new_window_content"></textarea>
- </td>
- </tr>
- <tr>
- <th>
- Кнопки окна
- </th>
- </tr>
- <tr>
- <td id="buttonlist">
- <input type="checkbox" id="alertbutton" /><label for="alertbutton">Предупреждение </label>
- <input type="checkbox" id="closebutton" /><label for="closebutton">Закрыть </label>
- </td>
- </tr>
- </table>
* This source code was highlighted with Source Code Highlighter [5].
Этот шаблон пригодится нам на следующих этапах.
Заменим инициализирующий окно код таким:
- $(document).ready(function() {
- $('#dialog_window_1').dialog({
- width: 'auto',
- height: 'auto'
- });
- });
* This source code was highlighted with Source Code Highlighter [5].
Пропишем новые новые стили в тег head:
- <style>
- .dialog_form th {
- text-align: left;
- }
- .dialog_form textarea, .dialog_form input[type=text] {
- width: 320px;
- }
- </style>
* This source code was highlighted with Source Code Highlighter [5].
Теперь окно с формой внутри смотрится чуть симпатичнее:
В свойствах диалога, записями width: 'auto’ и height: 'auto' мы указали окну подгонять свой размер под размер содержимого.
Кнопки (компонент Buttons) в jQuery UI, позволяют “навешивать” на свои события (например на нажатие) различные функции, чем сейчас и надо заняться.
Для начала создадим кнопку, добавив HTML код:
- <button id="create_button">Создать новое окно</button>
* This source code was highlighted with Source Code Highlighter [5].
в тэг body.
Затем проинициализируем её, добавив строчку:
- $('#create_button').button();
* This source code was highlighted with Source Code Highlighter [5].
в функцию $(document).ready().
Раз уж начали экспериментировать с кнопками, то переопределим наши чекбоксы в форме в некое подобие кнопок, для более презентабельного вида.
- $('#buttonlist').buttonset();
* This source code was highlighted with Source Code Highlighter [5].
Сейчас, когда всё выглядит более-менее нормально, сделаем так, чтобы по нажатию на кнопку создания окна выполнялось соответствующее действие, а при следующем нажатие окно убиралось. Перепишем JavaScript код:
- $(document).ready(function() {
- // инициализация кнопок и добавление функций на событие нажатия
- $("#create_button").button().click(function() {
- var create_dialog = $("#dialog_window_1");
- var create_button = $(this);
- // если окно уже открыто, то закрыть его и сменить надпись кнопки
- if( create_dialog.dialog("isOpen") ) {
- create_button.button("option", "label", "Создать новое окно");
- create_dialog.dialog("close");
- } else {
- create_button.button("option", "label", "Закрыть окно");
- create_dialog.dialog("open");
- }
- });
- // autoOpen : false – означает, что окно проинициализируется но автоматически открыто не будет
- $("#dialog_window_1").dialog({
- width: "auto",
- height: "auto",
- autoOpen : false
- });
- $("#buttonlist").buttonset();
- });
* This source code was highlighted with Source Code Highlighter [5].
Единственное, что стоило бы добавить для более правильного отображения этой части,– смену надписи на кнопке еще и при закрытии окна встроенным методом (нажатие на крестик).
Возможно, знающие люди подскажут в комментариях как это сделать оптимальным путем.
Во второй части статьи будут рассмотрены более сложные этапы по добавлению оставшегося функционала интерфейса.
Код с небольшими изменениями, основной мотив статьи, порядок следования этапов создания Windows-подобного интерфейса при помощи jQuery UI взяты отсюда – англоязычный источник [6].
Автор: denldv
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/interfejsy/4070
Ссылки в тексте:
[1] итоге: http://jsfiddle.net/JhtHn/
[2] ссылке: http://jquery.page2page.ru/index.php5/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_jqueryui
[3] Хабре: http://habrahabr.ru/post/139776/
[4] http://jqueryui.com: http://jqueryui.com
[5] Source Code Highlighter: http://virtser.net/blog/post/source-code-highlighter.aspx
[6] англоязычный источник: http://net.tutsplus.com/tutorials/javascript-ajax/creating-a-windows-like-interface-with-jquery-ui/
Нажмите здесь для печати.