margin

margin

[TOC]

一恬口、布局與尺寸

1校读、margin普通情況下不影響可視尺寸,只有元素在 充分利用可用空間 的時(shí)候才影響可視尺寸

2祖能、value可以是負(fù)值

3歉秫、可以用來實(shí)現(xiàn)流體布局

4、內(nèi)聯(lián)(inline)元素垂直方向的margin是沒有任何影響的

圖片左側(cè)定位

 <style>
        .point01 .box{overflow: hidden}
        .point01 .box >img{float: left;width: 140px}
        .point01 .box >p {margin-left: 140px}
    </style>
<div class="point01">
    <div class="box">
        <img src="./img/test.png" alt="">
        <p>文字內(nèi)容养铸。文字內(nèi)容雁芙。文字內(nèi)容。文字內(nèi)容钞螟。文字內(nèi)容兔甘。文字內(nèi)容。文字內(nèi)容鳞滨。文字內(nèi)容洞焙。文字內(nèi)容。文字內(nèi)容太援。文字內(nèi)容闽晦。文字內(nèi)容扳碍。文字內(nèi)容提岔。文字內(nèi)容。文字內(nèi)容笋敞。文字內(nèi)容碱蒙。文字內(nèi)容。文字內(nèi)容夯巷。文字內(nèi)容赛惩。文字內(nèi)容。文字內(nèi)容趁餐。文字內(nèi)容喷兼。文字內(nèi)容。文字內(nèi)容后雷。文字內(nèi)容季惯。文字內(nèi)容。文字內(nèi)容臀突。勉抓。。</p>
    </div>
</div>
左側(cè)布局.png

流體布局右側(cè)固定

style>
    .point02 .box {
        overflow: hidden
    }

    .point02 .box>img {
        float: left;
        margin-left: -140px;
    }

    .point02 .full{
        width: 100%;
        float: left;
    }
    .point02 .box p {
        margin-right: 140px
    }
</style>
<div class="point02">
    <div class="box">
        <div class="full">
<p>文字內(nèi)容候学。文字內(nèi)容藕筋。文字內(nèi)容。文字內(nèi)容梳码。文字內(nèi)容隐圾。文字內(nèi)容伍掀。文字內(nèi)容。文字內(nèi)容翎承。文字內(nèi)容硕盹。文字內(nèi)容。文字內(nèi)容叨咖。文字內(nèi)容瘩例。文字內(nèi)容。文字內(nèi)容甸各。文字內(nèi)容垛贤。文字內(nèi)容。文字內(nèi)容趣倾。文字內(nèi)容聘惦。文字內(nèi)容。文字內(nèi)容儒恋。文字內(nèi)容善绎。文字內(nèi)容。文字內(nèi)容诫尽。文字內(nèi)容禀酱。文字內(nèi)容。文字內(nèi)容牧嫉。文字內(nèi)容剂跟。。酣藻。</p>
        </div>
        <img src="./img/test.png" width="140">
       </div>
</div>

效果如下曹洽,注意:

.point02 .box>img { float: left; margin-left: -140px; }

[圖片上傳中...(等高.png-b3fe0c-1525828977161-0)]

等高布局:



<h3>等高</h3>
<style>
    .point04 .box {
        overflow: hidden;
    }

    .point04 .c_left,
    .point04 .c_right {
        float: left;
        width: 300px;
        margin-bottom: -9999px;
        padding-bottom: 9999px;
    }
    .c_left{
        background: gray;
    }
    .c_right{
        background: red;
    }
</style>
<div class="point04">
<div class="box c_left">
    <h4>正方觀點(diǎn)</h4>
    <p>觀點(diǎn)1111</p>
</div>
<div class="box c_right">
    <h4>反方觀點(diǎn)</h4>
    <p>觀點(diǎn)1111</p>
    <p>觀
        點(diǎn)1111</p>
    <p>觀點(diǎn)1111</p>
    <p>觀點(diǎn)1111</p>
</div>
</div>

效果:

等高.png

解析:

兩個(gè)padding和margin把頁面拉的特別長,最終顯示的是內(nèi)容撐開的父親的大小辽剧,其他的地方都被遮擋了

