Стили кнопок: Примеры. Стили кнопок CSS

Содержание

Стили кнопок (Winuser. h) — Win32 apps

BS _ 3STATE
Создает кнопку, совпадающую с флажком, за исключением того, что поле может быть серым, а также установленным или снятым. Используйте затененное состояние, чтобы увидеть, что состояние флажка не определено.
BS _ AUTO3STATE
Создает кнопку, аналогичную флажку с тремя состояниями, за исключением того, что поле изменяет свое состояние, когда пользователь выбирает его. Состояние циклически проходит проверку, неопределенное и снятое.
автофлажок BS _
Создает кнопку, совпадающую с установленным флажком, за исключением того, что состояние проверки автоматически переключается между установленным и снимается каждый раз, когда пользователь устанавливает флажок.
Автопереключатель BS _
Создает кнопку, совпадающую с переключателем, за исключением того, что когда пользователь выбирает его, система автоматически устанавливает состояние проверки кнопки на установленный и автоматически устанавливает состояние проверки для всех остальных кнопок в той же группе на «снято».

_точечный рисунок BS
Указывает, что кнопка отображает точечный рисунок. См. раздел «Примечания» для его взаимодействия со значком «BS» _ .
_Нижняя часть
Размещает текст в нижней части прямоугольника кнопки.
_центр BS
Центрирование текста по горизонтали в прямоугольнике кнопки.
_флажок «BS»
Создание небольшого пустого флажка с текстом. По умолчанию текст отображается справа от флажка. Чтобы текст отображался слева от флажка, объедините этот флаг с _ лефттекстным стилем (или с эквивалентным _ ригхтбуттонным стилем «BS»).
BS _ коммандлинк
Создает кнопку «Ссылка на команду», которая ведет себя как _ кнопка стиля «кнопка BS», но кнопка «ссылка» имеет зеленую стрелку слева, указывающую на текст кнопки.
Заголовок для текста кнопки можно задать, отправив на _ кнопку сообщение СЕТНОТЕ BCM.
BS _ дефкоммандлинк
Создает кнопку ссылки на команду, аналогичную _ кнопке стиля BS. Если кнопка находится в диалоговом окне, пользователь может нажать кнопку «Ссылка на команду», нажав клавишу «ВВОД», даже если у кнопки «ссылка» нет фокуса ввода. Этот стиль полезен для того, чтобы пользователь быстро выберет наиболее вероятный вариант (по умолчанию).
BS _ дефпушбуттон
Создает кнопку, которая ведет себя как _ кнопка стиля BS, но имеет отдельный внешний вид. Если кнопка находится в диалоговом окне, пользователь может нажать кнопку, нажав клавишу ВВОД, даже если у кнопки нет фокуса ввода. Этот стиль полезен для того, чтобы пользователь быстро выберет наиболее вероятный вариант (по умолчанию).
BS _ дефсплитбуттон
Создает разворачивающуюся кнопку, которая ведет себя подобно _ кнопке стиля «кнопка BS», но также имеет отличительный вид. Если кнопка разделить находится в диалоговом окне, пользователь может нажать кнопку разделить, нажав клавишу ВВОД, даже если у кнопки разворачивающегося фокуса нет. Этот стиль полезен для того, чтобы пользователь быстро выберет наиболее вероятный вариант (по умолчанию).
Группа «BS» _
Создает прямоугольник, в котором могут быть сгруппированы другие элементы управления. Любой текст, связанный с этим стилем, отображается в левом верхнем углу прямоугольника.
значок подbs _
Указывает, что кнопка отображает значок. Сведения о взаимодействии с растровым изображением BS см. в разделе «Примечания» _ .
BS без _ иерархии
Указывает, что кнопка является двумерным; Он не использует заливку по умолчанию для создания трехмерного изображения.
BS _ слева
Выравнивание текста в прямоугольнике кнопки выравнивается по левому краю. Однако если кнопка является флажком или переключателем, не имеющим _ стиля BS ригхтбуттон, текст выравнивается по левому краю справа от флажка или переключателя.
BS _ лефттекст
Размещает текст на левой стороне переключателя или флажка при объединении с переключателем или стилем флажка. То же, что и _ стиль BS ригхтбуттон.
BS в _ нескольких строках
Заключает текст кнопки в несколько строк, если текстовая строка слишком длинна, чтобы уместиться в одной строке в прямоугольнике кнопки.
_уведомление о BS
Позволяет кнопке Отправить коды уведомлений млрд долл _ Киллфокус и млрд долл _ SETFOCUS в родительское окно.
Обратите внимание, что кнопки отправляют млрд доллный _ код уведомления, независимо от того, имеет ли он этот стиль. Чтобы получить коды уведомлений млрд долл _ дблклк , кнопка должна иметь стиль «переключатель» BS » _ или» BS _ овнердрав «.
BS _ овнердрав
Создает кнопку, рисуемую владельцем. Окно-владелец получает сообщение WM _ DRAWITEM при изменении визуального аспекта кнопки. Не объединяйте _ стиль ОВНЕРДРАВ BS с другими стилями кнопок.
_кнопка BS
Создает кнопку отправки, которая отправляет сообщение _ команды WM в окно владельца, когда пользователь нажимает кнопку.
BS _ пушлике
Делает кнопку (такую как флажок, флажок с тремя состояниями или переключатель) выглядеть и действует как кнопка «Отправить». Кнопка будет выдаваться, когда она не помещается или не отмечена и утоплена при отправке или проверке.
переключатель «BS» _
Создает небольшой круг с текстом. По умолчанию текст отображается справа от круга. Чтобы отобразить текст слева от окружности, объедините этот флаг с _ лефттекстным стилем «BS» (или с эквивалентным _ стилем «BS ригхтбуттон»). Используйте переключатели для групп связанных, но взаимоисключающих вариантов.
BS _ справа
Выравнивает текст по правому краю прямоугольника кнопки. Однако если кнопка является флажком или переключателем, не имеющим _ стиля BS ригхтбуттон, текст выравнивается по правому краю справа от флажка или переключателя.
BS _ ригхтбуттон
Размещает окружность переключателя или квадрат флажка в правой части прямоугольника кнопки. То же, что и _ стиль BS лефттекст.
_SPLITBUTTON
Создает разворачивающуюся кнопку. У разворачивающейся кнопки есть стрелка раскрывающегося списка.
_текст BS
Указывает, что кнопка отображает текст.
_верхний край сверху
Размещает текст в верхней части прямоугольника кнопки.
BS _ типемаск
Не используйте этот стиль. Бит составного стиля, полученный в результате использования оператора OR в _ * битах в стиле BS. Его можно использовать для маскирования допустимых битов подсчета _ * из заданной битовой маски. Обратите внимание, что эта Дата устарела и неправильно включает все допустимые стили. Поэтому не следует использовать этот стиль.
BS _ усербуттон
Устарел, но он предоставляется для обеспечения совместимости с 16-разрядными версиями Windows. Вместо этого приложения должны использовать BS _ овнердрав.
BS _ vCenter
Размещает текст в середине (вертикально) прямоугольника кнопки.

Кнопки — QIWI

Как называть
Стили кнопок
Размеры и отступы
Brand button
Simple button
List button
Кнопки с иконками
Круглые кнопки
Текстовые кнопки
Мобильная версия

Как называть
  1. Для названия кнопок используется шрифт Museo Sans 500.
  2. Название кнопки описывает вызываемое действие, которое выражается глаголом совершенного вида в инфинитиве. Глагол отвечает на вопрос «Что сделать?».
  3. Существуют исключения, когда название кнопки — это утверждение от первого лица. Например, «Я принимаю».
  4. Название кнопки всегда емкое и краткое, занимает одну строку без сокращений. Рекомендуем ограничиться двумя словами.

Типографика

Для размера Accent используйте Body L 500 (Compact);
для размера Normal — Body M 500 (Normal);
для размера Minor — Body S 500 (Compact).

Стили кнопок

В продуктах QIWI используются два стиля кнопок — Brand button и Simple button. Неактивное состояние для них одинаково.

Для каждого стиля кнопок предусмотрено 3 размера. При проектировании новых экранов выбирайте уже существующие размеры и не вводите новые.

Внутри контентного блока может находиться только одна оранжевая кнопка.

Используйте кнопку без тени внутри блоков с собственной глубокой тенью. Например, в модальных окнах.

Размеры и отступы

Вертикальные отступы

Горизонтальные отступы

Зона клика

Для каждого размера задается минимальная ширина кнопки. Если ширина текста меньше зоны клика, блок выравнивается по центру кнопки.

Brand button

Цвета кнопок

Brand button в размерах Normal и Minor используются для приоритетных или завершающих действий на странице.

Brand button в размере Accent используется в качестве основной кнопки в промо-коммуникациях и платежных формах.

Тени

Статичное
состояние
#FF8C00, 20%,
rgba (255, 140, 0, 20)
размытие: 16px,
Y: 12px
Наведенное
и нажатое
состояние
#FF8C00, 40%,
rgba (255, 140, 0, 40)
размытие: 20px,
Y: 12px

Simple button

Используются для второстепенных действий.

List button

Используются, когда необходимо разместить больше двух кнопок рядом.

Кнопки с иконками
РазмерAccentNormalMinor
Иконка, px24×2424×2424×24
Отступ, px886

Добавляйте иконки, чтобы проиллюстрировать название кнопки. Желательно, чтобы цвет иконки совпадал с цветом текста. Цветные логотипы размещайте в Simple button.

Иконка и текст выравниваются по центру как единый блок, когда у кнопки с иконкой вручную увеличена ширина.

Круглые кнопки

Кнопки с иконкой без текста чаще всего используются в Simple button. Поведение иконки при наведении и нажатии повторяет поведение текста на кнопке.

Цвета кнопок

Текстовые кнопки

Цвет текстовых кнопок

Текстовая кнопка — это кликабельный элемент для совершения неприоритетного действия. Применяется для экономии места.

Рекомендуется располагать справа или снизу от Simple Button. На сайте текстовые кнопки используются в тех же размерах, что и основной текст.

Мобильная версия

Для мобильной версии сайта, как и для десктопа, предусмотрено три основных размера кнопок — Accent (48px), Normal (40px) и Minor (32px).

Мобильные кнопки в размере Accent чаще всего растягиваются на всю ширину контентного блока или страницы. Отступы внутри кнопки не учитываются.

Simple Button Minor в шапке и Simple Button Normal в фильтрах истории используются со стандартными отступами.

Вертикальная группа
Горизонтальная группа
Кнопка и ссылка

Далее «Лоадеры и плейсхолдеры»

Как настроить стили кнопок в androidStudio?

Как настроить стили кнопок в androidStudio?

Во многих случаях стили кнопок, предоставляемые androidStudio, не соответствуют нашим требованиям. В настоящее время большинству пользователей нравятся различные модные кнопки. Они слишком просты и неприглядны, а стили слишком причудливы. Пользователи чувствуют себя преувеличенными. Поэтому общий дизайн арт-команды Требуемый стиль кнопки — это не то, что может предоставить androidStudio. На данный момент нам нужно настроить стиль кнопки. В этом блоге вы узнаете, как настроить нужный стиль кнопки?

(1) Дизайн кнопок с помощью пользовательских стилей

1. Используйте селектор, чтобы настроить стиль

