欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

CSS中margin的使用方式

這篇文章主要介紹了CSS中margin的使用技巧,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

10年積累的成都網(wǎng)站制作、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有下城免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

當(dāng)我們學(xué)習(xí)CSS時,我們大多數(shù)人學(xué)到的第一件事是CSS中盒子的各個部分的細節(jié),這部分通過叫做 CSS盒、模型。“盒模型”中的元素之一是margin,即盒子周圍的透明區(qū)域,它會將其他元素從盒子內(nèi)容中推開。

CSS1中描述了 margin-top、margin-rightmargin-bottommargin-left屬性,以及一次設(shè)置所有四個屬性的簡寫 margin

margin看起來是一個相當(dāng)簡單的事情,但是,在本文中,咱們將看一些在使用margin一些讓人迷惑有有趣的事情。 特別是,margin之間如何相互作用,以及 margin 重疊效果。

CSS 盒模型

CSS 盒模型指的是一個盒子的各個部分——contentpadding、bordermargin,它們各自之前是如何布局及相互作用的, 如下所示:

CSS中margin的使用方式

盒子的的四個margin屬性和maring縮寫都在CSS1中定義。

CSS2.1規(guī)范有一個演示盒模型的插圖,還定義了用來描述各種盒子的術(shù)語,其中包括 content box、填padding box、border boxmargin box

CSS中margin的使用方式

現(xiàn)在有一個 Level 3 Box Model specification 的草案。這個規(guī)范引用了CSS2作為盒模型和margin的定義,因此我們將在本文的大部分內(nèi)容中使用CSS2定義。

margin 重疊

CSS1 規(guī)范定義了margin,也定義了垂直 margin 重疊。如果考慮到在早期,CSS被用作文檔格式語言,那么 margin 重疊是有意義的。 margin 重疊意味著,當(dāng)一個有底部margin的標題后面跟著一個有頂部 margin 的段落時,它們之間就不會出現(xiàn)較大的空白。

當(dāng)兩個 margin 發(fā)生重疊時,它們將組合在一起,兩個元素之間的空間取較大的一個。 較小的 margin 在較大的里面。

在以下情況下,margin 會重疊:

  • 相鄰的兄弟姐妹

  • 完全空盒子

  • 父元素和第一個或最后一個子元素

依次來看看這些場景。

相鄰的兄弟姐妹

margin 重疊的最初描述是演示相鄰兄弟姐妹之間的 margin 是如何重疊的。除了下面提到的情況之外,如果有兩個元素在正常流中依次顯示,那么第一個元素的底部 margin 將與下面元素的頂部 margin 一起重疊。

在下面示例中,有三個div元素。第一個 div 的頂部和底部的margin都是50px。第二個 div 的頂部和底部 margin 都是20px。第三個 div 的頂部和底部 margin 都是3em。前兩個元素之間的 margin50px,因為較小的頂部 margin 與較大的底部 margin 相結(jié)合。第二個元素與第三個元素之間的 margin 是 3em,因為3em大于第二個元素底部margin 20px。

html

<div class="wrapper">

<div class="box example1">
  margin-top: 50px; margin-bottom: 50px;
</div>

<div class="box example2">
  margin-top: 20px; margin-bottom: 20px;
</div>

<div class="box example3">
  margin-top: 3em; margin-bottom: 3em;
</div>
  
</div>

css

.wrapper {
  border: 5px dotted black;
}

.example1 {
  margin: 50px 0 50px 0;
}

.example2 {
  margin: 20px 0 20px 0;
}

.example3 {
  margin: 3em 0 3em 0;
}

body {
  font: 1.4em/1.3 "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
  margin: 2em 3em;
}

.box {
  background-color: rgb(55,55,110);
  color: white;
  padding: 20px;
  border-radius: .5em;
}

運行效果:

CSS中margin的使用方式

完全空盒子

如果一個盒子是空的,那么它的頂部和底部 margin 可能會相互重疊。在下面的示例中,classempty的元素的頂部和底部 margin 各為50px,但是,第一項和第三項之間的 margin不是100px,而是50px。這是由于兩個 margin 重疊造成的。如果向空盒子中放入內(nèi)容就會阻止 margin 合并。

html

<div class="wrapper">

<div class="box">
  A box
</div>

<div class="box empty"></div>

<div class="box">
  Another box
</div>
  
</div>

css

.wrapper {
  border: 5px dotted black;
}

body {
  font: 1.4em/1.3 "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
  margin: 2em 3em;
}

.box {
  background-color: rgb(55,55,110);
  color: white;
  border-radius: .5em;
}

.empty {
  margin: 50px 0 50px 0;
}

運行效果:

CSS中margin的使用方式

父元素和第一個或最后一個子元素

margin 重疊讓人猝不及防,因為它有時候不是很直觀。在下面的示例中,有一個類名為 wrapperdiv,給這個div一個紅色的outline,這樣就可以看到它在哪里了。

這個div里面的三個子元素的 margin 都是50px。但是你會發(fā)現(xiàn)實際的效果是第一項和最后一項與父元素的的margin齊平,好像子元素和父元素之間沒有50pxmargin一樣。

