JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTMLの新しいFlexbox APIを使ったフルハイトアプリでの垂直スクロール実装

flexプロパティの基本

CSSのflexプロパティは、flex-grow(伸び率)、flex-shrink(縮み率)、flex-basis(基本サイズ)という3つのプロパティをまとめて指定できるショートハンドです。フレックスコンテナ内の各アイテム(フレックスアイテム)に対して、柔軟な長さの挙動を一行で設定できます。

フルハイトアプリで垂直スクロールを実現する方法

高さ固定のアプリ画面(フルハイトレイアウト)で、コンテンツがあふれたときにだけスクロールさせたい場合は、フレックスアイテムの高さを0pxに設定するのがポイントです。

#container article {
    -webkit-flex: 1 1 auto;
    overflow-y: auto;
    height: 0px; /* ここで高さを0pxに設定 */
}

height: 0pxを指定すると、アイテムはコンテンツ量に関わらず親コンテナの高さに収まり、はみ出した部分はoverflow-y: autoによって垂直スクロールできるようになります。

最小の高さを持たせたい場合

アイテムにある程度の最小の高さを持たせたい場合は、次のようにheight: 100pxを指定します。この指定はmin-height: 100pxを設定した場合と同じように機能します。

#container article {
    -webkit-flex: 1 1 auto;
    overflow-y: auto;
    height: 100px; /* ここで高さを100pxに設定 */
}

補足:モダンブラウザでの記述

上記の-webkit-flexは、旧式のWebKit系ブラウザ向けのベンダープレフィックス付き記述です。現在の主要ブラウザでは、標準のflexプロパティをそのまま使用できます。

#container article {
    flex: 1 1 auto;
    overflow-y: auto;
    height: 0px;
}

親要素側の設定も忘れずに

この手法を正しく機能させるには、親コンテナにもフレックスレイアウトの設定が必要です。

#container {
    display: flex;
    flex-direction: column;
    height: 100vh;
}

これにより、ヘッダーやフッターを固定したまま、記事部分だけをスクロールさせる、アプリらしいレイアウトを簡単に実現できます。

  1. CSS3のFlexboxで要素を水平・垂直方向に中央揃えする方法

    CSS3のFlexboxを使えば、複雑な計算やposition指定をすることなく、要素を水平・垂直方向の両方で簡単に中央揃えできます。ポイントは、親コンテナにdisplay: flex;を設定し、水平方向の配置にはjustify-contentプロパティ、垂直方向の配置にはalign-itemsプロパティを使用することです。中央揃えに必要なプロパティjustify-content: center; … 主軸(デフォルトでは水平方向)に沿って子要素を中央に配置します。align-items: center; … 交差軸(デフォルトでは垂直方向)に沿って子要素を中央に配置します。この2つのプロパテ

  2. HTMLとCSSでサイドバーとメインコンテンツ領域を含むページを作成する方法

    html要素とbody要素の高さ(height)を100%に設定することで、ブラウザ画面いっぱいに広がる流動的なレイアウトのWebページを作成できます。サイドバーとメインコンテンツ領域を左右に並べた2カラム構成にする場合、CSSのdisplayプロパティでtableとtable-cellを活用すると、各カラムの高さが自動的に揃い、背景も最下部まできれいに伸びるため便利です。 コード例 以下の例では、親要素「#parent」にdisplay: table;を指定し、サイドバー「#side」とメイン領域「#main」にそれぞれdisplay: table-cell;を設定しています。幅はサイドバー