Сначала создайте файл Android XML в draw, выберите Drawable в качестве типа, выберите селектор в качестве корневого узла и настройте имя файла.

1), используя картинки:

Впоследствии среда разработки автоматически добавляет узел селектора к вновь созданному файлу. Нам нужно только записать фоновое изображение, отображаемое в трех состояниях в узле селектора (нажатие, фокус, нормальный). подробности следующим образом:

Изображение должно быть написано в строгом соответствии с указанным выше порядком, и его нельзя перевернуть.
Затем он отображается на фоне кнопки.

2) Примите индивидуальный стиль:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <gradient android:startColor="#0d76e1"
                android:endColor="#0d76e1"
                android:angle="90" />
            <stroke android:width="1dip" android:color="#f403c9" />
            <corners android:radius="2dp" />
            <padding android:left="10dp" android:top="10dp"
                android:right="10dp" android:bottom="10dp" />
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <gradient android:startColor="#ffc2b7" 
android:endColor="#ffc2b7" 
android:angle="90" />
            <stroke android:width="1dip" android:color="#f403c9" />
            <corners android:radius="2dp" />
            <padding android:left="10dp" android:top="10dp"
                android:right="10dp" android:bottom="10dp" />
        </shape>
    </item>
    <!--Положите в конец без статуса-->
    <item>
        <shape>
            <gradient android:startColor="#000000" android:endColor="#ffffff"
                android:angle="180" />
            <stroke android:width="1dip" android:color="#f403c9" />
            <corners android:radius="5dip" />
            <padding android:left="10dp" android:top="10dp"
                android:right="10dp" android:bottom="10dp" />
        </shape>
    </item>
</selector>

● градиент основного тела градиент
● startColor запускает цвет, endColor заканчивает цвет, угол, при котором угол начинает исчезать (значение может быть только кратным 90, 0 означает градацию слева направо, 90 означает градацию снизу вверх, в свою очередь Аналогия против часовой стрелки).
● ширина границы обводки, ширина границы, цвет границы
● сплошной цвет фона
● радиус радиуса углов, 0 — прямой угол
● Относительное положение значения текста заполнения.

2. Нажмите кнопку для смешанного изображения и текста.


Шпаргалки UI дизайнера: создание кнопок – Сей-Хай

Кнопки – мой любимый элемент дизайна. В этой статье мы рассмотрим различные типы кнопок, виды взаимодействий и состояний. Для экономии времени сконцентрируемся на «нормальных» кнопках. Поэтому будем игнорировать переключатели, вкладки, флажки и другие подобные типы кнопок.

Итак, в этой статье мы рассмотрим:

  1. Кнопки действия
  2. Общие стили кнопок
  3. Выбор цвета и стиля кнопки
  4. Состояния кнопок и обратная связь
  5. Надпись кнопки
  6. Сенсорные цели
  7. Размещение кнопок
  8. Кнопка доски почета
  9. Заключительные мысли

1. Кнопки действия

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

1. Кнопки призыва к действию (CTA/C2A)

Кнопка призыва к действию, в зависимости от ситуации, обычно побуждает пользователей зарегистрироваться/купить сейчас/залогиниться и т.д. Такие кнопки нужно использовать там, где платформа хочет настоятельно предложить действие, которое следует сделать пользователю.

 

Кнопка призыва к действию.

Для призыва к действию мне нравится использовать округлые кнопки, так как они достаточно эффективно привлекают внимание.

2. Первичное действие

Хотя кнопки призыва к действию и первичного действия могут выглядеть одинаково, я бы хотел их разделить. В то время как кнопки CTA выполняют свою функцию, первичные кнопки должны быть сильным визуальным индикатором, который поможет пользователю осуществить путешествие. Такие кнопки следует использовать в ситуациях, когда пользователь хочет «Завершить», «Начать», «Далее» и так далее.

Кнопка первичного действия.

Для кнопок этого типа я использую простые прямоугольные кнопки с округлыми краями.

3. Вторичное действие

Вторичные кнопки – это кнопка «Назад» возле первичной кнопки «Далее». Или кнопка «Отмена» возле кнопки «Подтвердить». Вторичные кнопки – это альтернатива первичного действия, которое мы предоставляем пользователям.

Два варианта вторичных действий рядом с первичными.

Для данных кнопок рекомендуется использовать контурные кнопки или текстовые ссылки.

4. Третичное действие

Третичные кнопки обычно используются для разных действий. Например, когда действие важно, но может не соответствовать тому, что пользователь хочет сделать в данный момент. Это может быть кнопка «добавить друга», «изменить», «добавить новое» или «удалить», при условии, что эти действия не первичные.

Третичные кнопки в разных формах.

Проще говоря, для этого нужно использовать менее заметные стили кнопок.

2. Общие стили кнопок

В этом разделе мы рассмотрим общие стили кнопок. Стиль – это просто эстетика кнопки, а не то как ее следует использовать.

Сплошные кнопки

Все просто, сплошные кнопки – это кнопки со сплошной заливкой.

Сплошная кнопка.

Контурные и призрачные кнопки

Контурные кнопки – это кнопки без заливки. Несмотря на то, что они часто используются взаимозаменяемо, контурные кнопки обычно светлого цвета (с темным контуром и текстом), а кнопки-призраки – темного цвета (со светлым контуром и текстом).

Контурная кнопка (слева) и призрачная кнопка (справа).

Закругленные кнопки

Закругленные кнопки – это кнопки, у которых радиус углов максимально скруглен.

Закругленная кнопка.

Примечание: Расположенные рядом закругленные кнопки выглядят ужасно. Каждый раз, когда вы располагаете рядом несколько закругленных кнопок, где-нибудь плачет UI дизайнер.

FAB (плавающая кнопка действия)

Плавающие кнопки действий – это продуманное дизайнерское решение, популярное в Google Material Design. Хотя они могут выглядеть как кнопка со значком, фактически они используются для первичного действия на экране.

Кнопка FAB.

Текстовая ссылка

Текстовые ссылки – это очень простой тип кнопок. Есть несколько способов показать, что надпись является ссылкой. Это может быть цвет, подчеркивание, положение ссылки, или просто сам текст (например, «Читать дальше»).

Оформление текстовых ссылок.

Когда дело касается цвета, большинство сайтов используют синий, так как он наиболее идентифицируем как ссылка.

Кнопка “значок с надписью”

Популярность кнопок-значков возросла, но некоторые кнопки все еще нуждаются в надписи, чтобы правильно передать сообщение.

Кнопка “значок с надписью”

Самое сложное в работе с такими кнопками – найти правильное соотношение иконки и шрифта.

  • Вариант 1: размер иконки соответствует высоте заглавных букв.
  • Вариант 2: размер иконки намного больше высоты строки.

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

Кнопка-значок

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

Кнопки-значки в разных стилях.

Предупреждение: Если вы разрабатываете продукт для плохо разбирающихся в компьютерах людей, используйте кнопку с надписью. Особенно для кнопок с более абстрактным содержанием.

Иконка рядом с текстовой ссылкой

Некоторые текстовые ссылки могут дополняться иконкой. Обычно они не выходят за высоту строки.

Кнопки ссылки с иконками.

3. Выбор цвета и стиля кнопки

При дизайне кнопок необходимо учитывать несколько факторов.

1. Цвет

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

Разноцветные кнопки.

Кроме того, при выборе цветовой палитры следует учесть язык цвета. Так, как несогласованность контекста и цвета может вызвать путаницу.

Кнопки «Удалить», «Просмотреть предупреждения», «Сохранить» и «Еще».

Например, зеленая кнопка «Удалить» собьет с толку любого пользователя, как и красная «Сохранить».

2. Закругление углов

Закругление углов, а именно свойство border-radius – это то, что придает кнопкам индивидуальность. Кнопки с острыми краями выглядят более серьезно, а с закруглением более непринужденно.

Кнопки с разными настройками радиуса скругления.

Примечание: как упоминалось ранее, не располагайте несколько закругленных кнопок рядом, поскольку это режет глаз.

3. Тень

Тень на кнопке создает ощущение, будто кнопка находится за пределами страницы, и это действительно привлекает внимание. Тени также могут быть использованы для обозначения различных состояний. Material Design использует тень очень органично, делая кнопку «ближе» при наведении курсора.

Кнопки с разными настройками тени.

4. Стиль надписи

Стиль надписи зависит от шрифта и от того, насколько легко его читать. При выборе шрифта убедитесь, что он разборчивый.

Кнопки с разными стилями надписей.

Вот несколько простых способов сделать шрифт читабельным:

  1. Лучше использовать заглавные буквы в начале каждого предложения или капитализировать начальные буквы всех слов в предложении, чем делать все буквы заглавными. (Хотя Material Design использует кнопки со всеми заглавными буквами).
  2. Убедитесь, что цвет надписи выделяется на фоне кнопки. В этом поможет этот инструмент.
  3. Выбирая шрифт убедитесь, что он разборчивый и достаточно большой. Также шрифт должен быть средней плотности.

5. Вертикальный отступ

Размер кнопки играет большую роль в доступности интерфейса. Большинство неопытных дизайнеров скажут что-то вроде «Кнопки должны иметь высоту 36 пикселей». Это не лучшее решение, особенно для веб-дизайна. Всегда нужно учитывать высоту строки используемого вами шрифта и добавлять к нему единицу измерения. Например: «Надпись моей кнопки имеет высоту строки 20 пикселей, а отступ по вертикали 8 пикселей».

Кнопки с разным вертикальным отступом.

Спросите зачем? Существует две причины:

  • Люди с нарушениями зрения могут увеличить шрифт в браузере, следовательно, нужно изменить размер шрифта без сокращения высоты кнопки.
  • Так разработчики создают кнопки – они добавляют отступы к блочным элементам верстки, а не к высоте строки.

6. Горизонтальный отступ

Первый вариант:

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

Кнопки, ширина которых определяется сеткой.

Второй вариант:

Настройка отступа по бокам. Я обычно устанавливаю некий стандарт минимальной ширины кнопки, чтобы не было очень маленьких кнопок. Хотя этот способ дает возможность вместить любое количество текста, кнопки могут получиться очень неровными.

Кнопки, ширина которых определяется отступом и длиной надписи.

4. Состояния кнопок и обратная связь

Состояния кнопок позволяют пользователю узнать, может ли он кликнуть или уже это успешно сделал. Также следует помнить, что кнопка может иметь несколько состояний. Например, она может быть «активной» и «зависать» одновременно.

1. Активное и неактивное состояние

Активное состояние – это когда кнопка «кликабельна». Хотя это покажется очевидным, важно отметить, что кнопка может быть неактивна, если пользователь не выполнил необходимые шаги. Например, если не введено имя и адрес электронной почты, пользователь не сможет нажать кнопку «Подтвердить».

Активная и неактивная кнопка.

2. Hover & hover off (навести курсор/убрать курсор)

На десктопных устройствах кнопка должна иметь разные состояния, чтобы пользователь знал, что на нее можно нажать. Также анимация может побудить пользователя к нажатию. Обычно состояние «hover off» противоположно состоянию «hover on», но это не обязательно.

Кнопка, реагирующая на наведение курсора.

Примечание: Состояния наведения никогда не будут видны на планшете и мобильном телефоне, потому что пальцы не могут «зависать». Поэтому если вы разрабатываете приложение, не беспокойтесь об этом состоянии.