但是還是建議用table-ceil

二送淆、margin合并

三種合并場景:

  1. 相鄰元素合并

    <style>
        .point06  p{
           margin: 1 em 0;
        }
    
        .point06 .container>h2 {
            font-size: 128px;
            margin-top: 100px;
            color: #fff;
        }
    </style>
    <div class="point06">
       <p>第一行</p>
       <p>第二行</p>
       <p>第三回</p>
       <p>第四行</p>
       <p>第五行</p>
       <p>第六行</p>
    </div>
    
    
    ![margin合并.png](https://upload-images.jianshu.io/upload_images/3819791-2a475fc8031d382a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  1. 父級(jí)和第一個(gè)/最后一個(gè)子元素

    eg:banner里邊有自己的內(nèi)容,如果內(nèi)容要靠margin靠中間的話怕轿,會(huì)把banner擠下來的,如何解決這種功能問題偷崩?注釋中的四種方法

    <style>
        .point05 {}
    
        .point05 .container {
            /* overflow: hidden; *//*格式化父元素*/
            /* border-top: 1px solid gray; *//*父元素設(shè)置border-top的值*/
            /* padding: 1px; *//*父元素設(shè)置padding*/
            max-width: 1020px;
            height: 300px;
            background: green;
        }
    
        .point05 .container>h2 {
            font-size: 128px;
            margin-top: 100px;
            color: #fff;
        }
    </style>
    <div class="point05">
        <h1> i am the title </h1>
        <div class="container">
            <!-- <a>123</a> --><!--   父元素和第一個(gè)子元素之間添加內(nèi)斂元素進(jìn)行分離-->
            <h2>this is test</h2>
        </div>
    </div>
    
    
margin合并.png
  1. 空塊級(jí)元素的margin合并

    如果父親里邊有一個(gè)空元素,上下margin都是10 結(jié)果父元素的高度只有10 因?yàn)樽釉氐纳舷耺argin合并了

    
    <style>
       .point07 .father{
            overflow: hidden;
        }
        .point07 .son{
            margin: 10px 0;
            /* padding-top: 1px; */
            /* border-top: 1px solid green; */
            /* min-height: 1px */
        }
    </style>
    <div class="point07">
    
    <div class="father">
        <div class="son">
            <!-- 12 -->
        </div>
    </div>
    </div>
    

三種合并規(guī)則:

  1. 正正取大
  2. 正負(fù)相加
  3. 負(fù)負(fù)最負(fù)

三撤卢、margin:auto

前提:

1环凿、div等元素,在沒有設(shè)置widthheight的時(shí)候 他也會(huì)自動(dòng)填滿容器<div></div>

2放吩、有時(shí)候智听,元素沒有設(shè)置width height 也會(huì)自動(dòng)填充對(duì)應(yīng)的方位

div{
    position:absolute;
    left:0;right:0;
}

Margin:auto 的屬性值就是基于以上兩點(diǎn)實(shí)現(xiàn)的,填充規(guī)則如下:

  1. 一側(cè)定值,一側(cè)auto 那么auto剩下的空間大小
  2. 兩邊都是auto 到推,那么平分剩余空間大小

如下幾個(gè)例子:

margin_left01.png
margin_auto.png
margin.png

margin:auto高度不居中的問題:

margin:auto居中的前提是自動(dòng)填充的功能考赛,但是垂直高度上,本來div都不會(huì)自動(dòng)填充莉测,所以也不會(huì)自動(dòng)分配margin進(jìn)行填充了颜骤。

如果要用margin:auto實(shí)現(xiàn)垂直居中,可以使用手動(dòng)創(chuàng)建垂直自動(dòng)填充功能進(jìn)行居中

不兼容ie8

<style>
    .point08 .father{
        width: 300px;
        height: 300px;
        background: grey;
        position: relative;
    }
    .point08 .son {
        width:200px;
        height: 200px;
        background: red;
        position: absolute;
        top: 0;bottom: 0;left: 0;right: 0;
        margin: auto;
    }

</style>
<div class="point08">
    <div class="father">
        <div class="son">
            i am the son 
        </div>
    </div>
</div>

