ボタン
Framework7には、すぐに使用できるボタンがたくさん用意されています。必要なのは、適切なクラスをリンクや送信/ボタン入力に追加することだけです。
ボタンのレイアウト
ボタンのレイアウトはとてもシンプルです。リンクやサブミット/ボタンの入力に button
クラスを追加するだけです。
<!-- リンクをボタンに -->
<a class="button">Button</a>
<!-- <button> をボタンとして使用 -->
<button class="button">Button</button>
<!-- <input type="submit"> をボタンにする -->
<input type="submit" class="button" value="Button" />
ボタンモディファイアクラス
Framework7には様々な種類のボタンがあります。追加の修飾子クラスとその組み合わせによって、さまざまなボタンのスタイルを実現します。
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>
プリローダボタン
ダイナミックなプリローダボタンを作成することができます。このようなボタンは、プリローダーを内蔵し、ボタンのテキストを <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>
セグメント化されたコントロール
セグメント化されたコントロールとは、2つ以上のセグメント(ボタン)を直線的に並べたもので、それぞれのセグメントは互いに排他的なボタンとして機能します。コントロール内では、すべてのボタンの幅は同じです。セグメント化されたコントロールは、異なるビューを表示する(タブを切り替える)ために使用されることが多い。
セグメント化されたレイアウト
セグメント化されたコントロールのレイアウトは非常にシンプルで、ボタンの周りに segmented
クラスを持つ <div>
を配置するだけです。
<div class="segmented">
<a class="button button-active">Tab 1</a>
<a class="button">Tab 2</a>
</div>
セグメント化された "strong "では、アクティブな状態を正しく示すために追加の要素が必要です。
<div class="segmented segmented-strong">
<a class="button button-active">Tab 1</a>
<a class="button">Tab 2</a>
<!-- セグメント化されたstrongに必要な追加要素 -->
<span class="segmented-highlight"></span>
</div>
セグメント化されたモディファイアクラス
ボタンだけでなく、segmented はスタイリングのためにいくつかの追加クラスをサポートしています。
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」テーマでの「Raised」セグメント化 |
segmented-strong | 強烈なセグメンテーション |
segmented-strong-ios | iOSテーマでの強力なセグメンテーション |
segmented-strong-md | MDテーマでの強力なセグメンテーション |
segmented-strong-aurora | Aurora テーマで強く分割されています。 |
CSS Variables
Below is the list of related CSS variables (CSS custom properties).
Note that commented variables are not specified by default and their values is what they fallback to in this case.
:root {
--f7-button-font-size: 14px;
--f7-button-min-width: 32px;
--f7-button-bg-color: transparent;
--f7-button-border-width: 0px;
--f7-button-text-transform: uppercase;
--f7-button-large-text-transform: uppercase;
--f7-button-small-text-transform: uppercase;
--f7-button-small-outline-border-width: 2px;
/*
--f7-button-text-color: var(--f7-theme-color);
--f7-button-pressed-bg-color: rgba(var(--f7-theme-color-rgb), .15);
--f7-button-pressed-text-color: var(--f7-button-text-color, var(--f7-theme-color));
--f7-button-border-color: var(--f7-theme-color);
--f7-button-fill-text-color: #fff;
--f7-button-fill-bg-color: var(--f7-theme-color);
--f7-button-outline-border-color: var(--f7-theme-color);
--f7-button-padding-vertical: 0px;
*/
--f7-button-outline-border-width: 2px;
--f7-button-raised-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
--f7-button-raised-pressed-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16),
0 3px 6px rgba(0, 0, 0, 0.23);
--f7-segmented-raised-divider-color: rgba(0, 0, 0, 0.1);
--f7-segmented-strong-padding: 2px;
--f7-segmented-strong-between-buttons: 4px;
--f7-segmented-strong-button-font-weight: 500;
--f7-segmented-strong-button-active-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);
--f7-segmented-strong-bg-color: rgba(0, 0, 0, 0.07);
--f7-segmented-strong-button-text-color: #000;
--f7-segmented-strong-button-pressed-bg-color: rgba(0, 0, 0, 0.07);
--f7-segmented-strong-button-hover-bg-color: rgba(0, 0, 0, 0.04);
--f7-segmented-strong-button-active-text-color: #000;
--f7-segmented-strong-button-active-bg-color: #fff;
}
:root .theme-dark,
:root.theme-dark {
--f7-segmented-strong-bg-color: rgba(255, 255, 255, 0.1);
--f7-segmented-strong-button-pressed-bg-color: rgba(255, 255, 255, 0.04);
--f7-segmented-strong-button-hover-bg-color: rgba(255, 255, 255, 0.02);
--f7-segmented-strong-button-active-bg-color: rgba(255, 255, 255, 0.14);
--f7-segmented-strong-button-text-color: #fff;
--f7-segmented-strong-button-active-text-color: #fff;
}
.ios {
--f7-button-height: 28px;
--f7-button-padding-horizontal: 10px;
--f7-button-border-radius: 5px;
--f7-button-font-weight: 600;
--f7-button-letter-spacing: 0;
/*
--f7-button-fill-pressed-bg-color: var(--f7-theme-color-tint);
*/
--f7-button-large-height: 44px;
--f7-button-large-font-size: 17px;
--f7-button-large-font-weight: 500;
--f7-button-small-height: 26px;
--f7-button-small-font-size: 13px;
--f7-button-small-font-weight: 600;
--f7-segmented-strong-button-text-transform: none;
--f7-segmented-strong-button-active-font-weight: 600;
}
.md {
--f7-button-height: 36px;
--f7-button-padding-horizontal: 8px;
--f7-button-border-radius: 4px;
--f7-button-font-weight: 500;
--f7-button-letter-spacing: 0.05em;
/*
--f7-button-fill-pressed-bg-color: var(--f7-theme-color-shade);
*/
--f7-button-large-height: 48px;
--f7-button-large-font-size: 14px;
--f7-button-large-font-weight: 500;
--f7-button-small-height: 28px;
--f7-button-small-font-size: 14px;
--f7-button-small-font-weight: 500;
--f7-segmented-strong-button-text-transform: uppercase;
--f7-segmented-strong-button-active-font-weight: 500;
}
.aurora {
/*
--f7-button-hover-bg-color: rgba(var(--f7-theme-color-rgb), .07);
--f7-button-fill-hover-bg-color: var(--f7-theme-color-tint);
*/
--f7-button-height: 36px;
--f7-button-min-width: 24px;
--f7-button-padding-horizontal: 10px;
--f7-button-border-radius: 8px;
--f7-button-font-weight: 600;
--f7-button-letter-spacing: 0em;
/*
--f7-button-fill-pressed-bg-color: var(--f7-theme-color-shade);
*/
--f7-button-large-height: 48px;
--f7-button-large-font-size: 16px;
--f7-button-large-font-weight: 600;
--f7-button-small-height: 28px;
--f7-button-small-font-size: 14px;
--f7-button-small-font-weight: 600;
--f7-segmented-strong-button-text-transform: uppercase;
--f7-segmented-strong-button-active-font-weight: 600;
}
Examples
<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>