検索

CSSの構造とレイアウト

Feb 18, 2017 pm 02:55 PM
css


0x00 min-content widthadaptive

CSS3 の新しい幅属性値 width:min-content は、コンテナの幅の値をコンテナ内の最大の分割不可能な幅 (最も幅の広い単語、画像、または固定幅ボックス) に設定できますelement)

figure{
    width:min-content;
    margin: auto;    
}

0x01 兄弟要素の数に応じてスタイルを設定します

疑似要素セレクター:only-child は、実際には first-child:last-child と同等であることがわかっています。 、最初の項目は最後の項目でもあるため、論理的にはそれが唯一のものです。 :last-child は、:nth-last-child(1) のショートカットでもあります。

それでは、質問について考えてみましょう。 li:first-chidl:nth-last-child(4) は何を表しますか? 結果は、_ちょうど 4 つのリスト項目を持つリストの最初の項目_です、わかりました、兄弟セレクターと結合されました ~リスト項目が 4 つだけ含まれている場合、その後の各項目をヒットすることで、そのような目標を達成できます

li:first-child:nth-last-child(4),
li:first-child:nth-last-child(4) ~ li {
  
    background: red;
}

SASS と組み合わせると、簡略化して再利用できます

/*定义混合器*/
@mixin n-items($n){
    &:first-child:nth-last-child(#{$n}),
    &:first-child:nth-last-child(#{$n}) ~ &{
        @content;
    }
}

/*调用*/
li {
    @include n-items(4){
        /*属性与值写在这里*/
        background: red;
    }
}

:nth -child のパワー()

nth-child() は、an+b の形式で式を受け入れるため、当然のことながら、この形式でそのバリアント nth-child(n+4) を使用できます。これにより、以下を除くすべての子要素が選択されます。 1 番目、2 番目、および 3 番目の子要素。

ul li:first-child:nth-last-child(n+4),
ul li:first-child:nth-last-child(n+4) ~ li{
    /*当列表中至少包含四项时,命中包括该项之后的所有列表项*/
}

もちろんそれだけではありません。:nth-child() のゲームプレイは完全にあなたの想像力に依存します。

0x02 calc

場合によっては、画面を埋める背景幅と固定コンテンツ幅を持つレイアウトを実装する必要がある場合、おそらく次のように DOM 構造を設計します

<footer>
    <p>        
    </p>
</footer>

CSS スタイル:

footer{
    background: #333;
}

.wrapper{
    max-width: 900px;
    margin: 1em auto;
    height: 200px;
}

calc() メソッドは必要ありません。とても面倒なので、これを実現するには 3 行のコードだけが必要です:

footer{
  background:#333;
  padding:1em calc(50% - 50px);
 }

clac() を使用して、CSS で単純な算術演算を実行します。これにより、DOM 構造が冗長性のない非常に簡潔になります。もちろん、欠点も明らかです。ここでのコードでは、フッター要素の親が 900 ピクセルを超えた場合にのみ効果が現れます。

calc() のパーセンテージは、その親に基づいて解析されます

しかし、私たちは初めて、CSS3 の cacl() の魔法のトリックについて学びました。

0x03 垂直方向のセンタリング

絶対配置ベースのソリューション

CSS には非常に一般的な現象があり、実際のソリューションは、多くの場合、私たちがまったく予想していないところから生まれます。たとえば、positon:absolute 属性とtransform:translate() 属性を組み合わせて垂直方向の中央揃えを実現できます

このように、translate() 変換関数のパーセンテージは要素自体の幅と高さに基づいて変換されるため、固定サイズへの依存を完全に排除できます。

例: DOM 構造

    <p>
        </p><h1 id="Am-i-center">Am i center?</h1>
        <p>Center me ,please!</p>
    

CSS コード:

.main{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

CSS结构与布局

ただし、この方法には欠点もあります:
1. 一部のブラウザでは、要素が 0.5 ピクセルに配置されるため、表示がぼやける可能性があります。
2. 絶対位置決めが適切でない場合。また、絶対配置はレイアウト全体に与える影響が強すぎます。

FlexBox に基づくソリューション

これが現時点で最良のソリューションであることに疑いの余地はありません。さらに、最新のブラウザーによる FlexBox のサポートはすでにかなり進んでいます。

FlexBox コンテナに基づく項目に margin:auto を使用すると、幅が指定されていない場合でも、水平方向だけでなく垂直方向にも中央揃えにすることができます。これは、この要素に割り当てられた幅が max-content と等しいためです。

CSS结构与布局

FlexBox のもう 1 つの利点は、display:flex を使用して要素に align-items:center と justify-content:center を追加するだけで、テキストを垂直方向に中央揃えにすることもできることです。

.main{
    background: deeppink;
    width: 50%;
    height: 50%;
    margin: auto;
    display: flex;
    align-items: center;
    justify-content: center;
}

CSS结构与布局

0x04 下部に張り付くフッター

場合によっては、ヘッダーとフッターの高さが内部要因によって決定されることが期待される一方、コンテンツ ブロックの高さは自動的に縮小され、利用可能なスペースがすべて占有される可能性があります。 。これも FlexBox を使用すると簡単です。

body {
    min-height: 100vh;
    display:flex;
    flex-flow: column;

    header{
        /*heaer style*/
    }
    
    .main{
        flex:1;
    }

    footer{
        /*footer style*/
    }
}

少なくともビューポート全体の高さを占めるように、body に min-height:100vh の高さを与えてから、main に 0 より大きい flex 値を与えます。

質問: フッターが画面の下部に固定されている場合は、ページが最後までスクロールされたときにフッターがコンテンツ領域を覆わないようにする方法はどうすればよいですか?

この問題については、純粋に個人的なアイデアですが、フッターの後に p#_footer を追加できます。

この時点の DOM 構造は次のとおりです:

    <header><header>
    <p></p>
    <footer></footer>
    <p></p>
</header></header>

p#_footer については、コンテンツとスタイルを追加する必要はありません。そのために必要なのは、その高さがフッターの高さと同じであることだけです。 , jQueryを使えば簡単です。

$('#_footer').height($('footer').height())

このように、少しハック的ではありますが、レスポンシブ レイアウトについて心配する必要はありません。これは完璧なソリューションです。


CSS 構造とレイアウト関連の記事の詳細については、お支払いください。 PHP 中国語 Web サイトに注意してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
「CSS4」アップデート「CSS4」アップデートApr 11, 2025 pm 12:05 PM

私が最初にCSS4¹のことを鳴らしたので、それについてもっと多くの議論がありました。私はここで他の人から私のお気に入りの考えをまとめようとしています。がある

3種類のコード3種類のコードApr 11, 2025 pm 12:02 PM

新しいプロジェクトを開始するたびに、3つのタイプ、または必要に応じてカテゴリを検討しているコードを整理します。そして、これらのタイプは適用できると思います

HTTPSは簡単です!HTTPSは簡単です!Apr 11, 2025 am 11:51 AM

私は、httpsの複雑さを公に嘆きながら罪を犯しました。過去に、私はサードパーティのベンダーからSSL証明書を購入し、問題がありました

HTMLデータ属性ガイドHTMLデータ属性ガイドApr 11, 2025 am 11:50 AM

HTML、CSS、およびJavaScriptのデータ属性について知りたいと思っていたことはすべて。

JavaScriptの不変性を理解するJavaScriptの不変性を理解するApr 11, 2025 am 11:47 AM

JavaScriptの不変性を以前に作業したことがない場合は、変数を新しい値または再割り当てに割り当てることと混同しやすいことがわかります。

最新のCSS機能を備えたカスタムスタイリングフォーム入力最新のCSS機能を備えたカスタムスタイリングフォーム入力Apr 11, 2025 am 11:45 AM

最近、カスタムチェックボックス、ラジオボタン、トグルスイッチを構築することは完全に可能です。必要でさえありません

脚注文字脚注文字Apr 11, 2025 am 11:34 AM

脚注に最適な特別なスーパーセット番号の文字があります。ここにあります:

HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法Apr 11, 2025 am 11:29 AM

プロジェクトにカウントダウンタイマーが必要だったことはありますか?そのようなことのために、プラグインに手を伸ばすのは自然なことかもしれませんが、実際にはもっとたくさんあります

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。