Кнопка
Techno4 постачається з купою готових до використання кнопок. Все, що вам потрібно зробити, це додати відповідні класи до ваших посилань або submit/button входів:
Макет кнопок
Макет кнопок досить простий. Просто додайте клас
button
до посилань або submit/button входів: <!-- посилання як кнопка -->
<a class="button">Button</a>
<!-- <button> as button -->
<button class="button">Button</button>
<!-- <input type="submit"> as button -->
<input type="submit" class="button" value="Button" />
Класи модифікаторів кнопок
У Techno4 існує безліч різних кнопок. Різні стилі кнопок, досягнуті додатковими класами модифікаторів та їх комбінаціями:
Клас модифікатор | Опис |
---|---|
button-fill | Заповнена кнопка |
button-fill-ios | Кнопка матиме заповнений стиль лише в темі iOS |
button-fill-md | Кнопка матиме заповнений стиль лише в темі MD |
button-fill-aurora | Кнопка матиме заповнений стиль лише в темі Aurora |
button-round | Заокруглена кнопка |
button-round-ios | Кнопка буде округленою лише в темі iOS |
button-round-md | Кнопка буде закруглена лише в темі MD |
button-round-aurora | Кнопка буде закруглена лише в темі Aurora |
button-small | Маленька кнопка |
button-small-ios | Кнопка буде маленькою лише в темі iOS |
button-small-md | Кнопка буде маленькою лише в темі MD |
button-small-aurora | Кнопка буде маленькою лише в темі Aurora |
button-large | Велика кнопка |
button-large-ios | Кнопка буде великою лише в темі iOS |
button-large-md | Кнопка буде великою лише в темі MD |
button-large-aurora | Кнопка буде великою лише в темі Aurora |
button-raised | Піднята кнопка |
button-raised-ios | Піднята кнопка лише в темі iOS |
button-raised-md | Піднята кнопка лише в темі MD |
button-raised-aurora | Піднята кнопка лише в темі Aurora |
button-outline | Контур кнопки |
button-outline-ios | Кнопка з контуром лише в темі iOS |
button-outline-md | Кнопка з контуром лише в темі MD |
button-outline-aurora | Кнопка з контуром лише в темі Aurora |
button-active | Активний/вибраний стан кнопки. Для використання всередині Segmented |
button-preloader | Потрібно додати до кнопки з попереднім завантажувачем, щоб кнопки завантажувалися |
button-loading | Керує станом кнопки, щоб показати/приховати попередній завантажувач і приховати/показати текст кнопки (перевести кнопку в стан завантаження). button-preloader слід також додати до кнопки |
color-[color] | Кнопка кольору, де [color] є одним із кольорів за замовчуванням |
І, звичайно, ми можемо змішувати ці класи:
<!-- кругла кнопка -->
<a class="button button-round">Button</a>
<!--кругла і заповнена кнопка -->
<a class="button button-round button-fill">Button</a>
<!-- пілнята, кругла , заповнена, велика кнопка -->
<a class="button button-raised button-round button-fill button-large">Button</a>
<!-- маленька червона кнопка -->
<a class="button button-small color-red">Button</a>
Кнопка попереднього завантаження
Є можливість створити динамічну кнопку попереднього завантаження. Така кнопка повинна мати
Preloader
всередині та текст кнопки, обгорнутий тегом <span>
, і додатковий клас button-preloader
:<button class="button button-preloader">
<span class="preloader"></span>
<span>Load</span>
</button>
А щоб показати попередній завантажувач, нам потрібно додати додатковий клас
button-loading
(він покаже внутрішній попередній завантажувач і приховає текст кнопки):<button class="button button-preloader button-loading">
<span class="preloader"></span>
<span>Load</span>
</button>
Сегментований контроль
Сегментований елемент керування — це лінійний набір із двох або більше сегментів (buttons), кожен із яких функціонує як взаємовиключна кнопка. Усередині елемента керування всі кнопки мають однакову ширину. Сегментовані елементи керування часто використовуються для відображення різних переглядів (перемикання вкладок).
Макет сегментованого елемента
Макет сегментованого елемента керування досить простий, лише
<div>
із класом segmented
навколо кнопок:<div class="segmented">
<a class="button button-active">Tab 1</a>
<a class="button">Tab 2</a>
</div>
Segmented
"strong"
вимагає додаткового елемента для правильного відображення активного стану:<div class="segmented segmented-strong">
<a class="button button-active">Tab 1</a>
<a class="button">Tab 2</a>
<!-- Додатковий елемент вимагається в segmented strong -->
<span class="segmented-highlight"></span>
</div>
Класи сегментованих модифікаторів
Окрім кнопок, сегментовані елементи керування також підтримують декілька додаткових класів для стилізації:
Клас модифікатор | Опис |
---|---|
segmented-round | Округлі сегментовані елементи керування |
segmented-round-ios | Округлі сегментовані елементи керування в темі iOS |
segmented-round-md | Округлі сегментовані елементи керування в темі MD |
segmented-round-aurora | Округлі сегментовані елементи керування в темі Aurora |
segmented-raised | Підняті сегментовані елементи керування |
segmented-raised-ios | Підняті сегментовані елементи керування в темі iOS |
segmented-raised-md | Підняті сегментовані елементи керування в темі MD |
segmented-raised-aurora | Підняті сегментовані елементи керування в темі Aurora |
segmented-strong | Strong сегментовані елементи керування |
segmented-strong-ios | Strong сегментовані елементи керування в темі iOS |
segmented-strong-md | Strong сегментовані елементи керування в темі MD |
segmented-strong-aurora | Strong сегментовані елементи керування в темі Aurora |
Змінні CSS
Нижче наведено список пов’язаних змінних CSS (спеціальні властивості CSS).
Зауважте, що коментовані змінні не вказано за замовчуванням, і в цьому випадку вони повертаються до їхніх значень.
:root {
--t4-button-font-size: 14px;
--t4-button-min-width: 32px;
--t4-button-bg-color: transparent;
--t4-button-border-width: 0px;
--t4-button-text-transform: uppercase;
--t4-button-large-text-transform: uppercase;
--t4-button-small-text-transform: uppercase;
--t4-button-small-outline-border-width: 2px;
/*
--t4-button-text-color: var(--t4-theme-color);
--t4-button-pressed-bg-color: rgba(var(--t4-theme-color-rgb), .15);
--t4-button-pressed-text-color: var(--t4-button-text-color, var(--t4-theme-color));
--t4-button-border-color: var(--t4-theme-color);
--t4-button-fill-text-color: #fff;
--t4-button-fill-bg-color: var(--t4-theme-color);
--t4-button-outline-border-color: var(--t4-theme-color);
--t4-button-padding-vertical: 0px;
*/
--t4-button-outline-border-width: 2px;
--t4-button-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
--t4-button-raised-pressed-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16),
0 3px 6px rgba(0, 0, 0, 0.23);
--t4-segmented-raised-divider-color: rgba(0, 0, 0, 0.1);
--t4-segmented-strong-padding: 2px;
--t4-segmented-strong-between-buttons: 4px;
--t4-segmented-strong-button-font-weight: 500;
--t4-segmented-strong-button-active-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);
--t4-segmented-strong-bg-color: rgba(0, 0, 0, 0.07);
--t4-segmented-strong-button-text-color: #000;
--t4-segmented-strong-button-pressed-bg-color: rgba(0, 0, 0, 0.07);
--t4-segmented-strong-button-hover-bg-color: rgba(0, 0, 0, 0.04);
--t4-segmented-strong-button-active-text-color: #000;
--t4-segmented-strong-button-active-bg-color: #fff;
}
:root .dark,
:root.dark {
--t4-segmented-strong-bg-color: rgba(255, 255, 255, 0.1);
--t4-segmented-strong-button-pressed-bg-color: rgba(255, 255, 255, 0.04);
--t4-segmented-strong-button-hover-bg-color: rgba(255, 255, 255, 0.02);
--t4-segmented-strong-button-active-bg-color: rgba(255, 255, 255, 0.14);
--t4-segmented-strong-button-text-color: #fff;
--t4-segmented-strong-button-active-text-color: #fff;
}
.ios {
--t4-button-height: 28px;
--t4-button-padding-horizontal: 10px;
--t4-button-border-radius: 5px;
--t4-button-font-weight: 600;
--t4-button-letter-spacing: 0;
/*
--t4-button-fill-pressed-bg-color: var(--t4-theme-color-tint);
*/
--t4-button-large-height: 44px;
--t4-button-large-font-size: 17px;
--t4-button-large-font-weight: 500;
--t4-button-small-height: 26px;
--t4-button-small-font-size: 13px;
--t4-button-small-font-weight: 600;
--t4-segmented-strong-button-text-transform: none;
--t4-segmented-strong-button-active-font-weight: 600;
}
.md {
--t4-button-height: 36px;
--t4-button-padding-horizontal: 8px;
--t4-button-border-radius: 4px;
--t4-button-font-weight: 500;
--t4-button-letter-spacing: 0.05em;
/*
--t4-button-fill-pressed-bg-color: var(--t4-theme-color-shade);
*/
--t4-button-large-height: 48px;
--t4-button-large-font-size: 14px;
--t4-button-large-font-weight: 500;
--t4-button-small-height: 28px;
--t4-button-small-font-size: 14px;
--t4-button-small-font-weight: 500;
--t4-segmented-strong-button-text-transform: uppercase;
--t4-segmented-strong-button-active-font-weight: 500;
}
.aurora {
/*
--t4-button-hover-bg-color: rgba(var(--t4-theme-color-rgb), .07);
--t4-button-fill-hover-bg-color: var(--t4-theme-color-tint);
*/
--t4-button-height: 36px;
--t4-button-min-width: 24px;
--t4-button-padding-horizontal: 10px;
--t4-button-border-radius: 8px;
--t4-button-font-weight: 600;
--t4-button-letter-spacing: 0em;
/*
--t4-button-fill-pressed-bg-color: var(--t4-theme-color-shade);
*/
--t4-button-large-height: 48px;
--t4-button-large-font-size: 16px;
--t4-button-large-font-weight: 600;
--t4-button-small-height: 28px;
--t4-button-small-font-size: 14px;
--t4-button-small-font-weight: 600;
--t4-segmented-strong-button-text-transform: uppercase;
--t4-segmented-strong-button-active-font-weight: 600;
}
Приклади
<template>
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="title">Buttons</div>
</div>
</div>
<div class="page-content">
<div class="block-title">Usual Buttons</div>
<div class="block block-strong">
<div class="row">
<button class="button col">Button</button>
<button class="button col">Button</button>
<button class="button col button-round">Round</button>
</div>
</div>
<div class="block-title">Fill Buttons</div>
<div class="block block-strong">
<div class="row">
<button class="col button button-fill">Button</button>
<button class="col button button-fill">Button</button>
<button class="col button button-fill button-round">Round</button>
</div>
</div>
<div class="block-title">Outline Buttons</div>
<div class="block block-strong">
<div class="row">
<button class="col button button-outline">Button</button>
<button class="col button button-outline">Button</button>
<button class="col button button-outline button-round">Round</button>
</div>
</div>
<div class="block-title">Raised Buttons</div>
<div class="block block-strong">
<p class="row">
<button class="col button button-raised">Button</button>
<button class="col button button-raised button-fill">Fill</button>
<button class="col button button-outline button-raised">Outline</button>
</p>
<p class="row">
<button class="col button button-raised button-round">Round</button>
<button class="col button button-raised button-fill button-round">Fill</button>
<button class="col button button-outline button-round button-raised">Outline</button>
</p>
</div>
<div class="block-title">Segmented</div>
<div class="block block-strong">
<p class="segmented segmented-raised">
<button class="button">Button</button>
<button class="button">Button</button>
<button class="button button-active">Active</button>
</p>
<p class="segmented segmented-strong">
<button class="button">Button</button>
<button class="button">Button</button>
<button class="button button-active">Active</button>
<span class="segmented-highlight"></span>
</p>
<p class="segmented">
<button class="button button-outline">Outline</button>
<button class="button button-outline">Outline</button>
<button class="button button-outline button-active">Active</button>
</p>
<p class="segmented segmented-raised segmented-round">
<button class="button button-round">Button</button>
<button class="button button-round">Button</button>
<button class="button button-round button-active">Active</button>
</p>
<p class="segmented segmented-round">
<button class="button button-round button-outline">Outline</button>
<button class="button button-round button-outline">Outline</button>
<button class="button button-round button-outline button-active">Active</button>
</p>
</div>
<div class="block-title">Large Buttons</div>
<div class="block block-strong">
<p class="row">
<button class="col button button-large">Button</button>
<button class="col button button-large button-fill">Fill</button>
</p>
<p class="row">
<button class="col button button-large button-raised">Raised</button>
<button class="col button button-large button-raised button-fill">Raised Fill</button>
</p>
</div>
<div class="block-title">Small Buttons</div>
<div class="block block-strong">
<p class="row">
<button class="col button button-small">Button</button>
<button class="col button button-small button-outline">Outline</button>
<button class="col button button-small button-fill">Fill</button>
</p>
<p class="row">
<button class="col button button-small button-round">Button</button>
<button class="col button button-small button-round button-outline">Outline</button>
<button class="col button button-small button-round button-fill">Fill</button>
</p>
</div>
<div class="block-title">Preloader Buttons</div>
<div class="block block-strong">
<button class="button button-large button-fill button-preloader ${isLoading ? 'button-loading' : ''}"
@click=${load}>
<span class="preloader"></span>
<span>Load</span>
</button>
</div>
<div class="block-title">Color Buttons</div>
<div class="block block-strong">
<p class="row">
<button class="col button color-red">Red</button>
<button class="col button color-green">Green</button>
<button class="col button color-blue">Blue</button>
</p>
<p class="row">
<button class="col button color-pink">Pink</button>
<button class="col button color-yellow">Yellow</button>
<button class="col button color-orange">Orange</button>
</p>
<p class="row">
<button class="col button color-gray">Gray</button>
<button class="col button color-black">Black</button>
</p>
</div>
<div class="block-title">Color Fill Buttons</div>
<div class="block block-strong">
<p class="row">
<button class="col button button-fill color-red">Red</button>
<button class="col button button-fill color-green">Green</button>
<button class="col button button-fill color-blue">Blue</button>
</p>
<p class="row">
<button class="col button button-fill color-pink">Pink</button>
<button class="col button button-fill color-yellow">Yellow</button>
<button class="col button button-fill color-orange">Orange</button>
</p>
<p class="row">
<button class="col button button-fill color-gray">Gray</button>
<button class="col button button-fill color-black">Black</button>
<button class="col button button-fill color-white text-color-black">White</button>
</p>
</div>
</div>
</div>
</template>
<script>
export default (props, { $update }) => {
let isLoading = false;
const load = () => {
isLoading = true;
$update();
setTimeout(() => {
isLoading = false;
$update();
}, 3000);
}
return $render;
}
</script>
Techno4 Framework
- Get Started
- Introduction
- Kitchen Sink
- Installation
- Package Structure
- App HTML Layout
- RTL Layout
- Initialize App
- Events
- Router Component
- Routes
- Store
- App/Core
- Accordion/Collapsible
- Action Sheet
- Area chart
- Autocomplete
- Badge
- Block/Content Block
- Breadcrumbs
- Button
- Calendar/Date Picker
- Cards
- Checkbox
- Chips
- Color Picker
- Contact List
- Data Table
- Dialog
- Floating action button
- Form
- Gauge
- Icons
- Inputs / Form Inputs
- Grid /Layout Grid
- Link
- List Button
- List View
- List Index
- Login Screen
- Menu List
- Messagebar
- Navbar
- Messages
- Notification
- Panel/Side Panels
- Photo Browser
- Picker
- Pie Chart
- Popover
- Popup
- Preloader
- Progressbar
- Pull to Refresh
- Radio
- Range Slider
- Searchbar