国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎

這篇具有很好參考價值的文章主要介紹了CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎,WEB前端最新面試題 - 又全又卷,css,前端,css3,javascript,面試,html5

難度級別:初級及以上 ????????????????????????????????提問概率:60%?


例如在一個div盒子元素內(nèi),需要設置一個標題,我們用一個p標簽做為這個標題元素。根據(jù)UI設計要求,標題元素需要距離父div元素20px,理所當然想到的就是為標題元素設置margin-top為20px,希望可以撐開距離頂部的距離。但根據(jù)經(jīng)驗可知,這樣做是存在問題的,父div元素會緊跟著p元素向下20px,并沒有達到撐開20px的效果。先來看一下最初的代碼和下圖的效果

HTML代碼:
<div class="box">
    <div class="inner">
       <p class="title">標題內(nèi)容</p>
    </div>
</div>

CSS代碼:
<style>
* {
margin: 0;
padding: 0;
}
.box {
margin: 100px;
width: 360px;
height: 260px;
border: 1px solid blue;
}
.inner {
margin-left: 30px;
width: 300px;
height: 200px;
}
.title {
margin-top: 20px;
width: 100%;
text-align: center;
background: yellow;
}
</style>

?

CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎,WEB前端最新面試題 - 又全又卷,css,前端,css3,javascript,面試,html5

目錄

產(chǎn)生問題的原因?

1 添加一個元素

2 創(chuàng)建塊級格式上下文

3 為父元素設置邊框

4 為父div元素設置padding-top樣式

5 為子標題元素添加padding-top樣式

6 對標題元素使用absolute定位的方式

7 使標題元素變?yōu)樾袃?nèi)塊元素


?

產(chǎn)生問題的原因?

通過上圖發(fā)現(xiàn),原本很正常的代碼,希望class為title的p標簽和class為inner的div標簽之間產(chǎn)生20px的間距,但卻不經(jīng)意間使class為inner的div標簽與class為box的div標簽之間產(chǎn)生了20px的間距,這并不是我們預期的效果。

這種效果也就是所謂的邊距折疊,結合本場景的案例,意思就是相鄰的class為inner和title兩個元素,margin-top進行了折疊,瀏覽器會解析兩個元素margin-top的最大值,并使用這個最大值。但需要注意的是,只有上下邊距會產(chǎn)生折疊,左右邊距不會產(chǎn)生折疊。

既然知道產(chǎn)生問題的原因,我們接下來嘗試一些解決方案,使標題元素頂部,可以正常與父div元素產(chǎn)生20px的間距。

?

1 添加一個元素

產(chǎn)生問題的原因中有一個重要點,在于相鄰的兩個元素產(chǎn)生了邊距折疊,那么使標題元素與父div元素不相鄰,便可得到解決。我們在標題元素的上面添加一個div兄弟元素,設置其高度為20px。

HTML代碼:
<div class="box">
<div class="inner">
<div class="blank-element"></div>
<p class="title">標題內(nèi)容</p>
</div>
</div>
CSS代碼:
<style>
.blank-element {
height: 20px;
}
</style>

?

CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎,WEB前端最新面試題 - 又全又卷,css,前端,css3,javascript,面試,html5

通過上圖可知,添加一個空白元素的方式,使得標題元素和父div元素產(chǎn)生了20px的間距。這樣做雖然解決了問題,但多添加一個DOM元素的選擇并不是明智的。?

?

2 創(chuàng)建塊級格式上下文

我們知道創(chuàng)建塊級上下文可以清除浮動,而這種辦法也可以解決父子元素邊距重疊的問題

HTML代碼:
<div class="box">
<div class="inner">
<p class="title">標題內(nèi)容</p>
</div>
</div>
CSS代碼:
<style>
* {
   margin: 0;
   padding: 0;
}
.box {
margin: 100px;
width: 360px;
height: 260px;
border: 1px solid blue;
}
.inner {
overflow: hidden;
margin-left: 30px;
width: 300px;
height: 200px;
}
.title {
margin-top: 20px;
width: 100%;
text-align: center;
background: yellow;
}
</style>

