CSS ビューポート ユニットはここ数年登場しており、時が経つにつれて、ますます多くの開発者が使用し始めています。これらの利点は、JavaScript を必要とせずに動的にサイズを変更できることです。失敗した場合でも、バックアッププランは豊富にあります。 この記事では、CSS ビューポート ユニットとその使用方法について学習し、一般的な問題とその解決策および使用例をいくつか見ていきます。それでは始めましょう。 導入 CSS 仕様によれば、ビューポートのパーセンテージ単位は、Web ページのルート要素である初期コンテナ ブロックのサイズを基準とします。 ビューポートの単位は、 ビューポートの幅
次の CSS を持つ要素があるとします。 。要素 { 幅:50vw; } ビューポートの幅が 幅 = 500*50% = 250ピクセル ビューポートの高さ
次の CSS を持つ要素があります。 。要素 { 高さ: 50vh; } ビューポートの高さが 高さ = 290*70% = 202ピクセル みんな履歴書にプロジェクトがないと言うので、みんなのためにプロジェクトを探してきて、【構築チュートリアル】も添付しました。 Vmin 単位
次の例を見てみましょう。 。要素 { パディングトップ: 10vmin; パディングボトム: 10vmin; } ご想像のとおり、計算は次のようになります。 パディングトップ = (高さの 10%) = 10% * 164 = 16.4px padding-bottom = (高さの10%) = 10% * 164 = 16.4px Vmaxユニット
次の例を見てみましょう。 。要素 { パディングトップ: 10vmax; パディングボトム: 10vmax; } 計算結果は以下のとおりです。 パディングトップ = (幅の10%) = 10% * 350 = 35px padding-bottom = (幅の10%) = 10% * 350 = 35p ビューポートの単位とパーセンテージの違いは何ですか? ビューポートの単位はページのルート要素に基づきますが、パーセンテージはそれらが含まれるコンテナーに基づきます。したがって、それらは互いに異なりますが、それぞれに独自の用途があります。 ビューポート単位でのフォントサイズの使用例 CSS ビューポート ユニットは、レスポンシブなタイポグラフィに最適です。たとえば、記事のタイトルとして次のものを使用できます。 。タイトル { フォントサイズ: 5vw; } タイトルの 本体サイズが非常に小さくなり、アクセシビリティとユーザーエクスペリエンスに悪影響を及ぼします。私の知る限り、モバイル デバイスの最小フォント サイズは この問題を解決するには、タイトルの最小フォントサイズを指定する必要があります。これは 。タイトル { フォントサイズ: calc(14px + 2vw); } 考慮すべきもう 1 つの重要な点は、 @media (最小幅: 1800px) { 。タイトル { フォントサイズ: 40px; } } フォント サイズをリセットすることで、サイズが大きくなりすぎないようにすることができます。複数のメディアクエリを追加する必要もあるかもしれませんが、それはプロジェクトのコンテキストに応じて異なります。 アドレスの例: https://codepen.io/shadeed/pen/fa989837c6379770cce49f0be6daa3e3 全画面表示 場合によっては、ビューポートの高さを .p { 高さ:100vh; ディスプレイ: フレックス; flex-direction: 列; コンテンツの中央揃え: 中央; アイテムの位置を中央揃えにします。 } ソースコードの例: https://codepen.io/shadeed/pen/dc4e82f3c873cc64ae5c5bc4a3f4ef9f?editors=1100 スティッキーレイアウト(フッター) 大きな画面では、Web サイトのコンテンツがまばらになり、 これを修正するには、コンテンツの高さをビューポートの高さ - (ヘッダー + フッター)に等しくする必要があります。これを動的に行うことは困難ですが、CSS のビューポートを使用すると簡単です。 最初の解決策:
ヘッダ、 フッター { 高さ: 70px; } 主要 { 高さ: calc(100vh - 70px - 70px); } この解決策は、特に 2. 2番目の解決策: Flexboxとビューポートユニット (推奨) 体 { 最小高さ: 100vh; ディスプレイ: フレックス flex-direction: 列; { 主要 { /* これにより、メイン要素が残りのスペースを動的に占有するようになります */ フレックス成長: 1; } この方法では、問題は解決され、コンテンツの長さに関係なく固定 ソースコードの例: https://codepen.io/shadeed/pen/c735b26b8fa97ee685b38084448b3f85?editors=1100 レスポンシブ要素 レスポンシブ デザインの作品を紹介するポートフォリオがあり、3 つのデバイス (モバイル、タブレット、ラップトップ) があるとします。各デバイスには 1 つの画像が含まれます。目標は、CSS を使用してこれらのページをレスポンシブに適応させることです。 CSS グリッドとビューポート ユニットを使用することで、完全に動的かつレスポンシブにすることができます。 <div class="wrapper"> <div class="デバイス ラップトップ"></div> <div class="デバイス モバイル"></div> <div class="デバイス タブレット"></div> </div> ビューポート単位は、 .ラッパー{ 表示: グリッド; グリッドテンプレート列: repeat(20, 5vw); グリッド自動行: 6vw; } 。携帯 { 位置: 相対的; zインデックス: 1; グリッド列: 2 / スパン 3; グリッド行: 3 / スパン 5; } .タブレット{ 位置: 相対的; zインデックス: 1; グリッド列: 13 / スパン 7; グリッド行: 4 / スパン 4; ボーダー下部: 1vw 実線 #a9B9dd; 右ボーダー: solid 3vw #a9B9dd; } 。ラップトップ { 位置: 相対的; グリッド列: 3/スパン 13; グリッド行: 2 / スパン 8; } /* ビューポートの単位は、下、左、右、高さ、境界の半径に使用されます。クールだと思いませんか? */ .laptop:after { コンテンツ:""; 位置:絶対; 下部: -3vw; 左: -5.5vw; 右: -5.5vw; 高さ: 3vw; 背景色: #a9B9dd; 境界線の半径: 0 0 1vw 1vw; } ソースコードの例: https://codepen.io/shadeed/pen/2da0f2b70699769f8de3220ff4465bc6?editors=1100 コンテナから抜け出す レイアウトの編集に最適なユースケースが 1 つあることに気付きました。親要素の幅が制限されている場合でも、ビューポートの幅の 。起こる { 幅:100vw; 位置: 相対的; 左: 50%; 右: 50%; 左マージン: -50vw; 右マージン: -50vw; } これらすべてのプロパティがどのように機能するかを少しずつ理解できるように、少し分解してみましょう。 1. 最も重要なステップは、画像の幅をビューポートの 2. 画像を中央に配置するには、ビューポートの幅の半分の幅の負のマージンを与える必要があります。 3. 最後に、親の幅の アドレスの例: https://codepen.io/shadeed/pen/828f12b1ef7fa7211584ff5c7b82d2fa?editors=1100 垂直および水平間隔 思い浮かぶもう 1 つの興味深い使用例は、ビューポート単位を使用して要素間の間隔を表すことです。これは、 モーダルボックス モーダルの場合は、ビューポートの上部から押し込む必要があります。通常、これは .modal-body { トップ:20vh; } アドレスの例: https://codepen.io/shadeed/pen/f77a0d58947c64c2b3dadbd887700db5?editors=1100 ページヘッダー ページ たとえば、次の CSS スタイルがあるとします。 .ページヘッダー{ パディングトップ: 10vh; パディングボトム: 10vh; } .ページヘッダー h2 { マージン下部: 1.5vh; } ページ タイトルのパディングとタイトルの下の余白には ソースコードの例: https://codepen.io/shadeed/pen/43024fa031519e316e95bb3ce47f2b22?editors=1100 Vmin と Vmax の使用例 このユースケースは、ページ タイトル要素の上部と下部の .ページヘッダー{ パディング: 10vmin 1rem; } ソースコードの例: https://codepen.io/shadeed/pen/f335c2f43b960a2c70ea057228ddc5b9?editors=0100 アスペクト比
まず、必要なアスペクト比を決定する必要があります。この例では、 p { /* 9/16 * 100 */ 高さ: 56.25vw; } ソースコードの例: https://codepen.io/shadeed/pen/dc4e82f3c873cc64ae5c5bc4a3f4ef9f?editors=0100 人気のトップボーダー ほとんどのウェブサイトで使用されている上部の境界線をご存知ですか?多くの場合、ブランドと同じ色で、個性を与えます。 境界線の初期値として vw = (ピクセル値 / ビューポート幅) * 100 ビューポートの幅は、ピクセル値と必要な この例では、 .ヘッダー{ 上境界線: 4px 実線 #8f7ebc; } 私の場合、ビューポートの幅は vw = (4 / 1440) * 100 = 0.277 .ヘッダー{ 上ボーダー: 0.277vw 実線 #8f7ebc; } さらに良いことに、基本ピクセル値を使用して、ビューポート単位を加算することができます。 .ヘッダー{ border-top: calc(2px + 0.138vw) solid $color-main; } モバイルのスクロールの問題 モバイルデバイスでは、 .my-要素{ height: 100vh; /* カスタムプロパティをサポートしていないブラウザ用のフォールバック */ 高さ: calc(var(--vh, 1vh) * 100); } // まず、ビューポートの高さを取得し、それに 1% を掛けて vh 単位の値を取得します。let vh = window.innerHeight * 0.01; // 次に、`--vh` カスタム プロパティの値をドキュメントのルート ディレクトリ内のプロパティに設定します。 document.documentElement.style.setProperty('--vh', `${vh}px`); ソースコードの例: https://codepen.io/shadeed/pen/1d18ca2d23ec0038c759dc62dc3fd8c3?editors=0110 CSS ビューポート ユニットを使用して高速レイアウトを実現する方法については、これで終わりです。CSS ビューポート ユニットに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 |
<<: MySQL の暗黙的な型変換によって発生するインデックス障害の解決策
>>: Vue3 における provide と inject の使用法と原則
1 効果デモアドレス: https://www.albertyy.com/2020/7/check...
昨日、パソコンにPHP開発環境をセットアップした後、Apacheサーバーを再起動するとエラーが続きま...
Vue ファースト スクリーン パフォーマンス最適化コンポーネントVue ファースト スクリーン パ...
いわゆる才能(左脳と右脳)つまり、芸術的な才能があるかどうかは、人間の左脳と右脳の分業によって主に決...
目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...
docker デーモンは通常の TCP ポートではなくホストの Unix ソケットにバインドする必要...
目次父から息子へ:息子から父へ: Vuex を使用せずにコンポーネント間で値を渡す方法は、親から子、...
@vue+echarts は中国地図のフロー効果を実現します#レンダリングを見てみましょう手順:コ...
例: <html> <ヘッド> <スタイル タイプ="tex...
1. アイデアMySQL に 1,000,000 件のレコードを挿入するのにたった 6 秒しかかかり...
1. nginxを例に挙げるyumコマンドを使用してNginxをインストールしましたSystemd ...
MySQLでホワイトリストアクセスを設定する手順1. ログイン mysql -uroot -pmys...
時は経つのが早く、わずか 6 日後には 2013 年が歴史になります。今年は、いわゆるトレンドが多す...
目次補間式方法計算された要約する今日は、Vue の計算プロパティについてお話ししましょう。計算プロパ...
現象Apache Spark 2.x を使用すると、Spark ジョブがすべて完了しているにもかかわ...