3. Фокус внимания

Состояние фокуса довольно сложно для понимания. Так что самый простой способ объяснить – показать его в действии.

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

Другой пример состояния фокуса – когда вы нажимаете на поле ввода. Если бы вы начали печатать, заполнилось бы только это поле ввода, а не другое.

Состояние фокуса по умолчанию – это синее свечение, которое вы, несомненно, видели на сайтах. К счастью, мы живем во время, когда можно создавать собственные состояния кнопок. Похоже, большинство дизайнеров используют одинаковые визуальные подсказки для состояний наведения и фокуса.

4. Нажатие кнопки

Нажатие кнопки – это состояние, когда курсор или палец пользователя удерживает кнопку. Когда пользователь отпускает свой палец или курсор, кнопка выглядит как нажатая.

Кнопка, демонстрирующая состояние нажатия.

5. Нажатая кнопка

Кнопки нуждаются в нажатом состоянии, чтобы указать пользователю, что они были нажаты.

Кнопка, демонстрирующая состояние нажатой.

5. Надпись кнопки

1. Использование глаголов

Большинство кнопок содержат глаголы для указания того, что кнопка будет делать, например, «Сохранить», «Опубликовать», «Редактировать». Хотя «Назад» и «Далее» не являются глаголами, в контексте интерфейса они работают одинаково. Мне нравится использовать структуру “глагол” + “существительное”. Так действие звучит более инструктивно, например, «Сохранить сообщение», «Следующий шаг» и так далее.

2. Шрифт

Вы также должны решить, какой вариант шрифта использовать. Вот некоторые общие рекомендации:

  1. Все буквы заглавные, например, «СЛЕДУЮЩИЙ РАЗДЕЛ». Я использую их для более профессиональных платформ.
  2. Капитализация начальных букв всех слов в предложении, например, «Следующий Раздел». Я стараюсь ее не использовать, так как текст становится трудночитаемым. Что касается тона, это нечто среднее между профессиональным и разговорным тоном.
  3. Капитализация начальной буквы только первого слова в предложении, например, «Следующий раздел». Я использую ее для более дружественных или разговорных платформ.
  4. Все буквы строчные, например, «следующий раздел». Я очень редко использую надписи со строчными буквами. Наверное, это самый неофициальный выбор из существующих.

3. Последовательность

При выборе надписей для кнопок убедитесь, что вы сохраняете последовательность. Вот несколько вещей, которые следует сделать в начале проекта:

  1. Выберите количество слов: Одно, два или более слов на кнопку;
  2. Выберите регистр: Капитализация начальной буквы только первого слова в предложении, капитализация начальных букв всех слов в предложении, все буквы заглавные, или все буквы строчные;
  3. Структура надписи: Например, «глагол» + «существительное» или просто «глагол» и так далее.

6. Сенсорные цели

Размер кнопки для настольных приборов

Поскольку курсор на рабочем столе меньше, чем палец на сенсорном экране, вы можете сделать кнопки намного меньше.

Пользователю никогда не должен искать кнопку, поэтому вы должны определить правильную иерархию и навигацию для вашего интерфейса.

Размер кнопки для сенсорного экрана

Исследование MIT Touch Lab показало, что часть пальца, используемая для прикосновения к экрану, составляет 8–10 мм, поэтому минимальный целевой размер должен быть 10 мм или больше.

Итак, какого размера нужно делать кнопки? Вот что говорят эксперты:

Material Design считает, что цель касания должна быть 48dp x 48dp с 8dp между точками касания.

7. Размещение кнопок

Спорное положение первичной кнопки

Если бы вы располагали 2 кнопки рядом, на какой стороне находилась бы первичная кнопка?

Две позиции для первичных и вторичных кнопок.

Вариант A показывает первичную кнопку слева. Основным аргументом является то, что пользователь первым делом смотрит налево.

Вариант B показывает первичную кнопку справа. Используется для того чтобы пользователь сначала увидел дополнительную кнопку. Таким образом, он осведомлен о возможных вариантах и может сделать выбор. Элементы, расположенные справа, также указывают на продолжение.

8. Кнопка доски почета

В том разделе я хочу отметить некоторые крутые принципы дизайна и систем. Мне нравятся кнопки Material Design System именно потому, что их принципы действительно хорошо продуманы.

Кнопка Material Design System Кнопка изображения от Material Design.

Ни один разговор о кнопках не будет полным без упоминания Material Design. Их работа над кнопками и то, как они взаимодействуют с другими компонентами в системе, заслуживает внимания.

Просмотрите их раздел о кнопках здесь.

А также информацию о плавающих кнопках действий можно просмотреть тут.

9. Заключительные мысли

Создать интерфейс без кнопок нереально. Они выполняют одну из самых важных функций, именно поэтому кнопки заслуживают особого внимания. Потратьте время, чтобы понять, как они работают и как их правильно использовать. Только так вы сможете создать максимально комфортный интерфейс для ваших пользователей.

Источник: UXDesign

Читайте также:

Почему для презентации UX всегда нужно использовать интерактивные прототипы

Концепция дизайна UX: разделение ленты Instagram на группы

10 примеров по-настоящему качественного UX, который помогает изучать пользователей

Все, что вам нужно знать о дизайне кнопок в интерфейсе — UXPUB

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

Чтобы спроектировать правильное взаимодействие, нам нужно взглянуть на историю и происхождение физических кнопок – прямого предшественника компонента интерфейса, который сегодня широко используется во всех цифровых продуктах. Кнопки потрясающие. Прикосновение пальца приводит в движение прибор, автомобиль или систему, даже, если пользователь не понимает лежащие в основе их работы механизмы или алгоритмы. В своей книге «Power Button» Рэйчел Плотник прослеживает истоки современной культуры использования кнопок и описывает, как нажатие кнопок стало средством цифрового управления, обещающее легкость, компактность и надежность.

«Вы нажимаете кнопку, а мы делаем все остальное», – так, посредством броского и четкого слогана, Kodak обратились к потенциальным покупателям своих фотоаппаратов.

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

Кнопки vs Ссылки

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

  • Ссылки используются при переходе в другое место, например: страница «просмотреть все», страница профиля и т. д.
  • Кнопки используются при выполнении действия, например: «отправить», «объединить», «создать новый», «загрузить» и т. д.

Состояние кнопки сообщает ее статус пользователю

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

Normal сообщает, что компонент интерактивен и включен.

Focus сообщает, что пользователь выделил элемент, используя клавиатуру или другой метод ввода.

Hover сообщает, когда пользователь навел курсор на интерактивный элемент.

Active Активное или нажатое состояние сообщает о том, что пользователь нажал на кнопку.

Progress/Loading используется, когда действие не выполняется немедленно и сообщает, что компонент находится в процессе завершения действия.

Disabled сообщает, что компонент в настоящее время не является интерактивным, но может быть включен в будущем.

Кнопки бывают разных цветов, форм и размеров

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

Стили сообщают о важности действия

Стили в основном используются для отличия более важных действий от менее важных. Создайте иерархию действий, которая будет направлять пользователя там, где есть множество вариантов. Обычно у вас может быть одна заметная кнопка (этот стиль часто называется «основной»), несколько средних «второстепенных» и слабо заметных «третичных» действий.

Иногда нет кнопки «по умолчанию»

Как правило, вы хотите сделать кнопкой «по умолчанию» (использовать основные стили) наиболее часто выбираемую кнопку, и перевести ее в сфокусированное состояние. Это поможет большинству пользователей быстрее выполнять свои задачи и направит их в правильном направлении.

Исключение составляют случаи, когда все варианты одинаково важны или действие особенно опасно. В таких случаях вы хотите, чтобы пользователи явно выбирали кнопку, а не случайно.

Не заставляйте меня думать

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

Избегайте использования одного и того же цвета для интерактивных и не интерактивных элементов. Если интерактивные и не интерактивные элементы имеют один и тот же цвет, людям будет трудно понять, где нажимать.

Согласованность повышает скорость и точность

«Согласованность – это один из самых мощных принципов юзабилити: когда вещи всегда ведут себя одинаково, пользователям не нужно беспокоиться о том, что произойдет»

– Якоб Нильсен

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

Сделайте кнопки достаточно большими для надежного взаимодействия

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

Для большинства платформ рассмотрите возможность создания сенсорных целей как минимум 48 x 48 dp. Сенсорная цель такого размера дает физический размер около 9 мм, независимо от размера экрана. Рекомендуемый целевой размер для сенсорных элементов составляет не менее 7–10 мм.

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

Проектируйте для доступности

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

Дизайнеры должны тесно сотрудничать с командами разработчиков, чтобы убедиться, что кнопки работают с программами чтения с экрана. Роль кнопки должна использоваться для кликабельных элементов, которые запускают ответ при активации пользователем. Добавление role=”button” приведет к тому, что элемент отобразится для программы чтения с экрана, как элемент управления кнопками.

Жесты становятся достаточно широко распространенными

Жесты позволяют пользователям взаимодействовать с приложением с помощью касания. Использование касания в качестве альтернативного способа выполнения задачи может сэкономить время и дать тактильный контроль. Хотя некоторые жесты, такие как свайп для запуска контекстных действий, двойной тап, чтобы поставить лайк или долгое нажатие, с каждым днем все шире используются, они все еще не очень заметны для обычного пользователя. Я бы предложил использовать их в качестве альтернативного способа выполнения действия для более продвинутых пользователей.

Хорошая метка кнопки приглашает пользователей действовать

То, что говорят ваши кнопки, так же важно, как и то, как они выглядят. Использование неправильной метки может запутать пользователей, привести к потере времени и, возможно, к большим ошибкам.

Хорошая метка кнопки приглашает пользователей действовать. Лучше всего использовать глаголы и пометить кнопку тем, что она на самом деле делает. Как будто кнопка спрашивает пользователя: «Вы хотите (добавить в корзину)?» или «Хотите (подтвердить заказ)?».

Избегайте использования «Да», «Нет» или слишком общих меток, таких как «Отправить».

Ok/Cancel или Cancel/Ok? Оба варианта хороши

Оба варианта – идентичны, и дизайнеры могут часами спорить о своих предпочтениях.

  • Размещая на первом месте действие OK, вы поддерживаете естественный порядок чтения. Это может помочь сэкономить время, если мы знаем, что, скорее всего, именно это и выберет пользователь. Windows ставит ОК на первое место.
  • Размещая кнопку OK в конце, вы улучшаете юзерфлоу. Кто-то может поспорить, что OK, как кнопка «Следующий», переместит пользователя вперед. Если поставите OK в конце, вы поможете пользователям оценить все варианты, прежде чем предпринимать действия, и поможете избежать ошибок и поспешных решений. Apple ставит ОК на последнее место

Любой из вариантов имеет аргументы в свою пользу, и ни один из этих вариантов не приведет к катастрофическим последствиям для юзабилити. Я в основном ставлю ОК в списке действий на последнее место. Например, в диалоговом окне (возможно, потому что я преимущественно использую Mac).

Отключенные кнопки – отстой

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

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

О каких компонентах вы хотели бы узнать в следующей статье? Дайте знать в комментариях.

7 основных правил проектирования кнопок

Дизайн и проектирование лучших кнопок

PS: Я хочу убедиться, что мой контент доступен, как можно большему количеству читателей. Если вам понравилась статья, не стесняйтесь поддержать автора на  Patreon https://www.patreon.com/tarasbakusevych.

