スポンサー
Support Framework7

ボタン

    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-mdMDテーマのみの隆起したボタン
    button-raised-auroraAuroraテーマのみでの隆起したボタン
    button-outline輪郭ボタン
    button-outline-iosiOSテーマのみのアウトラインボタン
    button-outline-mdMDテーマのみのアウトラインボタン
    button-outline-auroraAuroraテーマのみのアウトラインボタン
    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-iosiOSテーマでの丸いセグメンテーション
    segmented-round-mdMD テーマでの丸みを帯びたセグメンテーション
    segmented-round-auroraAuroraテーマでの丸いセグメンテーション
    segmented-raised盛り上がったセグメンテーション
    segmented-raised-iosiOSテーマに含まれる隆起したセグメント化
    segmented-raised-mdMDテーマで分割されている
    segmented-raised-auroraAurora」テーマでの「Raised」セグメント化
    segmented-strong強烈なセグメンテーション
    segmented-strong-iosiOSテーマでの強力なセグメンテーション
    segmented-strong-mdMDテーマでの強力なセグメンテーション
    segmented-strong-auroraAurora テーマで強く分割されています。

    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>