Статьи

Представляем: семантическая библиотека компонентов пользовательского интерфейса

Как большинство из нас, вероятно, знают, Bootstrap и Foundation являются текущими лидерами среди сред разработки интерфейса. Но история показала нам, что в конечном итоге придет что-то лучшее, и в этом случае это не так далеко.

В этой статье вы познакомитесь с новым кандидатом в среду разработки под названием Semantic UI .

Semantic UI — это современная среда разработки интерфейса, основанная на LESS и jQuery. Он имеет гладкий, тонкий и плоский дизайн, который обеспечивает легкий пользовательский опыт.

Согласно веб-сайту Semantic UI, цель фреймворка — дать возможность дизайнерам и разработчикам «создать язык для обмена UI». Они делают это, используя семантический, описательный язык для своих классов и соглашений об именах. Вместо использования аббревиатур, как это делают другие фреймворки, он использует реальные слова в манере, близкой к простому английскому.

Характеристики

Семантический интерфейс уникален в двух отношениях. Во-первых, как структура структурирована. Он использует пять описательных категорий для определения повторно используемых компонентов пользовательского интерфейса.

  • Элемент пользовательского интерфейса является основным строительным блоком. Это может появиться один или в однородных группах. Например, кнопка может быть независимой или помещаться в группу кнопок.
  • Коллекция пользовательского интерфейса — это группа различных видов элементов, которые являются взаимозависимыми. Например, веб-форма может иметь кнопки, входы, флажки, значки и т. Д.
  • Представление пользовательского интерфейса представляет собой общую часть содержимого веб-сайта. Например, раздел ленты или комментариев.
  • Модуль пользовательского интерфейса — это компонент с интерактивной функциональностью на основе JavaScript. Примеры включают аккордеон, диммер, модал и так далее.
  • Поведение пользовательского интерфейса — это компонент, который не может существовать независимо, а вместо этого используется для внедрения функциональности в другие компоненты. Например, поведение проверки формы обеспечивает функциональность проверки для компонента формы.

Почти у каждого компонента есть типы, состояния и варианты. Например, некоторые типы компонентов кнопки включают в себя: стандартная кнопка, кнопка со значком, анимированная кнопка и кнопка могут быть в активном, отключенном состоянии или в состоянии загрузки. Наконец, кнопка может различаться по размеру и цвету и может быть отформатирована как базовая, социальная, плавная, с переключателем и т. Д. Эта схема дает вам большую гибкость во внешнем виде компонента.

Как вы можете видеть, семантический пользовательский интерфейс не только имеет смысл и хорошо структурирован с точки зрения именования своих классов, но также с помощью именования, определения и описания его компонентов. Эта структура гораздо более семантическая, чем в Bootstrap или Foundation.

Вторая уникальная особенность пользовательского интерфейса Semantic заключается в том, что он предоставляет некоторые эксклюзивные функции и компоненты, отсутствующие в других средах. Например, Feed и Comment в компонентах UI Views или Sidebar и Shape из модулей UI. Кроме того, при взаимодействии с компонентами Semantic UI вы получаете выходные данные отладки в реальном времени. Просто откройте веб-консоль, и вы увидите, что ваши компоненты точно сообщают, что они делают.

Еще одна сильная сторона Semantic UI заключается в том, что он использует минимальные и нейтральные стили, оставляя настройку открытой для вас. Он включает в себя важные и полезные вещи, исключая дополнительные функции, которые вы, вероятно, никогда не будете использовать. Кроме того, компоненты инфраструктуры являются переносимыми и автономными, поэтому вы можете получать и использовать только те, которые вам нужны.

Фреймворк использует элементы em и rem для своих элементов, что делает его полностью адаптивным и адаптируемым к любому размеру. Вам нужно всего лишь изменить базовый шрифт, и все остальные элементы будут корректироваться соответствующим образом.