Изучение стилей кнопок SwiftUI | ПЯТЬ ЗВЕЗД

Button , без сомнения, один из самых популярных элементов SwiftUI, он также очень особенный, поскольку это единственный компонент с двумя разными протоколами стилей: ButtonStyle и PrimitiveButtonStyle .

В этой статье давайте рассмотрим все, что нужно знать о стилях кнопок и многом другом.

Как обычно, основное внимание уделяется iOS, одни и те же концепции могут быть применены ко всем платформам с небольшими изменениями.

Запуск

SwiftUI поставляется с тремя встроенными стилями: DefaultButtonStyle , BorderlessButtonStyle и PlainButtonStyle .

При объявлении простой кнопки применяется DefaultButtonStyle :

  Button («Простая кнопка») {
  
  . ..
}
  

DefaultButtonStyle — это не стиль как таковой: это наш способ позволить SwiftUI выбрать стиль за нас (в зависимости от контекста, платформы, родительских представлений и т. Д.).

Фактический стиль по умолчанию BorderlessButtonStyle , который применяет синий оттенок поверх нашей кнопки или цвет акцента приложения, если мы на iOS 14, а также некоторые визуальные эффекты при нажатии, фокусировке и т. Д.

Если мы не находимся в исключении (я еще не нашел его, дайте мне знать, если вы это сделаете), следующие три объявления эквивалентны:

  Button («Простая кнопка») {
  ...
}

Button ("Простая кнопка") {
  ...
}
.buttonStyle (DefaultButtonStyle ()).

Button ("Простая кнопка") {
  ...
}
.buttonStyle (BorderlessButtonStyle ()).
  

В iOS 13 (синий) оттенок применяется к изображениям, объявленным в нашей кнопке label , чтобы избежать этого, нам нужно либо добавить модификатор рендеринга к нашим изображениям (например, Image («изображение»). .original) ) или объявить правильный рендеринг в каталоге ресурсов изображений. Начиная с iOS 14, по умолчанию будут тонироваться только изображения шаблонов.

Наконец, SwiftUI предлагает PlainButtonStyle , который отображает метку кнопки без оттенка, но по-прежнему применяет визуальные эффекты в разных состояниях:

  Button («Кнопка простого стиля») {
  
  ...
}
.buttonStyle (PlainButtonStyle ()).
  

Это все стили, которые SwiftUI предоставляет нам в iOS: к счастью, мы можем создавать новые с ButtonStyle и PrimitiveButtonStyle , давайте начнем с ButtonStyle .

ButtonStyle

В документации предлагается использовать ButtonStyle , когда мы сами декларируем внешний вид кнопки, но взаимодействие с кнопкой ведет себя так же, как и любая другая стандартная кнопка (то есть ее действие запускается при нажатии).

  общедоступный протокол ButtonStyle {
  связанный тип Body: View

  func makeBody (конфигурация: Self.Configuration) -> Self.Body

  typealias Configuration = ButtonStyleConfiguration
}
  

Единственное требование ButtonStyle — вернуть представление из makeBody (configuration :) , функция принимает экземпляр ButtonStyleConfiguration :

  public struct ButtonStyleConfiguration {
  общедоступная метка let: ButtonStyleConfiguration.Этикетка
  public let isPressed: Bool
}
  

Эта конфигурация имеет два свойства:

  • метка — это кнопка метка , например, если наша кнопка — Button (действие: {}, метка: {Text ("Hello world")}) , тогда Text ("Hello world") будет нашей меткой
  • isPressed — это текущее состояние кнопки, которое можно использовать в ButtonStyle makeBody (конфигурация 🙂 для визуальные эффекты

Давайте определим несколько примеров:

  struct RoundedRectangleButtonStyle: ButtonStyle {
  func makeBody (configuration: Configuration) -> some View {
    HStack {
      Прокладка ()
      конфигурация.label.foregroundColor (.black)
      Прокладка ()
    }
    .padding ()
    .background (Color.yellow.cornerRadius (8))
    .scaleEffect (configuration.isPressed? 0,95: 1)
  }
}
  
  struct ShadowButtonStyle: ButtonStyle {
  func makeBody (configuration: Configuration) -> some View {
    ярлык конфигурации
      .тень(
        цвет: configuration.isPressed? Color.blue: Цвет.черный,
        радиус: 4, x: 0, y: 5
      )
  }
}
  

Обратите внимание, что эти новые кнопки не имеют эффектов по умолчанию при нажатии, фокусировке и т. Д.: Теперь мы должны добавить такие эффекты в кнопки out.

Это все, что нужно знать о ButtonStyle . Это позволяет нам настраивать внешний вид любой кнопки, основные преимущества:

  • может применять один и тот же стиль к нескольким кнопкам без дублирования кода
  • доступ к событию isPressed
  • сохраняет стандартное взаимодействие / поведение

Применение и составление несколько стилей

Button не имеет инициализатора, принимающего экземпляр ButtonStyleConfiguration (FB8979053), что усложняет создание нескольких стилей вместе.

Согласно нашим текущим объявлениям, применение нескольких ButtonStyle не имеет никакого эффекта, и будет использоваться только ближайший стиль ( makeBody (конфигурация :) других стилей даже не будет вызываться):

 
Button ("Стиль кнопки со скругленным прямоугольником") {
  
  ...
}
.buttonStyle (RoundedRectangleButtonStyle ())
.buttonStyle (ShadowButtonStyle ()).
.buttonStyle (BorderlessButtonStyle ()).
.buttonStyle (DefaultButtonStyle ()).
  

«Обходной путь» для этого ограничения — вернуть новую Button в нашей ButtonStyle makeBody (configuration :) функции, например, мы могли бы обновить RoundedRectangleButtonStyle следующим образом:

  struct Roundedtyletyangle {
  func makeBody (configuration: Configuration) -> some View {
    Кнопка (действие: {}, метка: {
      HStack {
        Прокладка ()
        конфигурация.label.foregroundColor (.black)
        Прокладка ()
      }
    })
    
    .allowsHitTesting (ложь)
    .padding ()
    .background (Color.yellow.cornerRadius (8))
    .scaleEffect (configuration.isPressed? 0,95: 1)
  }
}
  

С этим новым определением работает предыдущий пример почти :

  Button («Прямоугольник со скругленными углами + стиль кнопки тени») {
  
  ...
}
.buttonStyle (RoundedRectangleButtonStyle ())
.buttonStyle (ShadowButtonStyle ()).
  

Главный недостаток заключается в том, что дополнительные стили применяются к фиктивным и не нажимаемым кнопкам, таким образом не получая никаких событий isPressed .

Существуют более продвинутые решения для устранения этих недостатков, но на данный момент мы боремся с фреймворком: вместо этого,
, лучше рассматривать каждый .buttonStyle (..) как полное переопределение предыдущих.

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

  struct RoundedRectangleWithShadowedLabelButtonStyle: ButtonStyle {
  func makeBody (configuration: Configuration) -> some View {
    HStack {
      Прокладка ()
      конфигурация.label.foregroundColor (.black)
        .тень(
          цвет: configuration.isPressed? Color.red: Цвет.черный,
          радиус: 4, x: 0, y: 5
        )
      Прокладка ()
    }
    .padding ()
    .background (Color.yellow.cornerRadius (8))
    .scaleEffect (configuration.isPressed? 0,95: 1)
  }
}
  

Что мы можем использовать следующим образом:

  Button ("Прямоугольник со скругленными углами + стиль кнопки тени") {
  
  ...
}
.buttonStyle (RoundedRectangleWithShadowedLabelButtonStyle ())
  

Напоминаем, что это техническая статья, а не дизайнерская.

PrimitiveButtonStyle

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

Определение PrimitiveButtonStyle почти идентично ButtonStyle :

  общедоступный протокол PrimitiveButtonStyle {
    связанный тип Body: View

    func makeBody (конфигурация: Self.Конфигурация) -> Self.Body

    typealias Configuration = PrimitiveButtonStyleConfiguration
}
  

Единственное отличие состоит в параметре makeBody (configuration :) , который теперь является PrimitiveButtonStyleConfiguration типа:

  public struct PrimitiveButtonStyleConfiguration {
  общедоступная метка let: PrimitiveButtonStyleConfiguration.Label
  триггер публичной функции ()
}
  

В этой конфигурации снова используется кнопка , метка в качестве свойства, однако isPressed теперь заменено функцией trigger () :
вызов trigger () — это то, как мы вызываем действие кнопки, и Теперь нам предстоит определить подходящее время для этого.

Например, если мы хотим, чтобы кнопка срабатывала только при двойном нажатии, мы могли бы определить следующий стиль:

  struct DoubleTapOnlyStyle: PrimitiveButtonStyle {
  func makeBody (configuration: Configuration) -> some View {
    ярлык конфигурации
      .onTapGesture (количество: 2, выполнить: configuration.trigger)
  }
}
  

Который затем можно использовать как любой другой стиль:

  Button ("Дважды нажмите меня") {
  
  ...
}
.buttonStyle (DoubleTapOnlyStyle ())
  

Применение и составление нескольких (примитивных) стилей

В отличие от ButtonStyleConfiguration , Button действительно имеет инициализатор, принимающий экземпляр PrimitiveButtonStyleConfiguration , что позволяет нам составлять / применять несколько (примитивных) стилей к одной и той же кнопке.

Например, рассмотрим следующие стили:

 
struct DoubleTapStyle: PrimitiveButtonStyle {
  func makeBody (configuration: Configuration) -> some View {
    Кнопка (конфигурация)
      .onTapGesture (количество: 2, выполнить: configuration.trigger)
  }
}


struct SwipeButtonStyle: PrimitiveButtonStyle {
  func makeBody (configuration: Configuration) -> some View {
    Кнопка (конфигурация)
      .жест(
        DragGesture ()
          .onEnded {_ in
            конфигурация.курок()
          }
      )
  }
}
  

Поскольку каждый стиль возвращает кнопку, их можно комбинировать и без проблем работать вместе:

  Кнопка (
  "Двойное касание или смахивание",
  действие: {
    
    ...
  }
)
.buttonStyle (DoubleTapStyle ())
.buttonStyle (SwipeButtonStyle ()).
  

У этого подхода есть небольшой побочный эффект:
Кнопка (конфигурация) поставляется с взаимодействием и стилем кнопок по умолчанию, к счастью, мы можем удалить оба из них, определив еще один «простой» стиль.

  struct PlainNoTapStyle: PrimitiveButtonStyle {
  func makeBody (configuration: Configuration) -> some View {
    Кнопка (конфигурация)
      .buttonStyle (PlainButtonStyle ()).
      .allowsHitTesting (ложь)
      .contentShape (Прямоугольник ())
  }
}
  

Если мы теперь добавим этот стиль к нашему определению кнопки, мы действительно заставим его работать с помощью двойных касаний и смахиваний:

  Button (
  "Двойное касание или смахивание",
  действие: {
    
    ...
  }
)
.buttonStyle (DoubleTapStyle ())
.buttonStyle (SwipeButtonStyle ()).
.buttonStyle (PlainNoTapStyle ()).
  

Тем не менее, мы, вероятно, хотели бы, чтобы взаимодействие с одним касанием по умолчанию было включено для большинства кнопок.

Использование PrimitiveButtonStyle и ButtonStyle

Мы рассмотрели, как каждый ButtonStyle можно рассматривать как полное переопределение предыдущих стилей, а PrimitiveButtonStyle позволяет нам составлять несколько стилей (если они определены правильно), как насчет их объединения?

Мы можем применить и активировать одновременно ButtonStyle и (несколько) PrimitiveButtonStyle , например:

  Button (
  "Примитивный + стиль кнопки",
  действие: {
    
    ...
  }
)

.buttonStyle (SwipeButtonStyle ()).
.buttonStyle (RoundedRectangleButtonStyle ())
  

В этих ситуациях важно, чтобы ButtonStyle ( RoundedRectangleButtonStyle выше) был объявлен последним, иначе удалит PrimitiveButtonStyle .

Обратите внимание, что наш ButtonStyle получит событие isPressed только для стандартного жеста касания, он не будет знать, когда срабатывает действие кнопки, благодаря любому другому PrimitiveButtonStyle : наш долг — определить любую визуальную подсказку. эти стили, когда / если необходимо.

Выводы

Кнопки — это компонент SwiftUI с простейшим взаимодействием: нажмите, чтобы активировать их.

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

Вы когда-нибудь расширяли взаимодействие кнопок? Какие еще применения / потребности вы видите в таких стилях? Пожалуйста, дай мне знать!

Спасибо за чтение и следите за новыми статьями.

стилей веб-кнопок — npm

Базовые стили CSS и SCSS для кнопок, распространяемые как пакет NPM.

В NPM: https://www.npmjs.com/package/web-button-styles

Установить

Через NPM:
 npm install - сохранить стили веб-кнопок 
Или через пряжу:
 пряжа добавить веб-пуговицы 

Использование

Есть два основных способа использования этого пакета: CSS или SCSS .После включения источника использование разметки HTML одинаково для любого метода.

1. Включение источника

А). SCSS