html

<div class="wrapper">

<div class="box">
  Item 1
</div>

<div class="box">
  Item 2
</div>

<div class="box">
  Item 3
</div>
  
</div>

css

.wrapper {
  outline: 1px solid red;
}

.box {
  margin: 50px;
}

body {
  font: 1.4em/1.3 "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
  margin: 2em 3em;
}

.box {
  background-color: rgb(55,55,110);
  color: white;
  padding: 20px;
  border-radius: .5em;
}

運行效果:

CSS中margin的使用方式

這是因為子節(jié)點上的margin會隨著父節(jié)點上的任何一邊的margin相互重疊,從而最終位于父節(jié)點的外部。如果使用DevTools檢查第一個子元素,就可以看到這一點,顯示的黃色區(qū)域就是是 margin。

CSS中margin的使用方式

僅塊元素 margin 重疊

在CSS2中,只指定垂直方向的 margin 重疊,即元素的頂部和底部 margin。因此,上面的左右邊距不會重疊。

值得注意的,margin 只在塊的方向上重疊,比如段落之間。

阻止 margin 重疊

如果一個元素是絕對的定位,或者是浮動的,那么它的margin永遠不會重疊。然而,假設(shè)你遇到了上面示例中的幾種情況,那么如何才能阻止 margin 重疊呢?

例如,一個完全空的盒子,如果它有borderpadding,它的上下 margin就不會重疊。在下面的例子中,給這個空盒子添加了1px的padding。現(xiàn)在這個空盒子的的上方和下方都有一個50pxmargin。

html

<div class="wrapper">

<div class="box">
  A box
</div>

<div class="box empty"></div>

<div class="box">
  Another box
</div>
  
</div>

css

.wrapper {
  border: 5px dotted black;
}

body {
  font: 1.4em/1.3 "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
  margin: 2em 3em;
}

.box {
  background-color: rgb(55,55,110);
  color: white;
  border-radius: .5em;
}

.empty {
  margin: 50px 0 50px 0;
  padding: 1px;
}

運行效果:

CSS中margin的使用方式

這背后是有邏輯,如果盒子是完全空的,沒有borderpadding,它基本上是不可見的。 它可能是CMS中標記為空的段落元素。 如果你的CMS添加了多余的段落元素,你可能不希望它們在其他段落之間造成較大的空白,這時 margin 重疊就有一定的意義。

對于父元素和第一個或最后一個子元素 margin 重疊,如果我們向父級添加border,則子級上的margin會保留在內(nèi)部。

...
.wrapper {
  border: 5px dotted black;
}
...

CSS中margin的使用方式

同樣,這種行為也有一定的邏輯。如果出于語義目的而對元素進行包裝,但這些元素不顯示在屏幕上,那么你可能不希望它們在顯示中引入大的 margin。當(dāng)web主要是文本時,這很有意義。當(dāng)我們使用元素來布局設(shè)計時,它的重疊行為就沒有多大的意義了。

創(chuàng)建格式化上下文(BFC)

BFC(Block Formatting Context)格式化上下文,是Web頁面中盒模型布局的CSS渲染模式,指一個獨立的渲染區(qū)域或者說是一個隔離的獨立容器。

BFC 可以阻止邊距的重疊。 如果我們再看父元素和第一個或最后一個子元素的示例,可以在 wrapper 元素加上 display: flow-root就會創(chuàng)建一個新的BFC,從而阻止 margin 合并

...
.wrapper {
  outline: 1px solid red;
  display: flow-root;
}
...

CSS中margin的使用方式

display: flow-root 是CSS3新出來的一個屬性,用來創(chuàng)建一個無副作用的 BFC。將overflow屬性的值設(shè)為auto也會產(chǎn)生同樣的效果,因為這也創(chuàng)建了一個新的BFC,盡管它也可能創(chuàng)建一些在某些場景中不需要的滾動條。

flex 和 grid 容器

flexgrid 容器為其子元素建立flexgrid格式化上下文,因此它們也能阻止 margin 的重疊。

還是以上面的例子為例,將 wrapper 改用 flex 布局:

...
.wrapper {
  outline: 1px solid red;
  display: flex;
  flex-direction: column;
}
...

CSS中margin的使用方式

網(wǎng)站 margin 策略

由于margin 會重疊,最好能找到一種一致的方法來處理網(wǎng)站的 margin。最簡單的方法是只在元素的頂部或底部定義 margin。這樣,就很少會遇到 margin 重疊的問題,因為有margin的邊總是與沒有margin的邊相鄰。

這個解決方案并不能解決你可能遇到的問題,因為子元素的margin會與父元素相互重疊。這個特定的問題往往不那么常見,但知道它為什么會發(fā)生可以幫助你想出一個解決方案。

對此,一個理想的解決方案是給元素設(shè)置 display: flow-root,但有的瀏覽器并不支持,可以使用overflow創(chuàng)建BFC、或?qū)⒏冈卦O(shè)置成flex容器,當(dāng)然還可以設(shè)置padding來解決。

