CSS中的標準文檔流以及脫標(脫離標準文檔流)(六)

標準文檔流

一.標準流中的微觀現(xiàn)象:

1>空白折疊現(xiàn)象

//CSS:
    <style type="text/css">
        span{
            background-color: greenyellow;
            font-size: 20px;
        }
    </style>
//HTML
   <span class="box1">怎么么怎么怎么啦</span>
    <span class="box2">怎么么怎么怎么啦</span>
    <span class="box3">怎么么怎么怎么啦</span>

空白折疊
緊奏型則不會出現(xiàn)折疊

2>高矮不齊,底邊對齊
如果又有圖片且圖片參差不齊的,又有文字谊娇。則會出現(xiàn)高矮不齊,底邊對齊的情況培廓。
3>自動換行此衅,一行不滿琅坡,換行寫

二. 塊級元素和行內(nèi)元素
2.1 塊級元素
  • 獨占一行
  • 能設置寬高度悉患,如果不設置寬度,則默認會變?yōu)楦赣H的100%
2.2 行內(nèi)元素
  • 與其他行內(nèi)元素并排
  • 不能設置寬高度榆俺,默認就是文字的寬度

在HTML售躁,分為文本級、容器級茴晋。
文本級:p陪捷、spana诺擅、b市袖、iu烁涌、em
容器級: div苍碟、h系列、li撮执、dt微峰、dd

在CSS,與HTML很像抒钱,p是特殊蜓肆。
所有的文本級標簽颜凯,都是行內(nèi)元素,除p外症杏,p在HTML是文本級装获,但是在CSS中是個塊級元素
所有的容器級標簽都是塊級元素

標簽分類
三.塊級元素和行內(nèi)元素相互轉換
div{
  display:inline;
  background-color:red;
  width:200px;
  height:200px;
}
span{
  display:block;
  background-color:red;
  width:200px;
  height:200px;
}

只要設置display:就可以改變行內(nèi)或者是塊級的性質(zhì)
1)設置為inline之后,這個標簽將變?yōu)樾袠I(yè)元素厉颤,則此時的div不能設置寬高度了穴豫,但是可以與別人并排了。
2)設置為block之后逼友,這個標簽將變?yōu)閴K級元素精肃,則此時的span就能設置寬高度了,此時的span是獨占一行的帜乞,無法并排司抱,如果不設置高度,將撐滿父親黎烈。

脫離標準文檔流

標準文檔流里面的限制很多习柠,比如要實現(xiàn)既要并排,又要設置寬高照棋,此刻就要脫離標準流资溃。
CSS中有三種手段,使一個元素脫離標準文檔流:

1>浮動(注:右浮動跟左浮動是一樣的原理)

此時兩個元素并排了烈炭,且都設置了寬度和高度溶锭。(標準流中是不能這樣的既要并排,又要設置寬高的)


浮動
  • 浮動元素互相貼靠
    如果有足夠的空間符隙,老三會靠著老二趴捅,如果沒有足夠的空間老三就會靠著老大,如果沒有足夠的空間霹疫,那么就會去貼左墻拱绑。


    Snip20161111_45.png
  • 浮動元素有“自圍”效果
    HTML
   <div class="box1">
       老大</div>
   <p>哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
哈哈哈哈哈哈哈哈哈哈哈</p>

讓div浮動,p不浮動更米。div擋住了p,但是p中的字不會被擋住欺栗,形成自圍效果。

浮動清除(四種方法)

現(xiàn)在有兩個div,div沒有任何屬性征峦,li中所有元素都是浮動的

//HTML:
<div>
     <ul><li>語文</li>
        <li>數(shù)學</li>
        <li>英語</li>
        <li>生物</li>
        <li>地理</li>
    </ul>
</div>
<div>
    <ul>
        <li>iOS</li>
        <li>java</li>
        <li>安卓</li>
    </ul>
</div>
//CSS:
 li{
            float: left;
            margin-left: 10px;
            width: 50px;
            background-color: fuchsia;
        }

以為這些li會分成兩排,然而并不是那樣的消请,第二組中第一個去貼第一組中的最后一個li了栏笆。理由:因為div沒有高度,不能給浮動的元素一個容器臊泰。故看到的便是下面的這種狀態(tài)蛉加。


不是想象中的模樣
  • 浮動的元素的祖先元素加高度
    如果一個元素要浮動,那么其祖先元素一定要有高度,有高度的盒子针饥,才能管住浮動厂抽。只要浮動在一個有高度的盒子中,那么這個浮動就不會影響后面的浮動元素丁眼,這樣消除浮動了筷凤。


    浮動的元素的祖先元素加高度
  • clear:both;
    both指的是左右浮動都清除。