?

CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎,WEB前端最新面試題 - 又全又卷,css,前端,css3,javascript,面試,html5

通過為 .inner 類添加overflow:hidden 的方式,使父div元素和子標題元素規(guī)定于塊級上下文中。這樣做不用添加多余的DOM元素,是個不錯的選擇。?

3 為父元素設置邊框

通過為父元素設置邊框的方法也可以解決邊距重疊的問題

CSS代碼:
<style>
* {
margin: 0;
padding: 0;
}
.box {
margin: 100px;
width: 360px;
height: 260px;
border: 1px solid blue;
}
.inner {
margin-left: 30px;
border-top: 1px solid #000;
width: 300px;
height: 200px;
}
.title {
margin-top: 20px;
width: 100%;
text-align: center;
background: yellow;
}
</style>

?

CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎,WEB前端最新面試題 - 又全又卷,css,前端,css3,javascript,面試,html5

雖然為 .inner 類設置上邊框解決了問題,但很顯然如上圖中,使父div又增加了一個帶有色值的邊框,即便是設置上邊框的色值為transparent的透明色,也會使父div的高度加一,這無疑是破壞了原有的代碼環(huán)境。?

?

4 為父div元素設置padding-top樣式

可以避開為子標題元素設置margin-top這一環(huán)節(jié),換個思路,將子標題元素的margin-top樣式屬性去掉,為父div元素設置padding-top屬性,也可以解決父子元素邊距重疊的問題。

CSS代碼:
<style>
* {
margin: 0;
padding: 0;
}
.box {
margin: 100px;
width: 360px;
height: 260px;
border: 1px solid blue;
}
.inner {
margin-left: 30px;
width: 300px;
height: 200px;
padding-top: 20px;
}
.title {
width: 100%;
text-align: center;
background: yellow;
}
</style>

CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎,WEB前端最新面試題 - 又全又卷,css,前端,css3,javascript,面試,html5

為父div元素設置padding-top屬性的方法雖然也解決了邊距重疊的問題,但通過上圖發(fā)現(xiàn),父div元素的高度變?yōu)榱?20px,這種辦法很顯然和添加邊框的方法類型,都會改變原有代碼環(huán)境,也不推薦使用。?

5 為子標題元素添加padding-top樣式

可以再換一種思路,父div元素不做處理,去掉子標題元素的margin-top樣式,為其設置padding-top樣式,這樣標題元素就會增高,增加空白間距。

CSS代碼:
<style>
* {
margin: 0;
padding: 0;
}
.box {
margin: 100px;
width: 360px;
height: 260px;
border: 1px solid blue;
}
.inner {
margin-left: 30px;
width: 300px;
height: 200px;
}
.title {
width: 100%;
padding-top: 20px;
text-align: center;
background: yellow;
}
</style>

?

CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎,WEB前端最新面試題 - 又全又卷,css,前端,css3,javascript,面試,html5

如上圖,這種方法并沒有改變父div元素在上下文的代碼環(huán)境,但標題元素的空白高度增加了,本例中我們?yōu)樽訕祟}元素的背景色設置為yellow,使得這種方法并不合適。但如果標題元素與父div元素的背景色值相同,這種方法也是可行的。?

6 對標題元素使用absolute定位的方式

既然我們一直在想辦法對子標題元素,那么也絕對不會少了position定位的一席之地??梢酝ㄟ^為父div元素設置相對定位,子標題元素再進行absolute絕對定位的方式進行解決。

CSS代碼:
<style>
* {
   margin: 0;
padding: 0;
}
    .box {
margin: 100px;
width: 360px;
height: 260px;
border: 1px solid blue;
}
.inner {
position: relative;
margin-left: 30px;
width: 300px;
height: 200px;
}
.title {
position: absolute;
margin-top: 20px;
width: 100%;
text-align: center;
background: yellow;
}
</style>