Если вы пишете SCSS, который будет скомпилирован позже с использованием препроцессора Sass, просто импортируйте файл SCSS куда угодно:

 @import "ПУТЬ / К / node_modules / стили веб-кнопок / стили веб-кнопок"; 
Б). CSS

В противном случае, если вы работаете с обычным CSS, вы можете импортировать либо минимизированную таблицу стилей ( compiled-web-styles.мин. CSS ):

 : ->
 

или унифицированная таблица стилей ( compiled-web-button-styles.css )

 : ->
 

2. HTML-разметка

После включения источника в SCSS или CSS кнопки используются следующим образом:

 

 

Или еще лучше:

 

 

В этом фрагменте показаны все основные типы, классы и комбинации:

 
























 Ссылка как кнопка 



























 

Скриншоты

стилей кнопок — База знаний Impreza

Обновлено 1 год 2 месяца назад

Добавьте столько стилей кнопок, сколько вам нужно в соответствии с вашими потребностями.Стили кнопок можно применять ко всем элементам кнопок, связанным с темой: Button, ActionBox, Grid, Pricing Table, Contact Form.

Нажмите на кнопку предварительного просмотра, чтобы развернуть ее настройки:

Как добавить новый стиль кнопки? #

Щелкните соответствующий значок, он появится под списком кнопок:

Как удалить стиль кнопки? #

Щелкните соответствующий значок при наведении курсора на кнопку предварительного просмотра:

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

Название стиля кнопки #

Установите желаемое имя для определенного стиля кнопки, оно будет отображаться в виде текста при предварительном просмотре кнопки

Цвета / Цвета при наведении #

Применение набора цветов в соответствии с вашим дизайном

Тень / Тень при наведении #

Примените тень и установите ее размер, он зависит от значения кнопки Font Size.

Шрифт #

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

Стили текста #

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

Вес шрифта #

Установите толщину шрифта для всех кнопок.

Межбуквенный интервал #

Установить межбуквенный интервал (расстояние между буквами), зависит от значения кнопки Размер шрифта.

Стиль наведения #

Выберите, какой эффект будет применяться к кнопкам при наведении на них курсора.

Относительная высота #

Зависит от размера шрифта, 0,8em означает 0,8 раза больше размера шрифта, если размер шрифта 16 пикселей, высота будет 16 * 0,8 = 12,8 пикселей

Относительная ширина #

Зависит от размера шрифта, 1.8em означает 1,8-кратный размер шрифта, если размер шрифта составляет 16 пикселей, ширина будет 16 * 1,8 = 28,8 пикселей

Радиус углов #

Зависит от размера шрифта, 0,3em означает 0,3 раза больше размера шрифта, если размер шрифта 16 пикселей, радиус будет 16 * 0,3 = 4,8 пикселей

Ширина границы #

Установите ширину границы кнопки.

Инкапсуляция стилей представления SwiftUI | Swift by Sundell

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

Хотя некоторые технологии предлагают вполне естественный способ разделения этих двух аспектов разработки пользовательского интерфейса, например, как веб-сайты объявляют свою структуру с помощью HTML и свои стили с помощью CSS — когда дело доходит до SwiftUI, это может поначалу не показаться таким разделением. практично или даже поощряется.

Однако, если мы начнем изучать различные API и соглашения SwiftUI немного дальше, окажется, что есть ряд инструментов и методов, которые мы можем использовать для создания четкого разделения между нашей иерархией представлений, ее стилями и компонентами, которые мы хотим повторно использовать в данном проекте.

Это именно то, что мы рассмотрим в статье на этой неделе.

Essential Developer: Если вы хотите стать полноценным старшим разработчиком iOS, присоединяйтесь к этому бесплатному онлайн-ускоренному курсу, который начнется 18 октября. Узнайте, как применять по-настоящему масштабируемые шаблоны архитектуры приложений iOS, из серии лекций и практических занятий по программированию. Нажмите, чтобы узнать больше.

В качестве примера предположим, что в настоящее время мы работаем над LoginView , который позволяет нашим пользователям вводить свое имя пользователя и пароль для входа в наше приложение.Для этих двух текстовых полей мы используем предоставленный системой стиль «круглой границы», а для кнопки, которая выполняет фактическое действие входа в систему, мы применили ряд модификаторов, чтобы придать ей индивидуальный вид:

  struct LoginView: Вид {
    обработчик var: (LoginCredentials) -> Void
    @State private var username = ""
    @State private var password = ""

    var body: some View {
        VStack (интервал: 15) {
            TextField ("Имя пользователя", текст: $ username)
                .textFieldStyle (ОкругленныйBorderTextFieldStyle ())
            SecureField ("Пароль", текст: $ пароль)
                .textFieldStyle (RoundedBorderTextFieldStyle ())
            Button ("Войти") {
                обработчик (LoginCredentials (
                    имя пользователя: имя пользователя,
                    пароль: пароль
                ))
            }
            .foregroundColor (.white)
            .font (Font.body.bold ())
            обивка (10)
            .padding (.horizontal, 20)
            .background (Цвет. синий)
            .cornerRadius (10)
        }
    }
}  

💡 Совет. Вы можете использовать кнопку PREVIEW в приведенном выше примере кода, чтобы увидеть, как он выглядит при рендеринге.

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

Один из способов сделать это — извлечь указанное выше представление Button вместе с модификаторами, которые мы применяем к нему, в новую реализацию View — например:

  struct ActionButton: View {
    var title: String
    действие var: () -> Void

    var body: some View {
        Кнопка (заголовок, действие: действие)
            .foregroundColor (.white)
            .font (Font.body.bold ())
            обивка (10)
            .padding (.horizontal, 20)
            .background (Цвет. синий)
            .cornerRadius (10)
    }
}  

Однако, хотя реализация повторно используемых компонентов в виде пользовательских типов View , безусловно, является распространенным и невероятно полезным шаблоном, в подобных случаях она дает нам несколько недостатков.

Прежде всего, поскольку мы теперь оборачиваем нашу Button в новый отдельный тип ActionButton , мы должны реплицировать все API Button , которые мы хотим, чтобы наше новое представление поддерживало.Например, нам уже приходилось копировать свойства title и action , которые Button предоставляет нам бесплатно.

Если бы мы затем захотели имитировать инициализатор точный , который мы ранее использовали при создании кнопки в нашем LoginView , нам пришлось бы расширить наш новый тип ActionButton с помощью настраиваемого инициализатора, который удаляет метку внешнего параметра для титул собственности. Мы также больше не можем использовать модификаторы, специфичные для Button , непосредственно в экземплярах нашего нового типа, и мы больше не можем передавать эти экземпляры в любой API, который принимает аргументы Button .

Одним из способов решения этих проблем было бы расширение встроенного типа Button , а не его обертывание — например, путем реализации метода, подобного модификатору, который применяет наши пользовательские стили к любому экземпляру кнопки :

  кнопка расширения {
    func withActionButtonStyles () -> some View {
        self.foregroundColor (. белый)
            .font (Font.body.bold ())
            обивка (10)
            .padding (.horizontal, 20)
            .фон (Color.blue)
            .cornerRadius (10)
    }
}  

Теперь мы можем стилизовать нашу кнопку входа в систему, просто вызвав на ней наш новый метод, например:

  struct LoginView: View {
    ...

    var body: some View {
        VStack (интервал: 15) {
            ...
            Button ("Войти") {
                обработчик (LoginCredentials (
                    имя пользователя: имя пользователя,
                    пароль: пароль
                ))
            }
            .withActionButtonStyles ()
        }
    }
}  

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

Один из способов решить этот аспект обнаруживаемости, по-прежнему придавая нашим стилям характеристики, подобные расширению, — это охватить шаблон, который сам SwiftUI использует для многих своих собственных встроенных стилей — выделенных типов стилей .

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

Например, протокол ButtonStyle позволяет нам делать именно это для наших стилей кнопок настраиваемых действий:

  struct ActionButtonStyle: ButtonStyle {
    func makeBody (configuration: Configuration) -> some View {
        конфигурация.метка
            .foregroundColor (.white)
            .font (Font.body.bold ())
            обивка (10)
            .padding (.horizontal, 20)
            .background (Цвет. синий)
            .cornerRadius (10)
    }
}  

С учетом вышесказанного мы снова можем легко применить наш настраиваемый набор стилей к любой Button — только теперь мы сделаем это с помощью встроенного модификатора buttonStyle в сочетании с экземпляром нашего новый ActionButtonStyle тип:

  struct LoginView: View {
    ...

    var body: some View {
        VStack (интервал: 15) {
            ...
            Button ("Войти") {
                обработчик (LoginCredentials (
                    имя пользователя: имя пользователя,
                    пароль: пароль
                ))
            }
            .buttonStyle (ActionButtonStyle ()).
        }
    }
}  

Однако, как и во всем программировании, всегда есть компромиссы. Хотя описанный выше метод позволяет нам аккуратно инкапсулировать наши стили внутри определенного типа, а также дает нам гибкость для применения этих стилей к любой Button — поскольку теперь мы используем полностью настраиваемый ButtonStyle , система больше не будет применяться любые стили или поведение по умолчанию для вышеуказанной кнопки.Например, наша кнопка больше не будет автоматически реагировать на нажатия, делая ее заголовок ярче, что может сделать ее менее отзывчивой на действия пользователя.

