序文 日曜日に自宅で web.dev の 2020 3 日間ライブを視聴したところ、興味深い点がたくさんありましたが、そのうちの 1 つは CSS に関するものでした。ホストは Una Kravets (Chrome チーム メンバー) でした。ここ数か月、CSS を深く勉強していませんが、以前学んだ基礎はそのまま残っています (興味があれば、1 年前に投稿した CSS に関する記事を読んでみてください。ただし、内容が低すぎるため、読む人は多くありません。残念です)。 注意: 以下のコードのほとんどは、最新の主要ブラウザで実装されています。本番環境では使用しないでください。公式アカウントの読者であれば、外部リンクのため、クリックして元のテキストを読むことができます。github ページに、より詳細なデモがあります。 文章 01. スーパーセンター flex と grid が登場する前は、垂直方向の中央揃えをうまく実現できませんでした。これで、 <div class="親青"> <div class="box coral" コンテンツ編集可能> :) </div> .ex1 .親{ 表示: グリッド; アイテムを配置: 中央; } MDN、place-items属性の詳細な説明 Codepenアドレス 02. 解体パンケーキ
このレイアウトは、eコマースのウェブサイトでよく見られます。 ビューポートが十分に大きい場合、3 つのボックスが固定幅で水平に配置されます。 ビューポートが大きくない場合(モバイルなど)、幅は固定されたままですが、自動的に分解され(私の中国語レベルを許してください)、同じレベルにはなりません。 <div class="親白"> <div class="box green">1</div> <div class="box green">2</div> <div class="box green">3</div> </div> .ex2 .親{ ディスプレイ: フレックス; flex-wrap: ラップ; コンテンツの中央揃え: 中央; } .ex2 .ボックス { flex: 1 1 150px; /* flex-grow: 1 は、自動的に最大幅まで拡張することを意味します*/ flex: 0 1 150px; /* 伸縮なし: */ マージン: 5px; }
いつ: Codepenアドレス 03. クラシックサイドバー
また、 <div class="parent"> <div class="section yellow" コンテンツ編集可能> 最小: 150ピクセル / 最大: 25% </div> <div class="section purple" コンテンツ編集可能> この要素は2番目のグリッド位置(1fr)を占め、 残りのスペースをすべて占有します。 </div> </div> .ex3 .親{ 表示: グリッド; グリッドテンプレート列: 最小最大(150px, 25%) 1fr; } Codepenアドレス 04. ヘッダーとフッターを固定
高さが固定されたヘッダーとフッター、および残りのスペースを占める本体は、頻繁に使用されるレイアウトであり、 <div class="parent"> <header class="blue section" contenteditable>ヘッダー</header> <main class="coral section" contenteditable>メイン</main> <footer class="purple section" contenteditable>フッターコンテンツ</footer> </div> .ex4 .親{ 表示: グリッド; グリッドテンプレート行: 自動 1fr 自動; } Codepenアドレス 05. クラシカルな聖杯レイアウト
グリッド レイアウトを使用すると、簡単に理想のレイアウトを実現でき、柔軟性も高くなります。 <div class="parent"> <header class="pink section">ヘッダー</header> <div class="left-side blue section" contenteditable>左サイドバー</div> <main class="section coral" contenteditable> メインコンテンツ</main> <div class="right-side yellow section" contenteditable>右サイドバー</div> <footer class="green section">フッター</footer> </div> .ex5 .親{ 表示: グリッド; グリッドテンプレート: auto 1fr auto / auto 1fr auto; } .ex5 ヘッダー { パディング: 2rem; グリッド列: 1 / 4; } .ex5 .左側 { グリッド列: 1 / 2; } .ex5 メイン { グリッド列: 2 / 3; } .ex5 .右側 { グリッド列: 3 / 4; } .ex5 フッター { グリッド列: 1 / 4; } Codepenアドレス 06. 面白い積み木
Codepenアドレス 07. RAMのヒント
Una Kravets はこれを「繰り返し、自動、最小最大化テクニック」と呼んでいます。これは、柔軟なレイアウトの画像/ボックスで非常に便利です (行に配置できるカードの数は自動的に調整されます)。 .ex7 .親{ 表示: グリッド; グリッドギャップ: 1rem; グリッドテンプレート列: repeat(auto-fit, minmax(150px, 1fr)); } <div class="親白"> <div class="box pink">1</div> <div class="box purple">2</div> <div class="box blue">3</div> <div class="box green">4</div> </div> その結果、複数のボックスの最小幅(上記の
08. カードの弾力性と適応性
<div class="親白"> <div class="カード 黄色"> <h3>タイトル - カード 1</h3> <p contenteditable>中程度の長さの説明で、ここにさらにいくつかの単語を追加します。</p> <div class="ビジュアルピンク"></div> </div> <div class="カード 黄色"> <h3>タイトル - カード 2</h3> <p contenteditable>長い説明。お会いできてとても嬉しいです。</p> <div class="ビジュアルブルー"></div> </div> <div class="カード 黄色"> <h3>タイトル - カード 3</h3> <p contenteditable>短い説明。</p> <div class="visual green"></div> </div> </div> .ex8 .親{ 高さ: 自動; 表示: グリッド; グリッドギャップ: 1rem; グリッドテンプレート列: repeat(3, 1fr); } .ex8 .visual { 高さ: 100px; 幅: 100%; } .ex8 .カード { ディスプレイ: フレックス; flex-direction: 列; パディング: 1rem; コンテンツの両端揃え: スペースの間; } .ex8 h3 { マージン: 0 } 幅や高さを縮小しても拡大しても、カードのレイアウトを完璧に表示できます。 Codepenアドレス 09. クランプを使用して流動的なタイポグラフィを実装する
新しい <div class="親白"> <div class="カード 紫"> <h1>タイトルをここに入力</h1> <div class="visual yellow"></div> <p>説明テキスト。Lorem ipsum dolor sit, amet consectetur adipisicing elit。Sed est error repellat veritatis。</p> </div> </div> .ex9 .親{ 表示: グリッド; アイテムを配置: 中央; } .ex9 .カード { 幅: クランプ(23ch, 50%, 46ch); ディスプレイ: フレックス; flex-direction: 列; パディング: 1rem; } .ex9 .visual { 高さ: 125px; 幅: 100%; } MDN、clamp() の説明 10. 完璧なバランス
CMS やその他のデザイン コンテンツを表示する場合、画像、ビデオ、カードが固定の比率でレイアウトされることが想定されます。最新の <div class="親白"> <div class="カード ブルー"> <h1>ビデオのタイトル</h1> <div class="visual green"></div> <p>説明テキスト。このデモは Chromium 84 以降で動作します。</p> </div> </div> .ex10 .親{ 表示: グリッド; アイテムを配置: 中央; } .ex10 .visual { アスペクト比: 16/9; } .ex10 .カード { 幅: 50%; ディスプレイ: フレックス; flex-direction: 列; パディング: 1rem; } Codepenアドレス |
<<: 163 メールボックスログインボックスインタラクティブデザインの改善体験と共有
>>: Mac に MySQL データベースをインストールし、環境変数を設定するためのグラフィック チュートリアル
これまでのブログ投稿では、HTML 5 ではあまり使われていないが注目すべき API やヒントに焦点...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
<br />では、CSS 構文を巧みに使用してテーブルを美しくする方法を見てみましょう。...
Syn 攻撃は、最も一般的で最も簡単に悪用される攻撃方法です。TCP プロトコルの欠陥を利用して、偽...
目次1. プロトタイプ2. プロトタイプポインタ: __proto__要約する1. プロトタイプJa...
外部 CSS ファイルを使用したレンダリング パイプライン上図では、HTML データの要求から DO...
ここでは、Jenkins コンテナを例に 3 つの方法を紹介します。方法1コンテナをイメージにパッケ...
私は長い間問題に取り組み、文法上の問題を何度も確認しました。しかし、後でネットで調べてみたら、突然理...
関連する知識ポイント親コンポーネントから子コンポーネントに値を渡す子コンポーネントから親コンポーネン...
随分前に「Patterns for Sign Up & Ramp Up」を読み終えました。今...
適用シナリオ:新しい要件の 1 つはアンケート調査を行うことですが、必然的に多くの質問が含まれ、1 ...
私は数年間 vi エディタを使ってきましたが、実用的な用途で使ったことはありませんでした。今日 Py...
この記事では、商品詳細ページの虫眼鏡を実装するためのVueの具体的なコードを参考までに共有します。具...
プロジェクトシナリオプロジェクトの背景全体にカスタム透かしを追加します。透かしのテキスト、フォントの...
MySQL による CPU 負荷の上昇今日の午後、MySQL によってサーバーの負荷が高くなる問題を...