フロントエンドインタビュー質問の統合(基本記事)

  • ブラウザカーネル

    IE:トライデントカーネル、Firefox:geckoカーネル、Safari:webkitカーネル、Opera:以前はprestoカーネル、Operaは現在Google ChromeのBlinkカーネル、Chrome:Blink(webkitに基づいており、GoogleとOpera Softwareが共同開発)を使用しています。

  • HTMLのDoctypeは何をしますか?
    このタグは、ドキュメントが使用するHTMLまたはXHTML仕様をブラウザに通知します(キーポイント:どの仕様に従ってページを解析するようにブラウザに指示します)

  • テーブルレイアウトと比較したdiv + cssレイアウトの利点は何ですか?
    cssファイルを変更するだけでバージョンを変更する方が便利です。ページの読み込みが速く、構造が明確で、ページの表示が簡潔です。パフォーマンスは構造から分離されています。最適化が簡単(seo)検索エンジンがより使いやすく、ランキングがトップになりやすい

  • imgのaltとtitleの類似点と相違点は何ですか?strongとemの類似点と相違点は?
    alt(alt text):画像、フォーム、またはアプリレットを表示できないユーザーエージェント(UA)。alt属性は、代替テキストを指定するために使用されます。置換テキストの言語は、lang属性で指定されます。(IEブラウザーでは、タイトルがない場合、altはツールヒントとして表示されます)
    title(ツールヒント):この属性は、この属性を設定する要素の示唆的な情報を提供します。
    強い:太字はラベルを強調し、コンテンツの重要性を強調します。
    em:イタリックはラベルを強調し、より強く強調して、コンテンツの強調を示します。

  • プログレッシブエンハンスメントとグレースフルデグラデーションの違い
    プログレッシブエンハンスメント:低バージョンのブラウザ用のページを作成して最も基本的な機能を確保し、効果とインタラクションを改善し、高度なブラウザ用の機能を追加してユーザーエクスペリエンスを向上させます。グレースフルデグラデーション:最初に完全な機能を構築してから、下位バージョンのブラウザーと互換性を持たせます。違い:グレースフルデグラデーションは複雑な現状から始まり、ユーザーエクスペリエンスの供給を減らそうとしますが、インクリメンタルエンハンスメントは非常に基本的で機能的なバージョンから始まり、将来の環境のニーズを満たすために拡張し続けます。ダウングレード(機能低下)とは、振り返ることを意味します。プログレッシブエンハンスメントとは、基盤が安全な場所にあることを確認しながら、楽しみにすることを意味します。

  • 複数のドメイン名を使用してWebサイトのリソースを保存する方が効果的なのはなぜですか?
    CDNキャッシングの方が便利です。
    ブラウザの同時実行制限を突破し
    ます。Cookieの帯域幅を節約します。
    メインドメイン名への接続数を節約します。ページの応答速度を最適化します。
    不要なセキュリティの問題を防ぎます。

  • Cookie、sessionStorage、localStorageの違い
    sessionStorageは、セッション内のデータをローカルに保存するために使用されます。これらのデータには、同じセッション内のページからのみアクセスでき、セッションが終了するとデータは破棄されます。したがって、sessionStorageは永続的なローカルストレージではなく、セッションレベルのストレージです。LocalStorageは、永続的なローカルストレージに使用されます。データがアクティブに削除されない限り、データが期限切れになることはありません。Cookieの役割は、サーバーと対話し、HTTP仕様の一部として存在することですが、Webストレージはデータをローカルに「保存」するためにのみ生まれます。Cookieのサイズには制限があり、新しいページをリクエストするたびにCookieが送信されるため、目に見えないほど帯域幅が無駄になります。さらに、Cookieはスコープを指定する必要があり、ドメイン間で呼び出すことはできません。

  • srcとhrefの違い
    簡単に言うと、srcは現在の要素を置き換えるために使用され、hrefは現在のドキュメントと参照されるリソース間の接続を確立するために使用されます。

    src:srcはsourceの略で、外部リソースの場所を指します。ポイントされたコンテンツは、ドキュメント内の現在のタグの場所に埋め込まれます。srcリソースが要求されると、ポイントされたリソースがダウンロードされ、jsスクリプトなどのドキュメントに適用されます。 img画像やフレームなどの要素。
    ブラウザが要素を解析すると、リソースが読み込まれ、コンパイルされ、実行されるまで、他のリソースのダウンロードと処理が一時停止されます。同じことが、現在のタグにポイントされたリソースを埋め込むのと同様に、画像やフレームなどの要素にも当てはまります。これが、jsスクリプトが先頭ではなく下部に配置される理由です。
    harf:hrefはHypertext Referenceの略語です。ネットワークリソースの場所を指し、現在の要素(アンカー)または現在のドキュメント(リンク)とのリンクを確立します。ドキュメントに<link href =” common.css” relを追加すると=” stylesheet” />次に、ブラウザはドキュメントをcssファイルとして認識し、リソースを並行してダウンロードし、現在のドキュメントの処理を停止しません。これが、@ importメソッドの代わりにlinkメソッドを使用してcssをロードすることをお勧めする理由です。

  • マイクロフォーマットとは何ですか、マイクロフォーマットの理解について話す
    マイクロフォーマットは、機械可読であり、構造化データのオープンスタンダードであるセマンティックXHTMLボキャブラリーのコレクションです。これは、特別なアプリケーション用に開発された特別なフォーマットです。利点:スマートデータをWebページに追加し、Webサイトのコンテンツが検索エンジンの結果インターフェイスに追加のプロンプトを表示できるようにします。

  • css / jsコードがオンラインになった後、開発者はパフォーマンスを最適化することがよくあります。ユーザーがWebページを更新することから始めて、jsリクエストが一般的にキャッシュされる場所はどこですか。
    dnsキャッシュ、cdnキャッシュ、ブラウザキャッシュ、サーバーキャッシュ

  • 大規模なウェブサイトの読み込み画像プランを最適化します。
    画像の遅延読み込みでは、スクロールバーイベントをページの非表示領域に追加して、画像の位置とブラウザの上部の間の距離とページの距離を決定できます。前者が後者よりも小さい場合は、最初に読み込まれます。スライドショーやフォトアルバムなどの場合は、画像プリロード技術を使用して、現在表示されている画像の前後の画像を最初にダウンロードできます。画像がcss画像の場合は、CSSsprite、SVGsprite、Iconfont、Base64などのテクノロジーを使用できます。画像が大きすぎる場合は、特別にコード化された画像を使用できます。ロードするときは、ユーザーエクスペリエンスを向上させるために、非常に圧縮されたサムネイルが最初にロードされます。画像の表示領域が実際の画像のサイズよりも小さい場合、サーバー側でビジネスニーズに応じて画像が圧縮され、圧縮された画像はディスプレイと同じサイズになります。

  • HTML構造html自体のセマンティクスには
    パフォーマンスがありません。たとえば、<h1>は太字、フォントサイズは2em、太字です。<strong>は太字です。これがhtmlのパフォーマンスであるとは思わないでください。これらは、実際にはhtmlのデフォルトです。 CSSスタイルが機能しているため、スタイルが削除されたり欠落したりしたときにページに明確な構造を表示することはセマンティックHTML構造の利点ではありませんが、ブラウザーにはデフォルトスタイルがあり、デフォルトスタイルの目的はhtmlをより適切に表現することです。ブラウザのデフォルトのスタイルとセマンティックHTML構造は切り離せないものであると言えます。

  • DOMのCSSスタイルを設定する方法はありますか?
    外部スタイルシート、外部cssファイルをインポートします
    内部スタイルシート、<head>タグ内にcssコードを配置し
    ますインラインスタイル、HTML要素内に直接cssスタイルを定義します

  • CSSセレクタは何している
    のセレクタ(HTMLタグによって宣言された)由来
    のidセレクタ(DOM IDで宣言された)
    (スタイルクラス名で宣言された)クラスセレクタ

    属性セレクタ([REL =「外部」])
    を除きます最初の3つの基本セレクター、および
    子孫セレクター(div .a {}などのスペースを使用)
    隣接セレクター(プラス記号、h1 + p
    を使用グループセレクター(を使用を含むいくつかの拡張セレクターp、div、#a {}などのコンマ間隔)
    ワイルドカードセレクター(*)
    疑似クラスセレクター(a:ホバー、li:n番目の子)

  • DOM要素がブラウザの表示範囲に表示されないようにCSSで定義できる属性はどれですか。display
    プロパティをnoneに設定するか、visibilityプロパティをhiddenに
    設定し、幅と高さを0に設定し、透明度を0に設定し、z-indexの位置をで設定します。 -1000em

  • ハイパーリンクにアクセスした後、ホバースタイルが表示されない問題は何ですか?の解き方?
    クリックしてアクセスしたハイパーリンクスタイルには、ホバーとアクティブがなくなりました。解決策は、CSSプロパティの順序を変更することです:LVHA(リンク、訪問、ホバー、アクティブ)

  • Cssハックとは何ですか?ie6,7,8のハックは何ですか?
    ブラウザーごとに異なるCSSコードを作成するプロセスは、CSSハックです。
    例は次のとおりです。  

       #test{   
            width:300px;   
            height:300px;   
            background-color:blue;      /*firefox*/
            background-color:red\9;      /*all ie*/
            background-color:yellow;    /*ie8*/
            +background-color:pink;        /*ie7*/
            _background-color:orange;       /*ie6*/    }  
            :root #test { background-color:purple\9; }  /*ie9*/
    @media all and (min-width:0px)
         { #test {background-color:black;} }  /*opera*/
    @media screen and (-webkit-min-device-pixel-ratio:0)
    { #test {background-color:gray;} }       /*chrome and safari*/
    

     

  • インライン要素とブロックレベル要素の具体的な違いは何ですか?
    ブロックレベルの要素(ブロック)の特性:常に行を占有し、新しい行の開始点として動作し、次の要素も新しい行に表示する必要があります:幅(幅)、高さ(高さ)、内側の余白(パディング)、外側の余白マージンを制御できます。
    インライン要素(インライン)の特性:隣接するインライン要素と同じライン内。

  • マージンオーバーラップとは何ですか?
    マージンのオーバーラップの影響は、マージンの崩壊です。CSSでは、2つの隣接するボックス(兄弟または祖先の場合があります)の余白を1つの余白に組み合わせることができます。マージンを組み合わせるこの方法はフォールディングと呼ばれ、結合されたマージンはフォールドマージンと呼ばれます。
    折りたたみ結果は、次の計算規則に従います。隣接する2つのマージンが正の数の場合、折りたたみ結果はそれらの間の値が大きくなります。2つの隣接するマージンが両方とも負の数である場合、折り畳みの結果は2つの絶対値の大きい方になります。2つの外側マージンが1つが正で、もう1つが負の場合、折りたたみ結果は2つの合計になります。

  • rgba()と不透明度の透明効果の違いは何ですか?
    rgba()と不透明度はどちらも透明度を実現できますが、最大の違いは、不透明度が要素と要素内のすべてのコンテンツの透明度に作用するのに対し、rgba()は要素の色またはその背景色にのみ作用することです。(rgbaをtransparentに設定する要素の子要素は、transparent効果を継承しません!)

  • フローティング要素を水平方向と垂直方向の中央に配置します

    方法1:位置マージン

    方法2: diaplay:table-cell

    方法3:位置 変換

    方法4:flex; align-items:center; justify-content:center

    方法5:display:flex; margin:auto

    方法6:純粋な位置

    方法7:固定の幅と高さではなく、下位バージョンのブラウザーと互換性がある

  • ボックスモデルについての理解を教えてください。
    パディング、マージン、ボーダー、コンテンツ属性の
    ボックスサイズがあります。コンテンツボックスはW3Cボックスモデルです。要素の幅と高さの属性にはコンテンツ部分のみが含まれ、パディングとボーダーの境界は含まれません。セクション。
    ボックスサイズ:border-boxはIEボックスモデルです。要素のwidthプロパティとheightプロパティには、コンテンツ、パディング、および境界部分も含まれます。

  • 位置の配置
    相対
    的:それ自体に対して、子要素をそれ自体に対して相対的な位置にガイドします絶対:親要素の相対的な位置に従って
    配置します固定:ウィンドウの配置になりました

  • remの原理はem / vw / vhとは異なります。Rem
    はルート要素のフォントサイズの変更に基づいていますが、emは本文
    1のフォントサイズの変更に基づいています。html5とcss3は、ディスプレイの物理サイズを置き換えるビューポートの概念を導入しているためです。メタタグの設定により、ビューポートの長さと幅をデバイスの物理的な解像度と同じまたは等しくすることができ(電話で2本の指を使用してページをズームインおよびズームアウトできます)、必要に応じて柔軟に制御できます。PCでは、ビューポートの長さと幅はブラウザウィンドウの物理的な解像度と同じです。
    2. 1vwはビューポート幅の100分の1に相当します。これは、100vwがビューポートの幅であることを意味します。同様に、1vhは、ビューを30pxから5vwに変更することと同じです。これは、ウィンドウ幅の5%を意味し、同じことが10vwです。
    3.ただし、vwとvhはcss3でのみサポートされる長さの単位であるため、css3をサポートしないブラウザーではビューポートの高さの100分の1では無効です。

  • Css3のアニメーション
    @keyframesルールは、アニメーションの作成に使用されます。@keyframesで特定のCSSスタイルを指定すると、現在のスタイルから新しいスタイルに徐々に変化するアニメーション効果を作成できます。

  • SassとLESSとは何ですか、そしてそれらの利点
    はCSSプリプロセッサです。これはCSSの抽象化レイヤーです。それらはCSSにコンパイルされた特別な構文/言語です。
    たとえば、Lessは動的なスタイルの言語です。CSSは、変数、継承、計算、関数などの動的な言語機能を提供します。Lessは、クライアント(IE 6以降、Webkit、Firefoxをサポート)またはすべてで実行できます。サーバーは(Node.jsの助けを借りて)実行されます。
    利点:
    明確な構造、拡張が容易。
    ブラウザのプライベート構文の違いを簡単に保護できます。
    ブラウザ構文の違いの繰り返し処理をカプセル化し、無意味な機械的労力を削減します。
    複数の継承を簡単に実現できます。
    CSSコードと完全に互換性があり、古いプロジェクトに簡単に適用できます。
    LESSはCSS構文の拡張にすぎないため、古いCSSコードをLESSコードでコンパイルすることもできます。

  • display:noneとvisibility:hiddenの違いは何ですか?
    表示:対応する要素を非表示にしますが、要素の元のスペースを占有しません。
    可視性:対応する要素を非表示にし、要素の元のスペースを絞ります。
    つまり、CSS display:none属性を使用した後、HTML要素(オブジェクト)の幅と高さは「失われます」。visibility:hidden属性を使用した後、HTML要素(オブジェクト)は視覚的にのみ表示されます。欠落しています(完全に透明)が、それが占めるスペースはまだ存在しています。

  • CSS
    Linkのlinkと@importの違いはhtmlタグにあり、@ importはCSSで提供さ
    ます。ページが読み込まれると、リンクも同時に読み込まれ、@ importによって参照されるCSSは、ページが読み込まれるまで読み込まれません。 CSS
    @importはie5より上でのみ認識でき、linkはhtmlタグであり、ブラウザの互換性の問題はありません。Linkは@import参照よりも多くのスタイルを導入します(@importは参照されたスタイルを現在のページにインポートします)

  • BFCとは?
    BFC(Block Level Formatting Context)は、新しいBFCを作成するボックスが独立して配置され、ボックス内の要素のレイアウトはボックス外の要素に影響を与えません。同じBFC内の2つの隣接するボックスには、垂直方向に重なり合うマージンがあります。BFCは、ブラウザーでの独立したレンダリング領域の作成を指します。この領域内のすべての要素のレイアウトは、領域外の要素のレイアウトには影響しません。 、このレンダリング領域はブロックレベルの要素でのみ機能します

  • 一般的なhtml互換性の問題
    1.ディスプレイの使用による両面距離BUGフロート
    dislpayの使用によるフロートの使用による2.3ピクセルの問題:インライン-3px
    3.クリック後にハイパーリンクのホバーが無効です  。正しい書き込み順序のリンクを使用して、ホバーをアクティブにします
    4.つまりz-インデックスの問題により、親に対して相対的な位置が追加され
    ます。5。Pngはjsコードを透過的に使用して変更します。6
    最小の高さの最小の高さ!解決することが重要です '
    7. iframeネストを使用してie6の下でカバーするように選択します
    8.約1pxの幅コンテナを定義する方法がないのはなぜですか(IE6のデフォルトの行の高さにより、over:hidden、zoom:0.08 line-height:1pxを使用)
    9。 IE5-8は不透明度をサポートしていません。解決策:.opacity {不透明度:0.4フィルター:alpha(opacity = 60); / * IE5-7の場合* / -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity = 60 ) "; / * IE8の場合* /}
    10. IE6はPNGの透明な背景をサポートしていません。解決策:IE6でgif画像を使用します。

  • インライン要素とは何ですか?ブロックレベル要素とは何ですか?ボイド要素とは何ですか?
    ブロックレベルの要素:アドレス-アドレスblockquote-ブロック引用センター-整列ブロックdir-ディレクトリリストdiv-共通ブロックレベル簡単、またcssレイアウトのメインタグdl-定義リストフィールドセット-フォームコントロールグループフォーム-インタラクティブフォームh1-ラージ見出しh2-小見出しh3-レベル3見出しh4-レベル4見出しh5-レベル5見出しh6-レベル6見出しhr-水平分割isindex-入力プロンプトメニュー-メニューリストnoframes-フレームオプションコンテンツ(フレームをサポートしないもの用)ブラウザはこのブロックのコンテンツを表示します)noscript –オプションのスクリプトコンテンツ(スクリプトをサポートしないブラウザの場合はこのコンテンツを表示します)ol –並べ替えフォームp –段落前–フォーマットされたテキストテーブル–テーブルul –並べ替えられていないリスト
    行要素: a –アンカーポイントabbr –省略形の略語–最初の単語b –太字(非推奨)大きい–大きいフォントbr –改行em –強調フォント–フォント設定(非推奨)i –斜体img –画像入力–入力ボックスラベル–テーブルラベルs-下線(非推奨)select-item selection small-small font text span-一般的に使用されるインラインコンテナ、テキスト内のブロックを定義するstrike-underline strong-bold強調サブサブスクリプトsup-superscript textarea-複数行のテキスト入力ボックスtt-teletextu-アンダースコアvar-定義変数
    よく知られている空の要素:<br> <hr> <img> <input> <link> <meta>鲜是人事是:<area> <base> <col> <command> <embed> <keygen> <param> <source> <トラック> <wbr>

  • フロントエンドページのどの3つのレイヤーが構造レイヤーを構成しますか
    HtmlプレゼンテーションレイヤーCSS動作レイヤーjs

  • CSSのどのプロパティを継承できますか?
    継承可能:font-size font-family color、UL LI DL DD DT;
    継承不可:ボーダーパディングマージン幅高さ;

  • CSS優先度アルゴリズム(重み)
    優先度は近接性の原則であり、スタイル定義は最も近く、
    読み込みスタイルは最後に読み込まれた位置に基づいてい
    ます!重要>インライン> ID>クラス>タグ

  • 高さは適応性があり、幅は高さの半分です
    。padding-top/ bottom / left / rightプロパティを使用して、パーセンテージとして設定した場合の親要素の幅に応じて設定する方法、padding-top / bottom:100%; paddingを設定できます。 -左/右:50%;要素を広げ、親要素の幅を設定する場合は特に注意してください。特に親要素の幅が継承される場合は、高さを設定せずに親要素の幅のみを設定することもできます。親要素を非表示にするには;

  • HolyGrailレイアウトに類似した複数のコードメソッド
    HolyGrailレイアウトは、非常に一般的なCSSレイアウトです。
    要件:
    1。上部と下部が画面の幅全体を占めます。
    2.上部と下部の間の部分は3列のレイアウトです。
    3. 3列のレイアウトの両側の幅は変更されず、中央部分が自動的に領域全体を埋めます。
    4.中央部分の高さは、3列の最も高い領域の高さです。

    浮动实现
    外层框架
    <div class="header">这里是头部</div>
    <div class="container"></div>
    <div class="footer">这里是底部</div>
    .header,.footer{
        height:200px;
        width:100%;
        background:red;
    }
    .container{
        padding-left:200px;
        padding-right:300px;
    }
    填充三栏
    这一步骤,首先给底部区域清除浮动,防止跟随上边的区域一起浮动。
    另外:把中,左,右三个区域设置成度浮动。给左右两块区域固定的宽度,中间部分的宽度设置成100%。
    这样实现下来,因为浮动的关系,[middle]会占据[container]的所有部分,而左右两块区域都会被挤到下面,但是,由于第一步设置了内边距的关系,[container]的左右各剩余了一块区域,且宽度与左右区域相同。
    <div class="header">这里是头部</div>
    <div class="container">
        <div class="middle">中间部分</div>
        <div class="left">左边</div>
        <div class="right">右边</div>
    </div>
    <div class="footer">这里是底部</div>
    
    .header,.footer{
        height:40px;
        width:100%;
        background:red;
    }
    .footer{
        clear:both;
    }
    .container{
        padding-left:200px;
        padding-right:300px;
    }.container div{
        float:left;
    }
    .middle{
        width:100%;
        background:yellow;
    }
    .left{
        width:200px;
        background:pink;
    }
    .right{
        width:300px;
        background:aqua;
    }
    移动左侧区域
    接下来要做的就是把左右两块区域挪到空出来的内边距空间里去。
    先移动左边,新加一个样式 margin-left:-100%。这样一来,因为浮动关系,就把左边块上移到了[middle]左侧,与其交织在一起,而右侧栏就自动往左移动。然后再给左侧栏一个偏移量,偏移量恰好是其宽度,这一步要给[container]的position设成relative
    <div class="header">这里是头部</div>
    <div class="container">
        <div class="middle">中间部分</div>
        <div class="left">左边</div>
        <div class="right">右边</div>
    </div>
    <div class="footer">这里是底部</div>
    .header,.footer{
        height:40px;
        width:100%;
        background:red;
    }
    .footer{
        clear:both;
    }
    .container{
        padding-left:200px;
        padding-right:300px;
    }
    .container div{
        postion:relative;
        float:left;
    }
    .middle{
        width:100%;
        background:yellow;
    }
    .left{
        width:200px;
        background:pink;
        margin-left:-100%;
        right:200px;
    }
    .right{
        width:300px;
        background:aqua;
    }
    移动右边
    同上一步的原理一样,把右侧区域也给弄上去,设置负外边距和本身宽度相同就行了。
    <div class="header">这里是头部</div>
    <div class="container">
        <div class="middle">中间部分</div>
        <div class="left">左边</div>
        <div class="right">右边</div>
    </div>
    <div class="footer">这里是底部</div>
    
    .header,.footer{
        height:40px;
        width:100%;
        background:red;
    }
    .footer{
        clear:both;
    }
    .container{
        padding-left:200px;
        padding-right:300px;
    }
    .container div{
        postion:relative;
        float:left;
    }
    .middle{
        width:100%;
        background:yellow;
    }
    .left{
        width:200px;
        background:pink;
        margin-left:-100%;
        right:200px;
    }
    .right{
        width:300px;
        background:aqua;
        margin-right:-300px;
    }
    
     
    
    
    flexbox弹性盒子实现
    弹性盒子用来实现圣杯布局特别简单。只需要把中间的部分用flex布局即可。
    <div class="header">这里是头部</div>
    <div class="container">
        <div class="left">左边</div>
        <div class="middle">中间部分</div>
        <div class="right">右边</div>
    </div>
    <div class="footer">这里是底部</div>
    
    .header,.footer{
        height:40px;
        width:100%;
        background:red;
    }
    .container{
        display: flex;
    }
    .middle{
        flex: 1;
        background:yellow;
    }
    .left{
    width:200px;
        background:pink;
    }
    .right{
        background: aqua;
        width:300px;
    }
    很简单,在写html的时候,因为不再涉及到浮动,只需要按照左中右的顺序来写就可以了。左右两块区域的宽度写死,把中间的区域的flex属性设置成1就可以了。
    css grid网格
    grid是一种新的布局方式,截止2018年初,绝大多数浏览器都已经支持css grid。
    其原理就是把页面的区域划分成一个一个的网格,就和围棋的棋盘一样。
    用网格来解决圣杯问题,可以摆脱弹性盒子时需要格外加一个[container]的问题,也就是左中右三款区域不需要在他们外边包装一个额外的div。
    <div id="header">header</div>
    <div id="left">left</div>
    <div id="middle">middle</div>
    <div id="right">right</div>     
    <div id="footer">footer</footer></div>
      
    body{
        display: grid;
    }
    #header{
        background: red;
        grid-row:1;
        grid-column:1/5;
    }
    #left{
        grid-row:2;
        grid-column:1/2;
        background: orange;
    }
    #right{
        grid-row:2;
        grid-column:4/5;
        background: cadetblue;
    }
    #middle{
        grid-row:2;
        grid-column:2/4;
        background: rebeccapurple
    }
    #footer{
        background: gold;
        grid-row:3;
        grid-column:1/5;
    }
    简单说一下代码的实现。回头会专门看一下css grid的细节。
    首先给最外层的body设成display:grid。当然,是外层父级元素即可,不一定是body。
    grid-row就是说由上到下,#header占据第1格,#left,#middle,#right占据第2格,#footer占据第3格。
    而grid-column表示,在横向从左向右,分成了五格。其中#header和#footer占据全部。#left占据第1格,#middle占据第2到第4格,#right占据第5格。
    不管是实现起来还是理解起来都很方便。
    

     

おすすめ

転載: blog.csdn.net/time_____/article/details/109381529