К счастью, эту проблему можно легко решить. Все, что нам нужно сделать, это использовать объект Configuration , который передается в наш настраиваемый ButtonStyle , чтобы проверить, нажата ли кнопка в данный момент, и затем соответствующим образом изменить наши стили — например, так:

  struct ActionButtonStyle: ButtonStyle {
    func makeBody (configuration: Configuration) -> some View {
        конфигурация.метка
            .foregroundColor (.white)
            .font (Font.body.bold ())
            обивка (10)
            .padding (.horizontal, 20)
            .background (Color.blue.opacity (
                configuration.isPressed? 0,5: 1
            ))
            .cornerRadius (10)
    }
}  

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

Помимо всех аспектов инкапсуляции, одним из основных преимуществ реализации наших общих стилей представления с использованием различных протоколов стилей SwiftUI является то, что мы можем применять их сразу ко всей иерархии представлений. Например, предположим, что мы хотели добавить вторую кнопку к нашему LoginView , которая позволяет нашим пользователям сбрасывать пароли — теперь мы можем дать обеим этим кнопкам одинаковые стили, применив наш ActionButtonStyle непосредственно к корню нашего представления VStack. :

  struct LoginView: View {
    enum Action {
        регистр случая (LoginCredentials)
        case resetPassword
    }

    обработчик var: (Действие) -> Пустота
    @State private var username = ""
    @State private var password = ""

    var body: some View {
        VStack (интервал: 15) {
            TextField ("Имя пользователя", текст: $ username)
            SecureField ("Пароль", текст: $ пароль)
            Button ("Войти") {
                обработчик (.логин (LoginCredentials (
                    имя пользователя: имя пользователя,
                    пароль: пароль
                )))
            }
            Button ("Сброс пароля") {
                обработчик (.resetPassword)
            }
        }
        .textFieldStyle (ОкругленныйBorderTextFieldStyle ())
        .buttonStyle (ActionButtonStyle ()).
    }
}  

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

Хотя возможность настраивать несколько представлений с одним и тем же набором стилей невероятно мощна и удобна, есть вероятность, что мы также иногда захотим настроить некоторые из этих стилей для каждого представления.

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

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

Вот как мы можем сделать это для всех вторичных кнопок в нашем приложении:

  struct SecondaryButtonStyle: ButtonStyle {
    func makeBody (configuration: Configuration) -> some View {
        
        конфигурация.метка
            .foregroundColor (.white)
            .font (Font.caption.bold ())
            обивка (10)
            .фон(
                Color.gray.opacity (configuration.isPressed? 0,5: 1)
            )
            .cornerRadius (10)
    }
}  

Если мы затем переименуем наш тип ActionButtonStyle из предыдущего в PrimaryButtonStyle , теперь мы могли бы либо стилизовать наши две кнопки отдельно, либо сделать следующее — и применить наш основной стиль по умолчанию к нашей иерархии представлений как целиком, а также отменяет ButtonStyle , используемый для нашей кнопки сброса пароля, например:

  struct LoginView: View {
    ...

    var body: some View {
        VStack (интервал: 15) {
            Button ("Войти") {
                обработчик (.login (LoginCredentials (
                    имя пользователя: имя пользователя,
                    пароль: пароль
                )))
            }
            Button ("Сброс пароля") {
                обработчик (.resetPassword)
            }
            .buttonStyle (SecondaryButtonStyle ()).
        }
        .textFieldStyle (ОкругленныйBorderTextFieldStyle ())
        .buttonStyle (PrimaryButtonStyle ()).
    }
}  

Это еще одна вещь, которая делает систему стилей SwiftUI такой мощной — мы всегда можем переопределить любой конкретный стиль для определенной части нашей иерархии представлений, при этом по-прежнему назначая наш наиболее распространенный набор стилей по умолчанию.

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

Один из способов сделать это — реализовать их оба в одном файле, а затем расширить протокол стилей, которому они оба соответствуют — ButtonStyle в данном случае — с помощью свойств, которые мы хотим разделить между два:

  частное расширение ButtonStyle {
    var foregroundColor: Color {.white}
    var padding: CGFloat {10}
    var cornerRadius: CGFloat {10}
    var PressColorOpacity: Double {0,5}
}  

Тогда мы могли бы просто ссылаться на указанные выше свойства при применении этих общих стилей, вместо того, чтобы жестко кодировать эти значения в каждой реализации:

  struct PrimaryButtonStyle: ButtonStyle {
    func makeBody (configuration: Configuration) -> some View {
        конфигурация.метка
            .foregroundColor (цвет переднего плана)
            .font (Font.body.bold ())
            .padding (отступы)
            .padding (.horizontal, 20)
            .background (Color.blue.opacity (
                configuration.isPressed? PressColorOpacity: 1
            ))
            .cornerRadius (уголРадиус)
    }
}

struct SecondaryButtonStyle: ButtonStyle {
    func makeBody (configuration: Configuration) -> some View {
        ярлык конфигурации
            .foregroundColor (цвет переднего плана)
            .шрифт (Font.caption.bold ())
            .padding (отступы)
            .background (Color.gray.opacity (
                configuration.isPressed? PressColorOpacity: 1
            ))
            .cornerRadius (уголРадиус)
    }
}  

Конечно, существует ряд других способов, с помощью которых может быть выполнено совместное использование кода выше, в том числе путем прямого расширения таких типов, как Font и Color , или путем реализации других выделенных типов для этих общих стилей (для Например, некоторая форма структуры AppTheme ).Или мы могли бы просто полностью игнорировать этот источник дублирования кода, если не думаем, что это будет проблемой в нашем конкретном проекте.

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

В качестве последнего примера, вот как мы могли бы создать собственный LabelStyle , который отображает значка данной метки и заголовка вертикально, а не горизонтально (по умолчанию):

  struct VerticalLabelStyle: LabelStyle {
    func makeBody (configuration: Configuration) -> some View {
        VStack {
            конфигурация.значок
            configuration.title
        }
    }
}  

Так же, как и другие наши предыдущие стили, наш новый VerticalLabelStyle теперь может быть применен к серии этикеток сразу - и в случае, если мы не хотим размещать их в каком-либо конкретном стеке макетов, мы всегда можем используйте Group , например:

  Group {
    Ярлык ("Лучшие оценки", systemImage: "star.fill")
    Ярлык ("Локализовано", systemImage: "глобус")
    Ярлык ("Зашифрованный", systemImage: "галочка.тюлень")
}
.labelStyle (VerticalLabelStyle ())  

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

Essential Developer: Если вы хотите стать полноценным старшим разработчиком iOS, присоединяйтесь к этому бесплатному онлайн-ускоренному курсу, который начнется 18 октября. Узнайте, как применять по-настоящему масштабируемые шаблоны архитектуры приложений iOS, из серии лекций и практических занятий по программированию.Нажмите, чтобы узнать больше.

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

Надеюсь, эта статья дала вам обзор этих вариантов и их различных плюсов и минусов. Если у вас есть какие-либо вопросы, комментарии или отзывы - не стесняйтесь обращаться в Twitter или по электронной почте.

Спасибо за чтение! 🚀

Шпаргалка UI: кнопки. Мой любимый элемент дизайна - это… | автор: Тесс Гэдд

В этом разделе мы рассмотрим общие стили кнопок. Стиль - это просто эстетика кнопки, а не то, как ее следует использовать.

Сплошные кнопки

Сплошные кнопки - это именно то, на что они похожи - это кнопки со сплошной заливкой.Выполнено.

Сплошная кнопка.

Кнопки с линиями и призраками

Кнопки с линиями также выглядят именно так: кнопка без заливки - просто контур. Хотя они часто используются как взаимозаменяемые, я предпочитаю думать о линейных кнопках как о светлых (с темным контуром и текстом), а о кнопках-призраках как о темных (со светлыми контурами и текстом).

Кнопка линии (слева) и кнопка-призрак (справа).

Кнопки с закругленными краями

Кнопки с закругленными краями - это кнопки, края которых имеют максимальный радиус закругленной границы.

Круглая пуговица.

Боковое примечание: Скругленные кнопки выглядят ужасно сложенными. Каждый раз, когда вы складываете закругленные кнопки, UI-дизайнер плачет.

Если вы хотите узнать больше о закругленных кнопках, я недавно прочитал эту историю Шань Шен о закругленных кнопках и не могу порекомендовать ее.

FAB (Плавающая кнопка действия)

Плавающая кнопка действия - это продуманный шаблон дизайна, ставший популярным благодаря Material Design от Google. Хотя они могут выглядеть как кнопка со значком, на самом деле они используются для основного действия на экране.

Кнопка FAB.

Если вы хотите узнать больше о FAB, я рекомендую проверить «Кнопки: плавающая кнопка действия» на сайте Material Design.

Текстовая ссылка

Текстовая ссылка представляет собой очень простой тип кнопки. Есть несколько способов показать, что что-то является ссылкой. Это может быть цвет, или подчеркивание, или позиция ссылки, или даже сам текст (например, «Читать дальше»).

Текстовые ссылки имеют другой стиль.

Когда дело доходит до цвета, на большинстве сайтов используется синий цвет, так как он лучше всего идентифицируется как ссылка.Вы спросите, почему классические текстовые ссылки «синие»? Это восходит к сэру Тиму Бернерсу-Ли, который обычно считается изобретателем Всемирной паутины (примечание: представьте, что в вашем резюме есть «Изобрел всемирную паутину»). Хотя кажется, что, когда он выбирал цвет, он не думал о доступности, но самое крутое в синем - это то, что даже люди с дальтонизмом обычно все еще могут его видеть.

Сообщение опубликовано исправление: В первой публикации было написано, что сэр Тим Бернерс-Ли был «изобретателем Интернета», тогда как на самом деле он был изобретателем Всемирной паутины.Приношу свои извинения за пропущенную информацию. Спасибо Дэвид Макдональд за указание 🙂

Значок с кнопкой-ярлыком

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

Кнопка со значком и меткой.

Самая сложная вещь при работе со значками и надписями - это выяснить, насколько большой значок должен быть по отношению к шрифту. Вариант 1: вы делаете размер значка похожим на высоту шапки шрифта.Вариант 2. Размер значка должен быть намного больше, чем высота строки. Предупреждение: если значок лишь немного больше, чем cap-height, он будет выглядеть несбалансированным или похожим на ошибку. Он должен быть примерно такой же высоты колпачка или намного больше - избегайте промежуточных промежутков.

Кнопка со значком

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

Иконки кнопок с разными стилями.

Предупреждение : Если вы разрабатываете продукты для людей с низким уровнем компьютерной грамотности, я всегда рекомендую использовать кнопку с меткой - особенно для более абстрактных значений.

Значок с текстовой ссылкой

На некоторых текстовых ссылках может быть значок. Обычно они не помещаются в основной текст.

Различные значки с кнопками ссылок.

Артикул: Блочные элементы | Slack

Элементы блока могут использоваться внутри раздела , контекста , входных и действий блоков макета.

Наш обзор поверхностей приложений, поддерживающих Block Kit, показывает вам, где можно добавлять блоки.

Наконец, наше руководство по взаимодействию с пользователем поможет вам подготовить ваше приложение к использованию интерактивных компонентов, перечисленных ниже.

Списки полей и значений ниже описывают JSON, который приложения могут использовать для создания каждого элемента:


Кнопочный элемент

Работает с типами блоков: Раздел Действия

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

Чтобы использовать интерактивные компоненты, вам нужно будет внести некоторые изменения для подготовки вашего приложения. Прочтите наше руководство по обеспечению интерактивности.