百分比 margin

當(dāng)你在CSS中使用百分比的時候,它必須是某個元素的百分比。使用百分比設(shè)置的 margin(或 padding)始終是父元素內(nèi)聯(lián)大小(水平寫入模式下的寬度)的百分比。這意味著在使用百分比時,元素周圍的padding大小都是相同的。

在下面的示例中,有一個200px 寬的 d當(dāng),里面是一個類名為 boxdiv,它的 margin值為10%,也就是 20px (200*10%)。

html

 <div class="wrapper">
  <div class="box">
    I have a margin of 10%.
  </div>
</div>

css

 * {
  box-sizing: border-box;
}

.wrapper {
  border: 5px dotted black;
  width: 200px;
}

.box {
  background-color: rgb(55,55,110);
  color: white;
  padding: 20px;
  border-radius: .5em;
  margin: 10%;
}

body {
  font: 1.4em/1.3 "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
  margin: 2em 3em;
}

CSS中margin的使用方式

我們在本文中一直在討論垂直 margin ,然而,現(xiàn)代CSS傾向于以相對于流的方式而不是物理方式來考慮事情。因此,當(dāng)我們討論垂直邊距時,我們實際上是在討論塊維度的邊距。如果我們在水平寫作模式下,這些 margin 將是頂部和底部,但在垂直寫作模式下,這些 margin 將是右側(cè)和左側(cè)。

一旦使用邏輯的、流相關(guān)的方向,就更容易討論塊的開始和結(jié)束,而不是塊的頂部和底部。為了簡化這一過程,CSS引入了邏輯屬性和值規(guī)范。這將流的相關(guān)屬性映射到物理屬性上。

  • margin-top = margin-block-start

  • margin-right = margin-inline-end

  • margin-bottom = margin-block-end

  • margin-left = margin-inline-start

還有兩個新的快捷鍵,可以同時設(shè)置兩個塊或者兩個內(nèi)嵌塊。

  • margin-block

  • margin-inline

在下面示例中,使用了這些流相關(guān)關(guān)鍵字,然后更改了盒子的編寫模式,你可以看到 margin 是如何遵循文本方向的:

html

<div class="wrapper horizontal-tb">
  <div class="box">
    A box with a horizontal-tb writing mode.
  </div>
</div>

<div class="wrapper vertical-rl">
  <div class="box">
    A box with a vertical-rl writing mode.
  </div>
</div>

css

* {
  box-sizing: border-box;
}

.wrapper {
  border: 5px dotted black;
  inline-size: 200px;
}

.horizontal-tb {
  writing-mode: horizontal-tb;
  margin-bottom: 1em;
}

.vertical-rl {
  writing-mode: vertical-rl;
}

.box {
  background-color: rgb(55,55,110);
  color: white;
  padding: 20px;
  border-radius: .5em;
  margin-block-start: 30px;
  margin-block-end: 10px;
  margin-inline-start: 2em;
  margin-inline-end: 5%;
}

body {
  font: 1.4em/1.3 "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
  margin: 2em 3em;
}

CSS中margin的使用方式

感謝你能夠認真閱讀完這篇文章,希望小編分享的“CSS中margin的使用技巧”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

標題名稱:CSS中margin的使用方式
文章來源:http://chinadenli.net/article2/jsijic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)頁設(shè)計公司標簽優(yōu)化、虛擬主機網(wǎng)站營銷、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
国内精品一区二区欧美| 精品视频一区二区三区不卡| 久久成人国产欧美精品一区二区| 免费人妻精品一区二区三区久久久 | 日韩女优视频国产一区| 国产免费黄片一区二区| 亚洲精品一区二区三区日韩| 亚洲欧洲一区二区综合精品| 伊人网免费在线观看高清版| 少妇视频一区二区三区| 日韩欧美一区二区亚洲| 91爽人人爽人人插人人爽| 成年人免费看国产视频| 国产又粗又猛又爽又黄的文字| 精品人妻久久一品二品三品| 在线九月婷婷丁香伊人| 欧美不雅视频午夜福利| 太香蕉久久国产精品视频| 不卡免费成人日韩精品| 伊人久久青草地婷婷综合| 丰满人妻一二区二区三区av| 国产盗摄精品一区二区视频| 国产在线一区中文字幕| 亚洲国产av在线视频| 特黄大片性高水多欧美一级| 精品少妇一区二区三区四区| 国产精品二区三区免费播放心 | 亚洲黄香蕉视频免费看| 小草少妇视频免费看视频| 免费在线播放不卡视频| av在线免费观看一区二区三区| 91人妻丝袜一区二区三区| 无套内射美女视频免费在线观看| 尹人大香蕉一级片免费看| 久久91精品国产亚洲| 不卡免费成人日韩精品| 欧美高潮喷吹一区二区| 国产极品粉嫩尤物一区二区| 亚洲精品一区二区三区日韩| 人妻精品一区二区三区视频免精| 男女午夜福利院在线观看|