clear:both;
設置clear:both; margin失效
  • 隔墻法


    隔墻法

    隔墻法最終顯示效果

內(nèi)墻法:

內(nèi)墻法

內(nèi)墻法最終顯示效果
  • overflow:hidden;
    overflow:hidden:溢出隱藏苞七,所有溢出邊框的內(nèi)容藐守,都要隱藏掉。

本意就是清除溢出到盒子外面的文字蹂风。但是卻發(fā)現(xiàn)它能做偏方卢厂。
一個父親不能被自己浮動的兒子,撐出高度惠啄。但是慎恒,只要給父親加上overflow:hidden; 那么,父親就能被兒子撐出高了撵渡。這是一個偏方融柬。

overflow:hidden
清除浮動總結

1)加高法
浮動的元素,只能被有高度的盒子關住姥闭。 也就是說丹鸿,如果盒子內(nèi)部有浮動,這個盒子有高棚品,那么浮動不會互相影響靠欢。但是,工作上铜跑,我們絕對不會給所有的盒子加高度门怪。因為麻煩,并且不能適應頁面的快速變化锅纺。

    <div>   → 設置height
                <p></p>
                <p></p>
                <p></p>
        </div>
        <div>   → 設置height
                <p></p>
                <p></p>
                <p></p>
       </div>
  1. clear:both;法
    最簡單的清除浮動的方法掷空,就是給盒子增加clear:both;表示自己的內(nèi)部元素囤锉,不受其他盒子的影響坦弟。 浮動確實被清除了,不會互相影響了官地。但是存在bug就是margin失效酿傍。兩個div之間,沒有任何的間隙了驱入。
    <div>
            <p></p>
            <p></p>
            <p></p>
    </div>
        
    <div>   → clear:both;
            <p></p>
            <p></p>
            <p></p>
    </div>

3)隔墻法:
在兩部分浮動元素中間赤炒,建一個墻血久。隔開兩部分浮動捷绒,讓后面的浮動元素塔逃,不去追前面的浮動元素传泊。 墻用自己的身體當做了間隙。

    <div>
            <p></p>
            <p></p>
            <p></p>
    </div>
        
        <div class="cl h16"></div>
        
    <div>
            <p></p>
            <p></p>
            <p></p>
    </div>

我們發(fā)現(xiàn)遵岩,隔墻法好用你辣,但是第一個div,還是沒有高度旷余。如果我們現(xiàn)在想讓第一個div绢记,自動的根據(jù)自己的兒子,撐出高度正卧,這時候推出內(nèi)墻法蠢熄。

    <div>
            <p></p>
            <p></p>
            <p></p>
     <div class="cl h16"></div>
    </div>
        
       
        
    <div>
            <p></p>
            <p></p>
            <p></p>
    </div>

內(nèi)墻法的優(yōu)點就是,不僅僅能夠讓后部分的p不去追前部分的p了炉旷,并且能把第一個div撐出高度签孔。這樣,這個div的背景窘行、邊框就能夠根據(jù)p的高度來撐開了饥追。
4)overflow:hidden;
這個屬性的本意,就是將所有溢出盒子的內(nèi)容罐盔,隱藏掉但绕。但是,我們發(fā)現(xiàn)這個東西能夠用于浮動的清除惶看。
我們知道捏顺,一個父親,不能被自己浮動的兒子撐出高度纬黎,但是幅骄,如果這個父親加上了overflow:hidden;那么這個父親就能夠被浮動的兒子撐出高度了本今。這個現(xiàn)象拆座,不能解釋,就是瀏覽器的小偏方冠息。 并且,overflow:hidden;能夠讓margin生效挪凑。

額外補充

瀏覽器兼容問題

1.IE6,不支持小于12px的盒子逛艰,任何小于12px的盒子岖赋,在IE6中看都大

解決辦法:就是將盒子的字號,設置形退铩(小于盒子的高)唐断,比如0px脸甘。

height: 4px;    
_font-size: 0px;

我們現(xiàn)在介紹一下瀏覽器hack。hack就是“黑客”铆遭,就是使用瀏覽器提供的后門啼肩,針對某一種瀏覽器做兼容。
IE6留了一個后門祈坠,就是只要給css屬性之前害碾,加上下劃線,這個屬性就是IE6認識的專有屬性赦拘。
比如:_background-color: green;

2.IE6不支持用overflow:hidden;來清除浮動的

解決辦法:_zoom:1;
完整寫法:

    overflow: hidden;
    _zoom:1;