Поля

Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента.В этом случае тип всегда будет кнопкой .
текст Объект Есть Текстовый объект, определяющий текст кнопки. Может быть только типа : plain_text . Максимальная длина текста в этом поле составляет 75 символов.
action_id Строка Есть Идентификатор этого действия. Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия.Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
url Строка URL-адрес для загрузки в браузере пользователя при нажатии кнопки. Максимальная длина этого поля - 3000 символов. Если вы используете url , вы все равно будете получать полезные данные взаимодействия, и вам нужно будет отправить ответ с подтверждением.
значение Строка Значение, отправляемое вместе с полезными данными взаимодействия.Максимальная длина этого поля - 2000 символов.
стиль Строка Украшает кнопки альтернативными визуальными цветовыми схемами. Используйте этот вариант сдержанно.

primary выделяет кнопкам зеленый контур и текст, что идеально для действий подтверждения или подтверждения. первичный следует использовать только для одной кнопки в наборе.

опасность выделяет кнопкам красный контур и текст, и его следует использовать, когда действие является разрушительным.Используйте опасность еще реже, чем первичный .

Если вы не включите это поле, будет использоваться стиль кнопки по умолчанию.

На изображении выше показаны три различных варианта стиля.

подтвердить Объект Объект подтверждения, определяющий необязательное диалоговое окно подтверждения после нажатия кнопки.

Примеры

Обычная интерактивная кнопка:

  {
  "тип": "кнопка",
  "text": {
    "тип": "простой_текст",
    "текст": "Нажми меня"
  },
  "значение": "click_me_123",
  "action_id": "button"
}
  

Кнопка с основным атрибутом стиля :

  {
  "тип": "кнопка",
  "text": {
    "тип": "простой_текст",
    "текст": "Сохранить"
  },
  "стиль": "основной",
  "значение": "click_me_123",
  "action_id": "button"
}
  

Кнопка ссылки:

  {
  "тип": "кнопка",
  "text": {
    "тип": "простой_текст",
    "текст": "Кнопка ссылки"
  },
  "url": "https: // api.slack.com/block-kit "
}
  

Посмотреть пример


Группы флажков

Работает с типами блоков: Раздел Действия Вход

Группа флажков, которая позволяет пользователю выбирать несколько элементов из списка возможных вариантов.

Флажки поддерживаются только на следующих поверхностях приложений: Вкладки «Домой» Модальные сообщения

Чтобы использовать подобные интерактивные компоненты, вам нужно будет внести некоторые изменения для подготовки вашего приложения. Прочтите наше руководство по обеспечению интерактивности.

Поля

Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае типа всегда флажков .
action_id Строка Есть Идентификатор действия, запускаемого при изменении группы флажков.Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
опции Объект [] Есть Массив объектов параметров. Допускается максимум 10 вариантов.
initial_options Объект [] Массив объектов параметров, который точно соответствует одному или нескольким параметрам в пределах параметров .Эти параметры будут выбраны при первоначальной загрузке группы флажков.
подтвердить Объект Объект подтверждения, определяющий необязательное диалоговое окно подтверждения, которое появляется после установки одного из флажков в этом элементе.

Пример

Блок раздела, содержащий группу флажков:

  {
"тип": "модальный",
"заглавие": {
"тип": "простой_текст",
"text": "Мое приложение",
«смайлики»: правда
},
"Разместить": {
"тип": "простой_текст",
"text": "Отправить",
«эмодзи»: правда
},
"близко": {
"тип": "простой_текст",
"текст": "Отмена",
«эмодзи»: правда
},
"блоки": [
{
"тип": "раздел",
"text": {
"тип": "простой_текст",
"text": "Обратите внимание на эти очаровательные флажки"
},
"аксессуар": {
"тип": "флажки",
"action_id": "this_is_an_action_id",
"initial_options": [{
"значение": "А1",
"text": {
"тип": "простой_текст",
"текст": "Флажок 1"
}
}],
"параметры": [
{
"значение": "А1",
"text": {
"тип": "простой_текст",
"текст": "Флажок 1"
}
},
{
«значение»: «А2»,
"text": {
"тип": "простой_текст",
"текст": "Флажок 2"
}
}
]
}
}
]
}
  

Посмотреть пример


Элемент выбора даты

Работает с типами блоков: Раздел Действия Вход

Элемент, который позволяет пользователям легко выбирать дату из пользовательского интерфейса в стиле календаря.

Чтобы использовать подобные интерактивные компоненты, вам нужно будет внести некоторые изменения для подготовки вашего приложения. Прочтите наше руководство по обеспечению интерактивности.

Поля

Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае тип всегда будет datepicker .
action_id Строка Есть Идентификатор действия, запускаемого при выборе пункта меню. Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
заполнитель Объект plain_text - только текстовый объект, который определяет текст-заполнитель, отображаемый на указателе даты.Максимальная длина текста в этом поле составляет 150 символов.
начальная_дата Строка Начальная дата, которая выбирается при загрузке элемента. Это должно быть в формате ГГГГ-ММ-ДД .
подтвердить Объект Объект подтверждения, определяющий необязательное диалоговое окно подтверждения, которое появляется после выбора даты.

Пример

Блок раздела, содержащий элемент datepicker:

  {
  "тип": "раздел",
  "block_id": "section1234",
  "text": {
    "тип": "mrkdwn",
    "text": "Выберите дату крайнего срока".
  },
  "аксессуар": {
    "type": "datepicker",
    "action_id": "datepicker123",
    "initial_date": "1990-04-28",
    "placeholder": {
      "тип": "простой_текст",
      "text": "Выберите дату"
    }
  }
}
  

Посмотреть пример


Элемент изображения

Работает с типами блоков: Контекст раздела

Элемент для вставки изображения как части большего блока содержимого.Если вам нужен блок с только изображением в нем, вам нужен блок image .

Поля

Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае тип всегда образ .
image_url Строка Есть URL-адрес отображаемого изображения.
alt_text Строка Есть Краткое текстовое описание изображения. Он не должен содержать разметки.

Пример

  {
  "тип": "изображение",
  "image_url": "http://placekitten.com/700/500",
  "alt_text": "Несколько милых котят"
}
  

Посмотреть пример


Элемент меню с множественным выбором

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

Чтобы использовать интерактивные компоненты, вам нужно будет внести некоторые изменения для подготовки вашего приложения. Прочтите наше руководство по обеспечению интерактивности.

Существуют разные типы меню с множественным выбором, которые зависят от разных источников данных для их списков опций:

Статические опции

Работает с типами блоков: Вход раздела

Это простейшая форма меню выбора со статическим списком опций, переданных при определении элемента.

Поля
Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае тип всегда будет multi_static_select .
заполнитель Объект Есть plain_text - только текстовый объект, определяющий текст-заполнитель, отображаемый в меню.Максимальная длина текста в этом поле составляет 150 символов.
action_id Строка Есть Идентификатор действия, запускаемого при выборе пункта меню. Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
опции Объект [] Есть Массив объектов параметров.Максимальное количество опций - 100. Если указано option_groups , этого поля не должно быть.
option_groups Объект [] Массив объектов группы переключателей. Максимальное количество групп опций - 100. Если указано опций , этого поля не должно быть.
initial_options Объект [] Массив объектов параметров, которые точно соответствуют одному или нескольким параметрам в пределах options или option_groups .Эти параметры будут выбраны при первоначальной загрузке меню.
подтвердить Объект Подтверждающий объект, определяющий необязательный диалог подтверждения, который появляется перед отправкой вариантов множественного выбора.
max_selected_items Целое число Задает максимальное количество элементов, которые можно выбрать в меню. Минимальное количество 1.
Пример

Статическое меню с множественным выбором

  [
  {
    "тип": "раздел",
    "block_id": "section678",
    "text": {
      "тип": "mrkdwn",
      "text": "Выбрать элементы из списка"
    },
    "аксессуар": {
      "action_id": "text1234",
      "тип": "multi_static_select",
      "placeholder": {
        "тип": "простой_текст",
        "текст": "Выбрать элементы"
      },
      "параметры": [
        {
          "text": {
            "тип": "простой_текст",
            "текст": "* это простой_текст *"
          },
          "значение": "значение-0"
        },
        {
          "text": {
            "тип": "простой_текст",
            "текст": "* это простой_текст *"
          },
          "значение": "значение-1"
        },
        {
          "text": {
            "тип": "простой_текст",
            "текст": "* это простой_текст *"
          },
          "значение": "значение-2"
        }
      ]
    }
  }
]
  

Посмотреть пример


Внешний источник данных

Работает с типами блоков: Вход раздела

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

Настройка

Чтобы использовать этот тип меню, сначала необходимо настроить приложение:

  1. Перейдите на страницу настроек вашего приложения и выберите функциональное меню Интерактивные компоненты .
  2. Добавьте URL-адрес к Options Load URL в разделе Select Menus.
  3. Сохранить изменения.

Каждый раз, когда открывается меню этого типа или пользователь начинает вводить текст в поле ввода, мы отправляем запрос на указанный вами URL. Ваше приложение должно возвращать ответ HTTP 200 OK вместе с телом сообщения application / json с объектом, содержащим либо массив options , либо массив option_groups .Вот пример ответа:

  {
  "параметры": [
    {
      "text": {
        "тип": "простой_текст",
        "текст": "* это простой_текст *"
      },
      "значение": "значение-0"
    },
    {
      "text": {
        "тип": "простой_текст",
        "текст": "* это простой_текст *"
      },
      "значение": "значение-1"
    },
    {
      "text": {
        "тип": "простой_текст",
        "текст": "* это простой_текст *"
      },
      "значение": "значение-2"
    }
  ]
}
  
Поля
Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента.В этом случае тип всегда будет multi_external_select .
заполнитель Объект Есть plain_text - только текстовый объект, определяющий текст-заполнитель, отображаемый в меню. Максимальная длина текста в этом поле составляет 150 символов.
action_id Строка Есть Идентификатор действия, запускаемого при выборе пункта меню.Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
min_query_length Целое число Когда используется поле typeahead, запрос будет отправляться при каждом изменении символа. Если вы предпочитаете меньше запросов или более полно продуманных запросов, используйте атрибут min_query_length , чтобы сообщить Slack о наименьшем количестве вводимых символов, необходимых перед отправкой.Значение по умолчанию - 3 .
initial_options Объект [] Массив объектов параметров, которые точно соответствуют одному или нескольким параметрам в пределах options или option_groups . Эти параметры будут выбраны при первоначальной загрузке меню.
подтвердить Объект Подтверждающий объект, определяющий необязательный диалог подтверждения, который появляется перед отправкой вариантов множественного выбора.
max_selected_items Целое число Задает максимальное количество элементов, которые можно выбрать в меню. Минимальное количество 1.
Пример

Меню с множественным выбором в блоке раздела с внешним источником данных:

  [
  {
    "тип": "раздел",
    "block_id": "section678",
    "text": {
      "тип": "mrkdwn",
      "text": "Выбрать элементы из списка"
    },
    "аксессуар": {
      "action_id": "text1234",
      "тип": "multi_external_select",
      "placeholder": {
        "тип": "простой_текст",
        "текст": "Выбрать элементы"
      },
      "min_query_length": 3
    }
  }
]
  

Список пользователей

Работает с типами блоков: Вход раздела