Наконец, Semantic UI очень хорошо документирован, и веб-сайт предоставляет множество примеров для различных компонентов. Кроме того, в нем есть руководство по стилю с методами и инструкциями по написанию кода. Все это делает изучение структуры безболезненным.

Чтобы узнать, как Semantic UI интегрируется с другими проектами и инструментами, посетите страницу интеграции .

Чтобы увидеть, как выглядит сайт, созданный с помощью Semantic UI, вы можете посетить Quirky .

OK. Все идет нормально. Но я думаю, что этот обзор Semantic UI не будет полным, если мы не испачкаем руки. Итак, давайте попробуем сладость Semantic UI прямо сейчас. Я покажу вам, как создать потрясающую форму «Вход / Регистрация» с использованием различных компонентов Semantic UI.

Как создать форму входа / регистрации с семантическим интерфейсом

Мы собираемся создать форму, которая переключает представления в зависимости от того, хочет ли пользователь «Войти» или «Зарегистрироваться». Вот как будут выглядеть виды:

Sign In Form

Sign Up Form

Сначала загрузите Semantic UI , откройте заархивированный файл и распакуйте папку под названием «упакованный». Переименуйте в Семантический пример формы пользовательского интерфейса (или что-то еще, что вы можете легко использовать для его идентификации).

Чтобы увидеть рабочую демонстрацию нашего примера формы, просто загрузите полный файл form.html и поместите его в папку « Пример семантического интерфейса пользователя ». Откройте файл form.html в своем браузере и form.html с формой, чтобы понять его. Теперь я собираюсь показать вам, как воссоздать форму, показывая и объясняя соответствующий код.

Для начала переименуйте файл в complete_form.html и создайте пустой файл с именем form.html . Откройте его и добавьте следующий HTML:

 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>Semantic UI Sign In/Sign Up Form</title> <link href="css/semantic.css" rel="stylesheet" type="text/css" /> <style type="text/css"> </style> </head> <body> <!-- content will go here --> <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script src="javascript/semantic.js" type="text/javascript"></script> <script type="text/javascript"> </script> </body> </html> 

Это наш стартовый шаблон. Он ссылается на файлы semantic.css и semantic.js и добавляет ссылку на библиотеку jQuery. Он также имеет теги script и style для JavaScript и CSS, которые мы собираемся добавить. Я включил JavaScript и CSS только для целей обучения, потому что это проще, и вам не нужно переходить между несколькими файлами. Но в реальных проектах всегда лучше использовать внешние файлы.

Прежде чем мы начнем, давайте рассмотрим, как работает Semantic UI. Все определения компонентов начинаются с класса пользовательского ui за которым следует имя компонента. Например, чтобы добавить элемент Button, вы просто назначаете ему класс ui button . Чтобы добавить состояния и / или варианты, просто вставьте необходимые классы. Например, чтобы создать кнопку, которая меняет свой цвет на синий при наведении, добавьте класс состояния при hover и blue класс вариантов: ui hover blue button .

Вернемся к нашей форме. Я не буду объяснять, что делает каждый класс, потому что классы более или менее информативны, и вы можете увидеть больше их значений в документации.

Первое, что нам нужно сделать, это добавить элемент Segment, который будет содержать нашу форму. Мы делаем это, добавляя тег div с классом ui raised segment signin . Для заголовка формы мы используем тег h3 с классом ui inverted blue block header . Затем мы создаем сетку из двух столбцов с вертикальным разделителем между столбцами. В первом столбце мы добавляем div с классом пользовательского ui blue stacked segment , который будет содержать наши элементы формы. Внизу мы помещаем еще один элемент Divider и div с классом нижнего footer .

 <div class="ui raised segment signin"> <h3 class="ui inverted blue block header"> SIGN IN </h3> <div class="ui two column grid basic segment"> <div class="column"> <div class="ui blue stacked segment"> <!-- form here --> </div> </div> <div class="ui vertical divider"> OR </div> <div class="center aligned column"> <!-- Facebook button here --> </div> </div> <div class="ui divider"></div> <div class="footer"> <!-- text plus button here --> </div> </div> 