?這種方法也解決了父子元素邊距重疊的問題,但需要注意的是,子標題元素設置了absolute絕對定位,這就使得當前的DOM文檔流與之前產(chǎn)生了差異,當父div元素內(nèi)部再添加其他元素的時候,就需要更多的考慮元素定位問題,雖然解決了當前的問題,但很顯然還會產(chǎn)生更多的問題。

?

7 使標題元素變?yōu)樾袃?nèi)塊元素

既然我們所說的邊距重疊,說的是塊級元素上下文的邊距重疊,那么將子標題元素原本的塊元素,改變?yōu)閕nline-block行內(nèi)塊元素,同樣也是可以解決的。

CSS代碼:
<style>
* {
margin: 0;
padding: 0;
}
.box {
margin: 100px;
width: 360px;
height: 260px;
border: 1px solid blue;
}
.inner {
margin-left: 30px;
width: 300px;
height: 200px;
}
.title {
display: inline-block;
margin-top: 20px;
width: 100%;
text-align: center;
background: yellow;
}
</style>

這種將塊元素更改為行內(nèi)塊元素的方法雖然解決了問題,但他具有行內(nèi)元素的特性,也就是說在標題元素后面再添加行內(nèi)元素,便會出現(xiàn)橫向排列的情況,所以這種解決方案也是有缺陷的。

綜合以上7種解決方案發(fā)現(xiàn),為父元素創(chuàng)建塊級格式上下文的方式,不會多添加DOM元素,不會改變原有代碼環(huán)境,不需要做多余的定位處理,也不需要改變元素原有的屬性,而且代碼量小,在本案例中是最合適的。


刷題思考

??? 很多初學者其實并不能很好的回答這道題,原因就在于子元素設置margin-top,由于影響因素較多,并不會百分百出現(xiàn)影響父元素的情況。所以想要回答好這類題目,除了日常工作中細心總結外,能夠利用業(yè)務時間多學習并把所學知識實踐到項目中是很重要的。


類似考點

??? 這類題目屬于不經(jīng)意類型的考點,意思就是日常工作中并不會百分百的出現(xiàn),而想要完美的回答面試題,就需要說出其原理與多個解決方案。面試官還可能會問,例如你遇到過z-index失效的情況嗎?例如你是否用CSS選擇器查找過父元素?你知道兩個相鄰的行內(nèi)元素之間為什么會有空隙嗎等。文章來源地址http://www.zghlxwxcb.cn/news/detail-844611.html