Это меню с множественным выбором заполнит свои параметры списком пользователей Slack, видимым текущему пользователю в активной рабочей области.

Поля
Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае тип всегда multi_users_select .
заполнитель Объект Есть plain_text - только текстовый объект, определяющий текст-заполнитель, отображаемый в меню.Максимальная длина текста в этом поле составляет 150 символов.
action_id Строка Есть Идентификатор действия, запускаемого при выборе пункта меню. Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
initial_users Строка [] Массив идентификаторов всех допустимых пользователей для предварительного выбора при загрузке меню.
подтвердить Объект Подтверждающий объект, определяющий необязательный диалог подтверждения, который появляется перед отправкой вариантов множественного выбора.
max_selected_items Целое число Задает максимальное количество элементов, которые можно выбрать в меню. Минимальное количество 1.
Пример

Меню с множественным выбором в блоке раздела, показывающее список пользователей:

  [
  {
    "тип": "раздел",
    "block_id": "section678",
    "text": {
      "тип": "mrkdwn",
      "text": "Выбрать пользователей из списка"
    },
    "аксессуар": {
      "action_id": "text1234",
      "тип": "multi_users_select",
      "placeholder": {
        "тип": "простой_текст",
        "text": "Выберите пользователей"
      }
    }
  }
]
  

Список разговоров

Работает с типами блоков: Вход раздела

Это меню с несколькими вариантами выбора заполнит свои параметры списком общедоступных и частных каналов, DM и MPIM, видимых текущему пользователю в активной рабочей области.

Поля
Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае тип всегда будет multi_conversations_select .
заполнитель Объект Есть plain_text - только текстовый объект, определяющий текст-заполнитель, отображаемый в меню.Максимальная длина текста в этом поле составляет 150 символов.
action_id Строка Есть Идентификатор действия, запускаемого при выборе пункта меню. Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
initial_conversations Строка [] Массив из одного или нескольких идентификаторов любых допустимых диалогов, которые должны быть предварительно выбраны при загрузке меню.Если также указано default_to_current_conversation , initial_conversations будет проигнорировано.
default_to_current_conversation логический Предварительно заполняет меню выбора беседой, которую пользователь просматривал, когда открывал модальное окно, если доступно. По умолчанию false .
подтвердить Объект Подтверждающий объект, определяющий необязательный диалог подтверждения, который появляется перед отправкой вариантов множественного выбора.
max_selected_items Целое число Задает максимальное количество элементов, которые можно выбрать в меню. Минимальное количество 1.
фильтр Объект Объект фильтра, который сокращает список доступных диалогов, используя указанные критерии.
Пример

Меню с множественным выбором в блоке раздела, показывающее список разговоров:

  [
  {
    "тип": "раздел",
    "block_id": "section678",
    "text": {
      "тип": "mrkdwn",
      "text": "Выберите беседы из списка"
    },
    "аксессуар": {
      "action_id": "text1234",
      "тип": "multi_conversations_select",
      "placeholder": {
        "тип": "простой_текст",
        "text": "Выберите беседы"
      }
    }
  }
]
  

Список публичных каналов

Работает с типами блоков: Вход раздела

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

Поля
Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае тип всегда multi_channels_select .
заполнитель Объект Есть plain_text - только текстовый объект, определяющий текст-заполнитель, отображаемый в меню.Максимальная длина текста в этом поле составляет 150 символов.
action_id Строка Есть Идентификатор действия, запускаемого при выборе пункта меню. Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
initial_channels Строка [] Массив из одного или нескольких идентификаторов любого допустимого общедоступного канала, который будет предварительно выбран при загрузке меню.
подтвердить Объект Подтверждающий объект, определяющий необязательный диалог подтверждения, который появляется перед отправкой вариантов множественного выбора.
max_selected_items Целое число Задает максимальное количество элементов, которые можно выбрать в меню. Минимальное количество 1.
Пример

Меню с множественным выбором в блоке раздела, показывающее список каналов:

  [
  {
    "тип": "раздел",
    "block_id": "section678",
    "text": {
      "тип": "mrkdwn",
      "text": "Выбрать каналы из списка"
    },
    "аксессуар": {
      "action_id": "text1234",
      "тип": "multi_channels_select",
      "placeholder": {
        "тип": "простой_текст",
        "text": "Выбрать каналы"
      }
    }
  }
]
  

Элемент меню переполнения

Работает с типами блоков: Раздел Действия

Это что-то среднее между кнопкой и меню выбора - когда пользователь нажимает на эту кнопку переполнения, ему будет представлен список вариантов для выбора.В отличие от меню выбора, здесь нет поля ввода, и кнопка всегда отображается с многоточием («…»), а не с настраиваемым текстом.

Таким образом, он обычно используется, если вам нужен более компактный макет, чем меню выбора, или для предоставления списка менее визуально важных действий после ряда кнопок. Вы также можете указать простые URL-ссылки в качестве параметров меню переполнения вместо действий.

Чтобы использовать подобные интерактивные компоненты, вам нужно будет внести некоторые изменения для подготовки вашего приложения.Прочтите наше руководство по обеспечению интерактивности.

Поля

Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае тип всегда переполнение .
action_id Строка Есть Идентификатор действия, запускаемого при выборе пункта меню.Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
опции Объект [] Есть Массив объектов параметров для отображения в меню. Максимальное количество вариантов - 5, минимальное - 2.
подтвердить Объект Объект подтверждения, определяющий необязательный диалог подтверждения, который появляется после выбора пункта меню.

Пример

Блок секции с дополнительным меню:

  {
  "тип": "раздел",
  "block_id": "раздел 890",
  "text": {
    "тип": "mrkdwn",
    "text": "Это блок раздела с дополнительным меню."
  },
  "аксессуар": {
    "тип": "переполнение",
    "параметры": [
      {
        "text": {
          "тип": "простой_текст",
          "текст": "* это простой_текст *"
        },
        "значение": "значение-0"
      },
      {
        "text": {
          "тип": "простой_текст",
          "текст": "* это простой_текст *"
        },
        "значение": "значение-1"
      },
      {
        "text": {
          "тип": "простой_текст",
          "текст": "* это простой_текст *"
        },
        "значение": "значение-2"
      },
      {
        "text": {
          "тип": "простой_текст",
          "текст": "* это простой_текст *"
        },
        "значение": "значение-3"
      },
      {
        "text": {
          "тип": "простой_текст",
          "текст": "* это простой_текст *"
        },
        "значение": "значение-4"
      }
    ],
    "action_id": "overflow"
  }
}
  

Посмотреть пример


Элемент ввода обычного текста

Работает с типами блоков: Вход

Обычный текстовый ввод, аналогичный тегу HTML , создает поле, в которое пользователь может вводить данные произвольной формы.Он может отображаться как однострочное поле или более крупное текстовое поле с использованием многострочного флага .

Чтобы использовать подобные интерактивные компоненты, вам нужно будет внести некоторые изменения для подготовки вашего приложения. Прочтите наше руководство по обеспечению интерактивности.

Элементы ввода обычного текста поддерживаются на следующих поверхностях приложения: Вкладки «Главная» Сообщения Модальные окна

Чтобы использовать элементы ввода обычного текста в модальных окнах, вам нужно будет внести некоторые изменения для подготовки вашего приложения. Прочтите о подготовке вашего приложения для модальных окон.

Поля

Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента. В этом случае тип всегда plain_text_input .
action_id Строка Есть Идентификатор входного значения при отправке родительского модального окна.Вы можете использовать это, когда получаете полезную нагрузку view_submission для определения значения входного элемента. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
заполнитель Объект plain_text - только текстовый объект, который определяет текст-заполнитель, отображаемый при вводе обычного текста. Максимальная длина текста в этом поле составляет 150 символов.
начальное_значение Строка Начальное значение в текстовом вводе при загрузке.
многострочный логический Указывает, будет ли ввод одной строкой ( false ) или большим текстовым полем ( true ). По умолчанию false .
мин_длина Целое число Минимальная длина ввода, которую должен предоставить пользователь.Если пользователь предоставит меньше, он получит сообщение об ошибке. Максимальное значение - 3000.
макс_длина Целое число Максимальная длина ввода, которую может предоставить пользователь. Если пользователь предоставит больше, он получит сообщение об ошибке.
dispatch_action_config Объект Объект конфигурации отправки, который определяет, когда во время ввода текста элемент возвращает полезную нагрузку block_actions .

Пример

Блок ввода, содержащий элемент ввода простого текста.

  {
  "тип": "ввод",
  "block_id": "input123",
  "метка": {
    "тип": "простой_текст",
    "текст": "Метка ввода"
  },
  "element": {
    "тип": "простой_текст_ввод",
    "action_id": "plain_input",
    "placeholder": {
      "тип": "простой_текст",
      "text": "Введите простой текст"
    }
  }
}
  

Элемент группы радиокнопок

Работает с типами блоков: Раздел Действия Вход

Группа переключателей, которая позволяет пользователю выбрать один элемент из списка возможных вариантов.

Радиокнопки поддерживаются на следующих поверхностях приложений: Вкладки "Домой" Модальные сообщения

Чтобы использовать подобные интерактивные компоненты, вам нужно будет внести некоторые изменения для подготовки вашего приложения. Прочтите наше руководство по обеспечению интерактивности.

Поля

Поле Тип Обязательно? Описание
тип Строка Есть Тип элемента.В этом случае тип всегда будет radio_buttons .
action_id Строка Есть Идентификатор действия, запускаемого при изменении группы переключателей. Вы можете использовать это, когда получаете полезные данные взаимодействия для определения источника действия. Должен быть уникальным среди всех остальных action_id в содержащем блоке. Максимальная длина этого поля - 255 символов.
опции Объект [] Есть Массив объектов параметров.Допускается максимум 10 вариантов.
initial_option Объект Объект опции, который точно соответствует одной из опций в пределах опции . Этот параметр будет выбран при первоначальной загрузке группы переключателей.
подтвердить Объект Объект подтверждения, определяющий необязательное диалоговое окно подтверждения, которое появляется после щелчка одного из переключателей в этом элементе.

Пример

Блок раздела, содержащий набор переключателей:

  {
  "тип": "модальный",
  "заглавие": {
    "тип": "простой_текст",
    "text": "Мое приложение",
    «эмодзи»: правда
  },
  "Разместить": {
    "тип": "простой_текст",
    "text": "Отправить",
    «эмодзи»: правда
  },
  "близко": {
    "тип": "простой_текст",
    "текст": "Отмена",
    «эмодзи»: правда
  },
  "блоки": [
    {
      "тип": "раздел",
      "text": {
        "тип": "простой_текст",
        "text": "Обратите внимание на эти радиокнопки"
      },
      "аксессуар": {
        "type": "radio_buttons",
        "action_id": "this_is_an_action_id",
        "initial_option": {
          "значение": "А1",
          "text": {
            "тип": "простой_текст",
            "текст": "Радио 1"
          }
        },
        "параметры": [
          {
            "значение": "А1",
            "text": {
              "тип": "простой_текст",
              "текст": "Радио 1"
            }
          },
          {
            «значение»: «А2»,
            "text": {
              "тип": "простой_текст",
              "текст": "Радио 2"
            }
          }
        ]
      }
    }
  ]
}
  

Посмотреть пример


Выбрать элемент меню

Меню выбора, как и стандартный тег HTML