Теперь нам нужно добавить немного стиля. Поместите код ниже внутри ваших в настоящее время пустых тегов style .

 body, .ui.vertical.divider { color: #696969; } .ui.vertical.divider { margin: 0 4px; } .ui.raised.segment { background-color: #fffacd; width: 600px; margin-top: 0; position: fixed; left: 10px; top: 10px; } 

Затем, в первом столбце (где HTML-комментарий говорит: «здесь форма»), мы добавляем код для формы. Для создания формы мы добавляем тег div с классом пользовательского ui form . Затем мы помещаем еще два div каждый с классом field , еще один с классом inline field и, наконец, один с классом ui red submit button . Первые два поля предназначены для имени пользователя и пароля . В третьем div , который отформатирован как inline , мы ставим флажок.

 <div class="ui form"> <div class="field"> <label> Username </label> <div class="ui left labeled icon input"> <input type="text"> <i class="user icon"></i> </div> </div> <div class="field"> <label> Password </label> <div class="ui left labeled icon input"> <input type="password"> <i class="lock icon"></i> </div> </div> <div class="inline field"> <div class="ui checkbox"> <input id="remember" type="checkbox"> <label for="remember"> Remember me </label> </div> </div> <div class="ui red submit button"> Sign In </div> </div> 

Во втором столбце со столбцом, center aligned column класса (где HTML-комментарий говорит «здесь кнопка Facebook»), мы используем заголовок h4 и добавляем социальную кнопку Semantic UI в Facebook:

 <h4 class="ui header"> Sign in with: </h4> <div class="ui facebook button"> <i class="facebook icon"></i> Facebook </div> 

Мы добавляем нижний колонтитул, добавляя текст и анимированную кнопку, которая переключит нашу форму с входа в систему и регистрации. Следующий HTML-код добавляется, когда в HTML-комментарии написано «здесь текст плюс кнопка»

 <div class="text"> Not a member? </div> <div class="ui vertical animated blue mini button signup"> <div class="visible content"> Join Us </div> <div class="hidden content"> <i class="users icon"></i> </div> </div> 

Нам также понадобится добавить стили для правильной визуализации нижнего колонтитула. Добавьте следующий CSS ниже существующего CSS внутри наших тегов style :

 .footer { text-align: right; } .text { display: inline; } 

Теперь первая сторона («Зарегистрироваться») готова. Давайте создадим второе. Мы начнем со следующего кода, который похож на тот, который мы уже рассмотрели. Этот HTML-код добавляется ниже всего нашего существующего HTML-кода:

 <div class="ui raised segment signup inactive"> <h3 class="ui inverted blue block header"> SIGN UP </h3> <div class="ui blue stacked segment"> <!-- form here --> </div> <div class="ui divider"></div> <div class="footer"> <div class="text"> Already a member? </div> <div class="ui vertical animated blue mini button signin"> <div class="visible content"> Log In </div> <div class="hidden content"> <i class="sign in icon"></i> </div> </div> </div> </div> 

Затем мы добавляем код для формы внутри элемента segment , в HTML, который мы только что добавили (где HTML-комментарий говорит «форма здесь»). Сообщение ui error message div с классом ui error message помещается в конец формы, потому что поведение проверки формы, которое мы добавим позже, требует, чтобы оно отображало ошибки для пользователя.

 <div class="ui form"> <div class="two fields"> <div class="field"> <!-- Username here --> </div> <div class="field"> <!-- Email here --> </div> </div> <div class="two fields"> <div class="field"> <!-- Password here --> </div> <div class="field"> <!-- Confirm Password here --> </div> </div> <div class="inline field"> <!-- checkbox here --> </div> <div class="ui red submit button"> Sign Up </div> <div class="ui error message"></div> </div> 

Обратите внимание, что у каждого из элементов field в приведенном выше HTML есть комментарий, указывающий, какую часть формы мы добавим в каждый из них. Давайте сделаем это сейчас.

Вот код для поля Имя пользователя :

 <label> Username </label> <div class="ui left labeled icon input"> <input id="username" placeholder="eg, Tarzan" type="text"> <i class="user icon"></i> <div class="ui corner label"> <i class="asterisk icon"></i> </div> </div> 

Вот код для поля электронной почты :

 <label> Email </label> <div class="ui left labeled icon input"> <input id="email" placeholder="eg, [email protected]" type="text"> <i class="mail icon"></i> <div class="ui corner label"> <i class="asterisk icon"></i> </div> </div> 

Вот код для поля Пароль :

 <label> Password </label> <div class="ui left labeled icon input"> <input id="password" placeholder="eg, !@#$%^&amp;*()_+:)" type="password"> <i class="lock icon"></i> <div class="ui corner label"> <i class="asterisk icon"></i> </div> </div> 

Вот код для поля подтверждения пароля :

 <label> Confirm Password </label> <div class="ui left labeled icon input"> <input id="confirm-password" placeholder="eg, !@#$%^&amp;*()_+:)" type="password"> <i class="lock icon"></i> <div class="ui corner label"> <i class="asterisk icon"></i> </div> </div> 

И код для флажка:

 <div class="ui checkbox"> <input id="terms" type="checkbox"> <label for="terms"> I agree to the <a href="#"> Terms and Conditions </a></label> </div> 

Мы также добавили стиль для ссылок:

 a { text-decoration: none; color: #1E90FF; } 

Теперь, когда две части нашей формы готовы, нам нужно добавить код для переключения с одной стороны формы на другую. Поместите следующий код в пустой тег script .

 $( document ).ready(function() { // Hide Sign Up side on initialization $( '.inactive' ).hide(); $( '.mini.button.signup' ).click(function() { // Hide Sign In and show Sign Up side with slide down effect $( '.ui.segment.signin' ) .hide() .end() .find( '.ui.segment.signup' ) .slideDown(); }); $( '.mini.button.signin' ).click(function() { // Hide Sign Up and show Sign In side with slide down effect $( '.ui.segment.signup' ) .hide() .end() .find( '.ui.segment.signin' ) .slideDown(); }); }); 

Наша форма выглядит хорошо — но что, если пользователь вводит недопустимые значения? Нам нужно добавить проверку. Мы делаем это, добавляя следующий код внутри нашего тега script после кода, который мы только что добавили:

 $( '.ui.form' ) .form({ username: { identifier : 'username', rules: [ { type : 'empty', prompt : 'Please enter a username' } ] }, email: { identifier : 'email', rules: [ { type : 'email', prompt : 'Please enter a valid email addres' } ] }, password: { identifier : 'password', rules: [ { type : 'empty', prompt : 'Please enter a password' }, { type : 'length[6]', prompt : 'Your password must be at least 6 characters' } ] }, passwordConfirm: { identifier : 'confirm-password', rules: [ { type : 'empty', prompt : 'Please confirm your password' }, { type : 'match[password]', prompt : 'Password doesn\'t match' } ] }, terms: { identifier : 'terms', rules: [ { type : 'checked', prompt : 'You must agree to the terms and conditions' } ] } }); 

Вы можете прочитать больше о том, как работает приведенный выше код, в документации .

Отлично сработано! Это довольно простой пример, и с его помощью мы только коснулись поверхностных возможностей Semantic UI.

Вывод

Как вы можете видеть, Semantic UI — это новое, свежее и, в некоторых аспектах, уникальное дополнение к ландшафту сред разработки интерфейса. Из того, что мы рассмотрели здесь, хотя на момент написания этой статьи всего несколько месяцев, вы можете видеть, что это довольно многообещающе и заслуживает того, чтобы быть в списках наблюдения многих разработчиков в этом году.

Еще раз, вы можете скачать полный учебный файл здесь и не забудьте добавить его в «упакованную» папку, когда вы разархивируете полную библиотеку Semantic UI.