實際上慌随,_zoom:1能夠觸發(fā)瀏覽器hasLayout機制躺同。
強調(diào)一點笋籽, overflow:hidden;的本意,就是溢出盒子的border的東西隱藏车海,這個功能是IE6兼容的。不兼容的是overflow:hidden;清除浮動的時候逆甜。這兩個IE6的兼容問題集嵌,都是通過多寫一條hack來解決的欺税。這個我們稱為伴生屬性燥筷。

//IE6袍祖,不支持小于12px的盒子,任何小于12px的盒子谢揪,在IE6中看都大
    height:6px;
    _font-size:0;
//IE6不支持用overflow:hidden;來清除浮動的
    overflow:hidden;
    _zoom:1;

margin

1.margin的塌陷現(xiàn)象

標準文檔流中蕉陋,豎直方向的margin不疊加,以較大的為準


標流中豎直方向的margin不疊加拨扶,以較大的為準

如果是在脫離標準文檔流中凳鬓,豎直方向的margin疊加

脫標中豎直方向的margin疊加
2.盒子居中margin:0 auto;

注意:
1)使用margin:0 auto;的盒子,必須有width患民,有明確的width
2) 只有標準流的盒子缩举,才能使用margin:0 auto;居中。 也就是說,當一個盒子浮動了仅孩、絕對定位了托猩、固定定位了,都不能使用margin:0 auto;
3) margin:0 auto;是在居中盒子杠氢,不是居中文本站刑。文本的居中,要使用text-align:center;

3.善用父親的padding,而不是兒子的margin

margin這個屬性鼻百,本質(zhì)上描述的是兄弟和兄弟之間的距離; 最好不要用這個marign表達父子之間的距離摆尝。 所以温艇,我們一定要善于使用父親的padding,而不是兒子的margin.

善用父親的padding,而不是兒子的margin
4.關于margin的IE6兼容問題

IE6雙倍margin bug當出現(xiàn)連續(xù)浮動的元素堕汞,攜帶和浮動方向相同的margin時勺爱,隊首的元素,會雙倍marign讯检。

<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>

解決方案:
1)只需要將浮動的方向和margin的方向相反琐鲁。

      float: left;
       margin-right: 40px;

2)使用hack(沒必要,別慣著這個IE6)
單獨給隊首的元素人灼,寫一個一半的margin
<li class="no1"></li>

        ul li.no1{  
            _margin-left:20px;  
     }
2>絕對定位<待續(xù)>
3> 固定定位<待續(xù)>
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末围段,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子投放,更是在濱河造成了極大的恐慌奈泪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灸芳,死亡現(xiàn)場離奇詭異涝桅,居然都是意外死亡,警方通過查閱死者的電腦和手機烙样,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門冯遂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谒获,你說我怎么就攤上這事蛤肌。” “怎么了究反?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵寻定,是天一觀的道長。 經(jīng)常有香客問我精耐,道長狼速,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任卦停,我火速辦了婚禮向胡,結果婚禮上恼蓬,老公的妹妹穿的比我還像新娘。我一直安慰自己僵芹,他們只是感情好处硬,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拇派,像睡著了一般荷辕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上件豌,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天疮方,我揣著相機與錄音,去河邊找鬼茧彤。 笑死骡显,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的曾掂。 我是一名探鬼主播惫谤,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼珠洗!你這毒婦竟也來了溜歪?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤险污,失蹤者是張志新(化名)和其女友劉穎痹愚,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛔糯,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡拯腮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚁飒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片动壤。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖淮逻,靈堂內(nèi)的尸體忽然破棺而出琼懊,到底是詐尸還是另有隱情,我是刑警寧澤爬早,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布哼丈,位于F島的核電站,受9級特大地震影響筛严,放射性物質(zhì)發(fā)生泄漏醉旦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望车胡。 院中可真熱鬧檬输,春花似錦、人聲如沸匈棘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽主卫。三九已至逃默,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間队秩,已是汗流浹背笑旺。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馍资,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓关噪,卻偏偏與公主長得像鸟蟹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子使兔,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案建钥? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,751評論 1 92
  • 1、居中的n種方法: ①虐沥、margin: 0 20%; ——設置margin上下外邊距的值設置為0熊经,左右外邊距設置...
    何wife閱讀 366評論 0 2
  • 1. 居中不定高div樣式 參考:http://www.haorooms.com/post/css_div_juz...
    darr250閱讀 4,642評論 0 7
  • 1.CSS基本概念 1.1 CSS的定義 CSS(Cascading Style Sheets)層疊樣式表,主要用...
    寥寥十一閱讀 1,832評論 0 6
  • 沒有人會一直倒霉下去 我一直這樣堅信著 或大或小的一絲絲幸運 也許是一枚五角錢硬幣 也可能是一次偉大的成功 或許是...
    是喬木閱讀 163評論 0 1