之前我以為這里的垂直居中是因?yàn)?code>position的top bottom的拉伸作用使元素上上不去下下不來才居中的捣卤,但是這里如果我們將.point08 .sonmargin:auto刪除忍抽,將不再居中,所以position只是用來提供自動(dòng)填充的功能

還有一種董朝,如果不考慮水平居中的話鸠项,可以如下:

.point08 .father{
        width: 300px;
        height: 300px;
        background: grey;
        /* position: relative; */
        writing-mode: vertical-lr;
    }

四、margin 無效的情況

  1. 內(nèi)聯(lián)(inline) 非替換(除了類似于<img> <iframe>的元素)元素的高度設(shè)置margin沒用

  2. tr td 或者 table-cell table-row 的元素子姜,但是table-caption table 或者是inline-table就沒有問題了

  3. 父子margin合并的時(shí)候祟绊,就可能讓子的margin沒用

  4. 絕對(duì)定位的非定位方向的margin,因?yàn)樵O(shè)置了right,這樣left沒有設(shè)置的時(shí)候哥捕,調(diào)試的再大也沒有用了牧抽,但是如果給left:0一個(gè)值,元素立馬會(huì)因?yàn)?code>margin:1000px而消失不見或者十分靠右

             position: absolute;
            top: 0;bottom: 0;right: 10px;
            margin-left: 1000px;
    
  5. 定高容器的margin-bottom 或者是定寬的margin-right

  6. 鞭長莫及導(dǎo)致margin失效

     <style>
           .point09 .son1 {
               float: left;
               width: 256px;
           }
           .point09 .son2 {
               overflow: hidden;
               margin-left: 250px;
           }
       </style>
       <div class="point09">
           <div class="father">
               <img src="./img/test.png" alt="" class="son1">
               <div class="son2">
                   i am the son
               </div>
           </div>
       </div>
    

    這個(gè)時(shí)候遥赚,只要margin小于256 無論正負(fù)都不變化

  7. 內(nèi)聯(lián)特性導(dǎo)致的margin無效

     <style>
            .point09 .father {
    
            }
            .point09 .son1 {
                height: 96px;
                margin-top: -600px;
    
    
            }
        </style>
        <div class="point09">
            <div class="father">
                <img src="./img/test.png" alt="" class="son1">
                <div class="son2">
                    i am the son
                </div>
               
            </div>
        </div>
    

    這個(gè)時(shí)候扬舒,margin-top往上一定程度后就無法再移動(dòng)了,比如margin-top:-200px;上移動(dòng)了200px;但是在將其改為300還是200的位置鸽捻,并不會(huì)因此而進(jìn)行改變

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呼巴,一起剝皮案震驚了整個(gè)濱河市泽腮,隨后出現(xiàn)的幾起案子御蒲,更是在濱河造成了極大的恐慌,老刑警劉巖诊赊,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厚满,死亡現(xiàn)場離奇詭異,居然都是意外死亡碧磅,警方通過查閱死者的電腦和手機(jī)碘箍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲸郊,“玉大人丰榴,你說我怎么就攤上這事「汛椋” “怎么了四濒?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我盗蟆,道長戈二,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任喳资,我火速辦了婚禮觉吭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仆邓。我一直安慰自己鲜滩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布节值。 她就那樣靜靜地躺著绒北,像睡著了一般。 火紅的嫁衣襯著肌膚如雪察署。 梳的紋絲不亂的頭發(fā)上闷游,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音贴汪,去河邊找鬼脐往。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扳埂,可吹牛的內(nèi)容都是我干的业簿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼阳懂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岩调?” 一聲冷哼從身側(cè)響起巷燥,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎号枕,沒想到半個(gè)月后缰揪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡葱淳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年钝腺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赞厕。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艳狐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皿桑,到底是詐尸還是另有隱情胎署,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布奈揍,位于F島的核電站耗啦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顽腾。 院中可真熱鬧,春花似錦诺核、人聲如沸抄肖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漓摩。三九已至,卻和暖如春入客,著一層夾襖步出監(jiān)牢的瞬間管毙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工桌硫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夭咬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓铆隘,卻偏偏與公主長得像卓舵,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子膀钠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容