検索
ホームページウェブフロントエンドCSSチュートリアルCSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

この記事では、CSS ボックス モデルに関する 6 つの面接の質問を紹介します。不足しているものがないか確認して埋めてください。これら 6 つの面接の質問のうち、何問正しく答えることができますか?全部正解できますか?

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

フロントエンドのインタビューでは、CSS ボックス モデルは、CSS の基礎となる非常に重要な内容であるため、間違いなく尋ねられるべきフロントエンドの知識ポイントです。 、それに関連する知識もたくさんありますが、面接では通常どのように段階的に質問しますか?以下を見てみましょう!

1. CSS ボックス モデルについての理解について話してください。

質問に対する簡単な答え

すべての HTML 要素はボックスとして扱うことができます。 CSS では、デザインとレイアウトについて話すときに「ボックス モデル」または「ボックス モデル」という用語が使用されます。 CSS ボックス モデルは基本的に、各 HTML 要素を囲むボックスです。

これには以下が含まれます:

  • 外マージン→マージン
  • 境界線→ボーダー
  • パディング→パディング
  • 実際のコンテンツ→コンテンツ

標準モデルと IE モデルの 2 種類があります。

ナレッジ分析

ボックス モデル、英語ボックスモデル。

  • div、span、a のいずれであっても、それはボックスです。
  • 画像とフォーム要素はすべてテキストとみなされますが、画像内には何も配置できず、それ自体が独自のコンテンツであるため、ボックスではありません。

ボックス モデルの各部分の説明:

  • マージン (マージン): 境界線の外側の領域をクリアします。マージンは透明です (負の値にすることもできます)。
  • ボーダー (ボーダー): パディングとコンテンツを囲むボーダー。
  • Padding (パディング): コンテンツの周囲の領域をクリアし、パディングは透明になります (負の値は許可されません)。
  • コンテンツ (コンテンツ): ボックスのコンテンツ。テキストと画像が表示されます。

2. 標準モデルと IE モデルの違いは何ですか?

#質問に対する簡単な答え

標準モデルと IE モデルの違いは、幅と高さの計算です。

    標準モデルの幅はパディングとボーダーを計算しません。
  • つまり、モデルの幅はパディングとボーダーを計算します。

ナレッジ分析

標準ボックス モデル (W3C ボックス モデル)

設定された幅と高さは正しい

実際のコンテンツ content幅と高さ が設定され、コンテンツの周囲の境界線とパディングも追加で設定されます。つまり、実際のコンテンツの幅と高さは、要素は次のとおりです:

width[height] = セット内容のパディング境界マージンの幅[高さ]

は例を通して理解できます: div を記述して set幅、高さ、境界線、内側のエッジを同時に指定 間隔、マージン;

//注:如果下面示例未写html和css,说明与此处相同
.box {
    width: 100px;
    height: 100px;
    border: 10px solid #CC9966;
    padding: 30px;
    margin: 40px;
    background: #66FFFF;
}
<div class="box">Axjy</div>

Chrome のデベロッパー ツールに表示される効果とボックス モデルは次のとおりです:

コンテンツ部分は 100×100 で、コンテンツは追加の設定で囲まれていることがわかります。CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?width=40 10 30 100 30 10 40=180

;

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

IE ボックス モデル (変なボックス モデル)

設定された幅と高さは、## の幅と高さの合計です。 #実際のコンテンツ、パディング、およびボーダー。設定;

は、要素の実際の幅と高さを意味します:

width (高さ) = 幅 (高さ) マージンの設定

上記と同じ例を使用しますが、

box-sizing:border-box;;

.box {
    width: 100px;
    height: 100px;
    border: 10px solid #CC9966;
    padding: 30px;
    margin: 40px;
    background: #66FFFF;
    box-sizing: border-box;//注意
}
<div class="box">Axjy</div>

効果と Chrome の開発者を設定して、IE ボックス モデルに設定します。表示されたボックス モデルは次のとおりです。

