Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 成人av在线播放,韩国美女丝袜一区二区,性刺激欧美三级在线观看

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          CSS margin 屬性

          CSS margin 屬性

          設(shè)置一個(gè)p元素的所有四個(gè)邊距:

          p

          {

          margin:2cm 4cm 3cm 4cm;

          }


          屬性定義及使用說明

          margin簡寫屬性在一個(gè)聲明中設(shè)置所有外邊距屬性。該屬性可以有1到4個(gè)值。

          實(shí)例:

          • margin:10px 5px 15px 20px;

          • 上邊距是 10px

          • 右邊距是 5px

          • 下邊距是 15px

          • 左邊距是 20px

          • margin:10px 5px 15px;

          • 上邊距是 10px

          • 右邊距和左邊距是 5px

          • 下邊距是 15px

          • margin:10px 5px;

          • 上邊距和下邊距是 10px

          • 右邊距和左邊距是 5px

          • margin:10px;

          • 所有四個(gè)邊距都是 10px

          注意: 負(fù)值是允許的。

          默認(rèn)值:0
          繼承:no
          版本:CSS1
          JavaScript 語法:object.style.margin="10px 5px"

          瀏覽器支持

          表格中的數(shù)字表示支持該屬性的第一個(gè)瀏覽器版本號。

          屬性
          margin1.06.01.01.03.5

          屬性值

          描述
          auto瀏覽器計(jì)算外邊距。
          length規(guī)定以具體單位計(jì)的外邊距值,比如像素、厘米等。默認(rèn)值是 0px。
          %規(guī)定基于父元素的寬度的百分比的外邊距。
          inherit規(guī)定應(yīng)該從父元素繼承外邊距。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          文:https://www.smashingmagazine.com/2019/07/margins-in-css/

          譯者:前端小智

          為了保證的可讀性,本文采用意譯而非直譯。

          為了回饋?zhàn)x者,《大遷世界》不定期舉行(每個(gè)月一到三次),現(xiàn)金抽獎活動,保底200,外加用戶贊賞,希望你能成為大遷世界的小錦鯉,快來試試吧

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

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

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

          想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你!

          CSS 盒模型

          CSS 盒模型指的是一個(gè)盒子的各個(gè)部分——content、padding、border和margin,它們各自之前是如何布局及相互作用的, 如下所示:

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

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

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

          margin 重疊

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

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

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

          • 相鄰的兄弟姐妹
          • 完全空盒子
          • 父元素和第一個(gè)或最后一個(gè)子元素

          依次來看看這些場景。

          相鄰的兄弟姐妹

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

          在下面示例中,有三個(gè)div元素。第一個(gè) div 的頂部和底部的margin都是50px。第二個(gè) div 的頂部和底部 margin 都是20px。第三個(gè) div 的頂部和底部 margin 都是3em。前兩個(gè)元素之間的 margin 是50px,因?yàn)檩^小的頂部 margin 與較大的底部 margin 相結(jié)合。第二個(gè)元素與第三個(gè)元素之間的 margin 是 3em,因?yàn)?em大于第二個(gè)元素底部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;
          }
          

          運(yùn)行效果:

          完全空盒子

          如果一個(gè)盒子是空的,那么它的頂部和底部 margin 可能會相互重疊。在下面的示例中,class為empty的元素的頂部和底部 margin 各為50px,但是,第一項(xiàng)和第三項(xiàng)之間的 margin不是100px,而是50px。這是由于兩個(gè) 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;
          }
          

          運(yùn)行效果:

          父元素和第一個(gè)或最后一個(gè)子元素

          margin 重疊讓人猝不及防,因?yàn)樗袝r(shí)候不是很直觀。在下面的示例中,有一個(gè)類名為 wrapper 的div,給這個(gè)div一個(gè)紅色的outline,這樣就可以看到它在哪里了。

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

          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;
          }
          

          運(yùn)行效果:

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

          僅塊元素 margin 重疊

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

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

          阻止 margin 重疊

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

          例如,一個(gè)完全空的盒子,如果它有border或padding,它的上下 margin就不會重疊。在下面的例子中,給這個(gè)空盒子添加了1px的padding。現(xiàn)在這個(gè)空盒子的的上方和下方都有一個(gè)50px的 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;
           padding: 1px;
          }
          

          運(yùn)行效果:

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

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

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

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

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

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

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

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

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

          flex 和 grid 容器

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

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

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

          網(wǎng)站 margin 策略

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

          這個(gè)解決方案并不能解決你可能遇到的問題,因?yàn)樽釉氐膍argin會與父元素相互重疊。這個(gè)特定的問題往往不那么常見,但知道它為什么會發(fā)生可以幫助你想出一個(gè)解決方案。

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

          百分比 margin

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

          在下面的示例中,有一個(gè)200px 寬的 d當(dāng),里面是一個(gè)類名為 box 的div,它的 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;
          }
          

          我們在本文中一直在討論垂直 margin ,然而,現(xiàn)代CSS傾向于以相對于流的方式而不是物理方式來考慮事情。因此,當(dāng)我們討論垂直邊距時(shí),我們實(shí)際上是在討論塊維度的邊距。如果我們在水平寫作模式下,這些 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

          還有兩個(gè)新的快捷鍵,可以同時(shí)設(shè)置兩個(gè)塊或者兩個(gè)內(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;
          }
          

          需要了解更多,可以閱讀有關(guān)MDN上的邏輯屬性和值的更多信息。

          代碼部署后可能存在的BUG沒法實(shí)時(shí)知道,事后為了解決這些BUG,花了大量的時(shí)間進(jìn)行l(wèi)og 調(diào)試,這邊順便給大家推薦一個(gè)好用的BUG監(jiān)控工具 Fundebug。

          交流

          干貨系列文章匯總?cè)缦拢X得不錯(cuò)點(diǎn)個(gè)Star,歡迎 加群 互相學(xué)習(xí)。

          https://github.com/qq449245884/xiaozhi

          我是小智,公眾號「大遷世界」作者,對前端技術(shù)保持學(xué)習(xí)愛好者。我會經(jīng)常分享自己所學(xué)所看的干貨,在進(jìn)階的路上,共勉!

          關(guān)注公眾號,后臺回復(fù)福利,即可看到福利,你懂的。


          個(gè)網(wǎng)頁前端是由HTML DOM與嵌套組合形成視圖結(jié)加上 CSS 樣式的修飾形成視圖,由JavaScript 接受用戶的交互請求,以事件機(jī)制來響應(yīng)用戶交互操作而形成的。CSS是前臺頁面形式最重要的部分,它負(fù)責(zé)控制DOM元素的頁面布局和顏色、大小的屬性。

          在CSS中有一著名的盒子模型理論,可以用它來控制DOM的位置。基于div+css技術(shù)的“盒子模型”的出現(xiàn)大大代替了傳統(tǒng)的table表格嵌套。

          雖然其十分好用,但是對于很多新手來說,卻很難搞清楚它幾個(gè)屬性和內(nèi)容之間的聯(lián)系個(gè)區(qū)別。

          盒子模型概念

          所有頁面的元素都可以看做一個(gè)盒子,占據(jù)著一定的頁面空間。一般來說這些被占據(jù)的空間往往會比單純的內(nèi)容要大。因此,可以通過盒子的邊框和距離等參數(shù)來控制內(nèi)容的位置。

          Div+CSS 盒子模型

          說明:

          1、Margin:中文叫外邊距,主要作用是控制邊框外(Border以外)的區(qū)域,外邊距是透明的

          2、Border:中文叫邊框,是圍繞在內(nèi)邊距(Padding)和內(nèi)容外的邊框。注意,它不是透明的

          3、Padding:中文叫內(nèi)邊距,控制內(nèi)容周圍的區(qū)域,內(nèi)邊距是透明的

          4、Content:內(nèi)容,盒子的內(nèi)容,顯示文本和圖像。

          5、在Css文件中設(shè)置的Div的Css.width和Css. height就是內(nèi)容的寬和高。

          6、盒子實(shí)際尺寸有可能大于內(nèi)容尺寸:

          盒子模型的總寬度等于content(寬)+padding(左右)+border(左右)+margin(左右);

          盒子模型的總高度等于content(高)+padding(上下)+border(上下)+margin(上下);

          實(shí)例演示--原始樣式

          接下來通過實(shí)例演示的方式來一一講解Margin、Border、Padding的作用和區(qū)別。

          頁面如圖所示:


          原始樣式

          代碼:

          HTML:
          <body>
              <div class="TsetUpper"></div>
              <div class="TsetMiddle"></div>
              <div class="TsetDown"></div>
          </body>
          CSS:
          .TsetUpper{
          	width: 400px;
          	height: 200px;
          	background-color: black;
          	position: relative;
          	margin: auto;
          	text-align: center;
          }
          .TsetMiddle{
          	width: 600px;
          	height: 200px;
          	background-color: red;
          	position: relative;
          	margin: auto;
          }
          .TsetDown{
          	width: 400px;
          	height: 200px;
          	background-color: black;
          	position: relative;
          	margin: auto;
          	text-align: center;
          }

          Border

          元素邊框:我們可以在CSS邊框?qū)傩灾性O(shè)置元素邊框的樣式和顏色。

          按如下代碼設(shè)置Div(TsetMiddle)的Border(邊框):

          border-style:solid;
          border-width: 10px;
          border-color: aqua;

          刷新頁面如下圖:此時(shí)TsetMiddle這個(gè)盒子的總寬度已經(jīng)變成200+30+30了,而且可以設(shè)置其底色和線條樣式。

          Border

          Margin

          margin 控制周圍的元素區(qū)域。margin 沒有背景顏色,是完全透明的。通過margin可以控制元素與四周元素的空隙距離;

          按如下代碼設(shè)置Div(TsetMiddle)的margin(外邊距):

          margin: 30px auto;

          刷新頁面如下圖:此時(shí)TsetMiddle這個(gè)盒子的總寬度已經(jīng)變成200+30(Border)+30(Margin)+30(Border)+30(Margin)了。

          Margin

          Padding

          Padding:當(dāng)元素的 padding(填充)內(nèi)邊距被清除時(shí),所釋放的區(qū)域?qū)艿皆乇尘邦伾奶畛洹?/p>

          按如下代碼設(shè)置Div(TsetMiddle)的margin(外邊距):

          padding: 30px;

          刷新頁面如下圖:此時(shí)TsetMiddle這個(gè)盒子的總寬度已經(jīng)變成200+30(Padding)+30(Border)+30(Margin)+30(Padding)+30(Border)+30(Margin)了。

          Padding

          總結(jié)

          1、各屬性的值可以用px為單位,也可以用em,百分比等。

          2、可以利用盒子的各種屬性,調(diào)整其內(nèi)容在父容器中的位置。


          主站蜘蛛池模板: 久久国产精品最新一区| 无码中文人妻在线一区二区三区| 精品一区二区三区波多野结衣| 国产在线观看精品一区二区三区91| 国精品无码一区二区三区左线| 国产伦精品一区二区| 91一区二区三区四区五区| 国产一区二区在线观看app| 影院成人区精品一区二区婷婷丽春院影视 | 亚洲av无码一区二区三区观看| 精品伦精品一区二区三区视频| 国产aⅴ一区二区三区| 亚洲欧美成人一区二区三区| 一本一道波多野结衣一区| 麻豆一区二区在我观看 | 亚洲综合在线一区二区三区| 久久久精品人妻一区二区三区四| 日本一区精品久久久久影院| 韩国福利一区二区三区高清视频| 日韩精品电影一区亚洲| 国产人妖在线观看一区二区| 国产人妖视频一区二区破除| 精品在线一区二区| 搜日本一区二区三区免费高清视频| 久久精品国内一区二区三区| 国产品无码一区二区三区在线| 波多野结衣一区二区| 日韩欧美一区二区三区免费观看| 亚洲AV无码一区二区三区性色| 成人精品一区二区户外勾搭野战| 精品国产一区二区三区色欲| 亚洲av无一区二区三区| 动漫精品第一区二区三区| 一区二区国产精品| 精品亚洲一区二区| 亚洲国产情侣一区二区三区| 国产精品综合一区二区三区| 日韩经典精品无码一区| 国产在线不卡一区二区三区| 91精品一区二区三区久久久久| 中文字幕无线码一区二区 |