到了這里,關于CSS - 你遇到過子元素設置margin-top,影響父元素的情況嗎的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • CSS中的margin與padding

    CSS中的margin與padding

    目錄 ?一、margin 1.概念及作用 2.基本語法 3.margin的用法 二、padding 1.介紹 2.基本語法及要求 3. 用法 4.內(nèi)邊距和元素寬度 講這些之前,先看一張圖,便于理解 ?一、margin 1.概念及作用 CSS ? margin ? 屬性用于在任何定義的邊框之外,為元素周圍創(chuàng)建空間。 通過 CSS,您可以完全控

    2024年02月11日
    瀏覽(24)
  • css的gap設置元素之間的間隔

    css的gap設置元素之間的間隔

    在felx布局中可以使用gap來設置元素之間的間隔; ?效果:

    2024年02月07日
    瀏覽(19)
  • CSS進階方法——復合選擇器、元素顯示、背景設置

    CSS進階方法——復合選擇器、元素顯示、背景設置

    復合選擇器是建立在基礎選擇器之上,對基礎選擇器進行 組合形成 的。 復合選擇器可以更準確、更高效的選擇目標元素(標簽) 復合選擇器是由兩個或多個基礎選擇器,通過不同的方式組合而成的 常用的復合選擇器包括: 后代選擇器 、 子選擇器 、 并集選擇器 、 偽類選

    2024年02月02日
    瀏覽(19)
  • CSS:給子元素設置了浮動,頁面縮放的時候,子元素往下掉

    CSS:給子元素設置了浮動,頁面縮放的時候,子元素往下掉

    給子元素設置了浮動,頁面縮放的時候,子元素往下掉 html代碼: css代碼 結果: 但頁面縮放的時候,第二個子元素會往下掉 給子元素最外層的大盒子設置寬高即可解決,比如給父盒子設置寬度,其2寬度至少是2個子盒子的寬度之和 頁面縮放后,藍色的子盒子不會掉下去:

    2024年02月17日
    瀏覽(29)
  • 【CSS】鼠標移動到元素上方顯示 / 移出盒子范圍隱藏案例 ( 子絕父相 | 顯示隱藏元素對象 | 鼠標經(jīng)過樣式設置 | 半透明遮罩設置 )

    【CSS】鼠標移動到元素上方顯示 / 移出盒子范圍隱藏案例 ( 子絕父相 | 顯示隱藏元素對象 | 鼠標經(jīng)過樣式設置 | 半透明遮罩設置 )

    這里要 在一個 div 盒子上方套一層遮罩 , 遮罩就需要 使用絕對定位將其覆蓋到其它元素中 ; 子元素使用了 絕對定位 , 父元素必須使用 相對定位 ; 使用 樣式 隱藏元素 , 使用 樣式 顯示元素 ; 鼠標經(jīng)過 鏈接 時 , 顯示 鏈接 中的 one 元素 , 需要使用如下選擇器 進行設置 ; 使用

    2024年02月10日
    瀏覽(33)
  • uniapp css使用margin的時候?qū)е鲁霈F(xiàn)垂直滾動條問題

    最開始不知道是怎么回事,頁面明明還沒有到達底部,怎么就出現(xiàn)垂直滾動條了。這里的原因就是最外層或者比較外層的view使用了margin就會出現(xiàn)這樣的情況。換成padding不會。這是最簡單的原因,你可以試一下下面的結構,必然觸發(fā),觸發(fā)條件非常的簡單。 大致結構如下:

    2024年02月11日
    瀏覽(18)
  • HTML+CSS滾動條樣式如何單獨給firefox設置 scrollbar-width: none;,而不影響其他瀏覽器

    要在Firefox中單獨設置滾動條樣式,你可以使用? ?@-moz-document? ?規(guī)則。這個規(guī)則允許你為特定的瀏覽器或瀏覽器引擎應用樣式。 下面是一個例子,演示如何在Firefox中隱藏滾動條: 在上面的例子中,? ?@-moz-document url-prefix()? ?表示只有在URL以空字符串(即所有URL)為前

    2024年02月22日
    瀏覽(21)
  • CSS查缺補漏之《如何優(yōu)雅解決margin垂直方向塌陷與合并問題?》

    CSS查缺補漏之《如何優(yōu)雅解決margin垂直方向塌陷與合并問題?》

    一:父子元素之間margin垂直方向塌陷問題 在處理margin垂直方向問題時,經(jīng)常會遇到在給子元素設置margin時,導致效果出現(xiàn)在了父元素上;如下代碼所示: 代碼原義是想實現(xiàn)三方面: ① 將box1的margin-top調(diào)為50px,使其與父元素之間形成空隙; ② 將box2的margin-top調(diào)為20px,使其與

    2024年02月10日
    瀏覽(57)
  • 在CSS中,盒模型中的padding、border、margin是什么意思?

    在CSS中,盒模型中的padding、border、margin是什么意思?

    在CSS中,盒模型(Box Model)是用來描述和布局HTML元素的基本概念。它將每個HTML元素看作是一個矩形的盒子,這個盒子包括了內(nèi)容(content)、內(nèi)邊距(padding)、邊框(border)和外邊距(margin)這幾個重要的部分。這些部分一起決定了元素在頁面中的大小和定位。 下面是這些

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包