正方形が上記のものよりも小さいことが明らかにわかります。

width=40 10 30 20 30 10 40 =100

;CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

3. これら 2 つのモデルを CSS で設定するにはどうすればよいですか?

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

質問に対する簡単な答え

上記の例では実際にこの設定を使用していますcss標準モデルの設定: Box-sizing:context-box (ブラウザのデフォルトのボックス モデルでもあります);

css 設定 Ie モデル:

box-sizing:border-box
    ;
  • 4. JS はボックス モデルに対応する幅と高さをどのように設定/取得しますか?

#質問への簡単な回答

1) dom.style.width/height【只能取到内联元素】
2) dom.currentStyle.width/height【只有IE支持】
3) document.getComputedStyle(dom,null).width/height  
4) dom.getBoundingClientRect().width/height 
5) dom.offsetWidth/offsetHeight【常用】

#知識分析

1, dom.style.width/height

dom ノードの style スタイルを通じて取得され、インライン スタイルの幅と高さのみが取得できます。リンク外部リンクのスタイルが取得できません

.box{...}
----------------------------

let targetDom = document.querySelector(&#39;.box&#39;);
let width = targetDom.style.width;
let height = targetDom.style.height;

console.log("width",width)
console.log("height",height)
幅と高さをクラスで設定する場合

取得した幅と高さが空です

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

在行内设置宽高时

获取的是行内设置的宽高

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

element.style.xxx 这种只能取得内嵌样式的属性,获取样式能读能写

2、dom.currentStyle.width/height

取到的是最终渲染后的宽和高,如果有设置宽高,则不论哪种盒模型获取到的都是设置的宽高,只有IE兼容

.box {...同上}
----------------------------

let targetDom = document.querySelector(&#39;.box&#39;);
let width = targetDom.currentStyle.width;
let height = targetDom.currentStyle.height;

element.currentStyle[xxx] 可以取得内部和外部样式,但是只兼容ie浏览器,获取的样式只能读

3、document.getComputedStyle(dom,null).width/height

取到的是最终渲染后的宽和高,如果有设置宽高,则不论哪种盒模型获取到的都是设置的宽高,和currentStyle相同,但是兼容性更好,IE9 以上支持。

getComputedStyle()方法,

  • 第一个参数:取得计算样式的元素;
  • 第二个参数:一个伪元素字符串(例如“:after”),如果不需要伪元素信息,默认为null;

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

.box {...同上}
----------------------------

let targetDom = document.querySelector(&#39;.box&#39;);
let width =  window.getComputedStyle(targetDom).width
let height = window.getComputedStyle(targetDom).height

console.log("width",width)
console.log("height",height)

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

『小扩展』

如果box类不设置宽高,而是由内容自动撑开;

标准盒模型通过getComputedStyle获取到的宽高是content的值;

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

IE盒模型通过getComputedStyle获取到的宽高 = border + padding + content,不包括外边距;

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

4、dom.getBoundingClientRect().width/height

得到渲染后的宽和高,大多浏览器支持。IE9以上支持。

.box {...同上}
----------------------------
let targetDom = document.querySelector(&#39;.box&#39;);
let width = targetDom.getBoundingClientRect().width;
let height = targetDom.getBoundingClientRect().height
console.log(&#39;width&#39;,width)
console.log(&#39;height&#39;,height)

标准模型,宽高设置为100的结果,额外包括了padding和border的值;

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

IE模型,宽高设置为100的结果;

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

『小扩展』

如果box类不设置宽高,而是由内容自动撑开;

不论是哪种模型,获取到的都是(border + padding + content),不包括外边距;

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

getBoundingClientRect还可以取到相对于视窗的上下左右的距离(用于获取某个元素相对于视窗的位置集合)。

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

5、dom.offsetWidth/offsetHeight(常用)

包括高度(宽度)、内边距和边框,不包括外边距。最常用,兼容性最好。

.box {...同上}
----------------------------
let targetDom = document.querySelector(&#39;.box&#39;);
let width = targetDom.offsetWidth;
let height = targetDom.offsetHeight;
console.log(&#39;width&#39;,width)
console.log(&#39;height&#39;,height)

标准模型,宽高设置为100的结果;

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

IE模型,宽高设置为100的结果;

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

小扩展

如果box类不设置宽高,而是由内容自动撑开;

不论是哪种模型,获取到的都是(border + padding + content),不包括margin;

1CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

从上面可以看出,dom.getBoundingClientRect().width/height 和 dom.offsetWidth/offsetHeight 结果是一样的

5、根据盒模型解释边距重叠

问题简答

外边距重叠是指两个【垂直】 【相邻】的块级元素,当上下两个边距相遇时,其外边距会产生重叠现象,且重叠后的外边距,等于其中较大者。(水平方向不会发生)

『原因』

根据W3C文档的说明,当符合以下条件时,就会触发外边距重合

  • 都是普通流中的元素且属于同一个 BFC
  • 没有被 padding、border、clear 或非空内容隔开
  • 两个或两个以上垂直方向的「相邻元素」

相邻元素包括父子元素和兄弟元素

『重叠后的margin计算』

  • 1、margin都是正值时取较大的margin值

  • 2、margin都是负值时取绝对值较大的,然后负向位移。

  • 3、margin有正有负,从负值中选绝对值最大的,从正值中选取绝对值最大的,然后相加

边距重叠详解及解决方案

1、嵌套块(父子)元素垂直外边距的合并

对于两个嵌套关系的块元素,如果父元素没有padding-topborder,则父元素的margin-top会与子元素的margin-top发生合并,合并后的外边距为两者中的较大者,即使父元素的上外边距为0,也会发生合并。

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

『解决办法』

  • 1、为父元素定义1px的border-top或padding-top。
  • 2、为父元素添加overflow:hidden。
  • 3、子元素或父元素设置display:inline-block。
  • 4、父元素加前置内容(::before)生成。(推荐)

『示例』

在页面放两个正方形

<div class="parent-box">
    <div class="child-box"></div>
</div>

父元素margin-top设为0,子元素设置20px;

.parent-box{
    width: 100px;
    height: 100px;
    margin-top: 0;
    background: #99CCFF;
}
.child-box{
    width: 50px;
    height: 50px;
    margin-top: 20px;
    background: #FF9933;
}

预期效果:应该是父级元素没有边距,子元素顶部和父元素顶部之间的距离为20

实际效果:父子盒子重叠,父级与外面的间隔变成了20(会取较大的值,因为父级为0,所以取的是子级的margin)

2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

通过上面的解决办法处理之后

方法一、二、三

2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

方法四

.parent-box::before {
    content : "";
    display :table;
}

2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

达到的效果

2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

2、相邻块(兄弟)元素垂直外边距的合并(外边距塌陷)

当上下相邻的两个块元素相遇时,如果

  • 上面的元素有下外边距margin-bottom,
  • 下面的元素有上外边距margin-top,

则他们之间的垂直间距不是margin-bottom与margin-top之和,而是两者中的较大者

2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

『解决办法』

1)为了达到想要的间距,最好在设置margin-top/bottom值时统一设置上或下;

2)或者用以下的BFC解决,下面有详解

6、谈谈BFC

BFC的基本概念

BFC全称为块格式化上下文 (Block Formatting Context) ,是 Web 页面中盒模型布局的 CSS 渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。

BFC的通俗理解:首先BFC是一个名词,就是一个有特定规则的区域。我们可以理解为一个箱子(实际上是看不见摸不着的),箱子里面物品的摆放是不受外界的影响的。

W3C 仕様 ではこれについて詳しく説明しています:

  • 浮動要素と絶対配置要素、非ブロック レベルのボックス レベルのブロックコンテナ (inline-blockstable-cellstable-captions など)、および overflow 値が ## ではありません# Visiable のブロック レベル ボックスは、その内容に対して新しい BFC (ブロック レベル フォーマット コンテキスト) を作成します。

  • BFC では、ボックスは上から順番に垂直に配置されます。2 つのボックス間の垂直方向の間隔は、

    margin の値によって決まります。BFC では、 2 つの隣接するブロック レベル ボックスの垂直方向のマージンが崩れます。

  • BFC では、各ボックスの左外端がコンテナの左端に接触するか、右から左への形式の場合は右端に接触します。これは、ボックス内に新しい BFC が作成されない限り (フロートによってボックス自体が縮小します)、フロート内であっても当てはまります (ただし、ボックスの

    line ボックス はフロートによって縮小します)。狭くなります)

BFCのレイアウトルール(原理・レンダリングルール)

    BFC時の計算高さが使用されると、浮動要素も計算に参加します (浮動要素をクリアします)
  1. BFC 領域は浮動要素のボックスと重なりません。 (フローティングテキストの折り返しを防止)
  2. BFC はページ上の独立したコンテナであり、内部要素と外部要素は相互に影響しません。 (マージンが重なる問題の解決)
  3. ボックスの垂直方向の距離はマージンによって決まります。
  4. 同じ BFC に属する 2 つの隣接するボックスの余白は重なり合います。
次の使用シナリオでは、これらのルールを使用していくつかの実際的な問題に対処します。

#BFC の作成方法

括弧内には副作用がいくつかあります

    Floating element
  • : float:left | float:right; [親要素の幅が失われ、下の要素も上に移動します]
  • 配置要素
  • :position:absolute |position:fixed;
  • displayの一部の値
  • :display:inline-block [インラインブロックへの変換]幅が失われる] | ディスプレイ:フレックス | ディスプレイ:テーブル | テーブル -セル、テーブル キャプション、インライン テーブル、インライン フレックス、グリッド、インライン グリッド;
  • オーバーフロー値は表示されません
  • : overflow:hidden;[オーバーフローは要素から切り取られます] | overflow:auto, overflow:scroll;
  • display:flow-root
  • [新しい属性、新しい作成方法] BFC、副作用はありません。ブラウザの互換性に注意してください]
『注意』

表示: テーブルでも BFC を生成できる理由は、テーブルデフォルトで匿名テーブルセルが生成され、それを生成するのはこの匿名テーブルセルです。

#どの要素も BFC と見なすことはできません。この要素が上記の条件のいずれかを満たしている場合にのみ、この要素は BFC

BFC 使用シナリオ

1. フローティング要素のクリア

フローティング要素は通常のドキュメントから分離されます。以下に示すフローでは、親コンテナーのマージンの高さは 2 ピクセルのみになります。

親の BFC を作成した後、2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?overflow: hidden

を使用します

2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?以上のメソッドは明確なフローティングを実現できますが、それでも擬似クラスを使用することをお勧めします。

なぜフロートをクリアする必要があるのですか?
フロートの崩壊。包含ブロックに高さが設定されていない場合、または適応型である場合、包含ブロックを支えられません。上がると潰れてしまいます。

2. フローティング テキストの折り返しを防止する

には次のテキスト折り返し効果があります:

brother-box の一部がフローティング要素で覆われています (テキスト情報はフローティング要素で覆われません)。要素が隠れるのを避けたい場合は、## を追加するなどの BFC 作成方法を使用できます。 #overflow to Brother-box: hidden2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?、次の効果が得られます

『理由』2CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか? 上記のルール 2: BFC 領域は、フローティング要素のボックスと重ならないようにします。

このメソッドは、2 列のアダプティブ レイアウトを実装するために使用できます。左側の幅は固定され、右側のコンテンツはアダプティブ幅になります。

3. BFC を使用してマージンの重複の問題を解決する

前のマージン オーバーラップ条件によると、マージン オーバーラップを解決したい場合は、BFC の作成など、トリガー条件の 1 つを破棄するだけで済みます。

BFC の定義によれば、垂直マージンのオーバーラップは、隣接する要素とネストされた要素を含め、2 つの要素が同じ BFC 内にある場合にのみ可能です。

================================

マージンの重複問題を解決するには、同じ BFC 内にないことを確認してください。

  • 隣接する要素の場合は、余白が重ならないように BFC シェル を追加します。
  • ネストされた要素の場合は、親要素 # をそのままにしておきます。 ## 親のマージンと現在の要素のマージンが重ならないように、BFC をトリガーします (たとえば、overflow: hidden を親に追加します)。
================================

もしあれば新しい BFC はありません 新しい BFC を作成した後、マージンが重なっている場合、margin-bottom margin-top は 20

CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

に等しくなります。

上記の例では、2 つの正方形の余白が重ならないように、コンテナーをいずれかの div でラップして BFC をトリガーします。

3CSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?

注:

マージン折り畳みの問題は BFC で解決できますが、BFC のトリガーはマージン折り畳みの問題を解決するための十分な条件ではなく、合理的に使用する必要があります。

元のアドレス: https://juejin.cn/post/6988877671606272031著者: Axjy

プログラミング関連の知識の詳細については、次のサイトを参照してください:

プログラミング入門

! !

以上がCSS ボックス モデルに関する面接の質問を 6 つシェアします。何問正しく答えることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は掘金--Axjyで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
「ポッドキャストにサブスクライブ」リンクはどこにすべきですか?「ポッドキャストにサブスクライブ」リンクはどこにすべきですか?Apr 16, 2025 pm 12:04 PM

しばらくの間、iTunesはポッドキャストの大きな犬だったので、「ポッドキャストにサブスクライブ」をリンクした場合:

ブラウザエンジンの多様性ブラウザエンジンの多様性Apr 16, 2025 pm 12:02 PM

彼らが2013年にChromeに行ったとき、私たちはオペラを失いました。今年初めにChromeになったとき、Edgeと同じ取引。マイク・テイラーはこれらの変更を「減少させて」と呼びました

Web共有に関するUXの考慮事項Web共有に関するUXの考慮事項Apr 16, 2025 am 11:59 AM

Trashy ClickBaitサイトから出版物の最大の8月まで、共有ボタンは長い間ウェブ全体でユビキタスでした。それでも、これらは議論の余地があります

毎週のプラットフォームニュース:AppleはWebコンポーネント、プログレッシブHTMLレンダリング、自己ホストの重要なリソースを展開しています毎週のプラットフォームニュース:AppleはWebコンポーネント、プログレッシブHTMLレンダリング、自己ホストの重要なリソースを展開していますApr 16, 2025 am 11:55 AM

今週のラウンドアップでは、AppleはWebコンポーネント、InstagramがどのようにInsta-Loadingスクリプトであるか、自己ホストの重要なリソースのための考えのための食べ物に入ります。

git pathspecsとそれらの使用方法git pathspecsとそれらの使用方法Apr 16, 2025 am 11:53 AM

gitコマンドのドキュメントを調べていたとき、それらの多くが選択肢があることに気付きました。私は当初、これはただのものだと思っていました

製品画像のカラーピッカー製品画像のカラーピッカーApr 16, 2025 am 11:49 AM

難しい問題のように聞こえます。私たちはしばしば、何千もの色で製品ショットを持っていないので、withをひっくり返すことができます。私たちもそうしません

ReactとThemeproviderを使用した暗いモードの切り替えReactとThemeproviderを使用した暗いモードの切り替えApr 16, 2025 am 11:46 AM

ウェブサイトにダークモードオプションがあるときが好きです。ダークモードにより、ウェブページが読みやすくなり、目がリラックスしているように感じます。を含む多くのウェブサイト

HTMLダイアログ要素を使用したいくつかの実践HTMLダイアログ要素を使用したいくつかの実践Apr 16, 2025 am 11:33 AM

これは私が初めてHTML要素を見ていることです。私はしばらくの間それを知っていましたが、まだスピンしていませんでした。かなりクールです

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ヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

DVWA

DVWA

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

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。