day21總結(jié):CSS布局(2019-05-15)

1.什么是標準流

  • 在沒有給標簽通過CSS布局的時候,標簽在瀏覽器中有一套默認的布局規(guī)則,這個規(guī)則就是標準流布局

2.標準流布局規(guī)則

1)塊級標簽
  • 一個占一行(不管標簽本身的寬度),設置寬高有效,默認寬度是父標簽的寬度,默認高度是內(nèi)容的高度
  • 例如:p,h1-h6,hr,div,...
2)行內(nèi)標簽
  • 一行可以有多個,默認大小就是內(nèi)容的大小,設置寬高無效
  • 例如:a,font,label,span,...
3)行內(nèi)塊標簽
  • 一行可以顯示多個,默認大小就是內(nèi)容的大小,設置寬高有效
  • 例如:input,button,img,...

3.display屬性

  • 可以改變標簽布局規(guī)則
  • block:塊級標簽
  • inline:行內(nèi)標簽
  • inline-block:行內(nèi)塊標簽
  • none:隱藏

4. 脫流 / 脫標

  • 只要標簽脫流,標準流的規(guī)則全部失效,不管什么樣的標簽在脫離標準流的情況下都是按照以下規(guī)則進行布局:一行可以顯示多個,默認大小是內(nèi)容大小,設置寬高有效
  • 浮動定位都可以讓標簽脫流

5. 浮動:float屬性

  • left(左浮動)
  • right(右浮動)

6. 浮動內(nèi)容環(huán)繞現(xiàn)象

  • 被環(huán)繞標簽浮動,環(huán)繞的內(nèi)容的容器標簽不浮動
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <!--浮動內(nèi)容環(huán)繞現(xiàn)象:
            被環(huán)繞標簽浮動,環(huán)繞的內(nèi)容的容器標簽不浮動
        -->
        <div id="" style=" width: 100px; height: 100px; float: left;">
            <img style="width: 50px;height: 50px;" src="img/luffy.jpg"/>
        </div>
        <div id="" style="width: 400px;">
            
            無論多么復雜的布局,其基本出發(fā)點均是:“如何在一行顯示多個div元素”。
            顯然標準流已經(jīng)無法滿足需求,這就要用到浮動。
            浮動可以理解為讓某個div元素脫離標準流,漂浮在標準流之上,和標準流不是一個層次。
            1.什么是浮動元素的脫離文檔流?
            首先要知道,div是塊級元素,在頁面中獨占一行,自上而下排列,也就是傳說中的標準流(網(wǎng)頁的正常排版順序)。
            脫離文檔流: 就是脫離正常的網(wǎng)頁排版順序。成為浮動流(浮動后的元素就是浮動流)。
            簡單來說當某一個元素浮動之后, 那么這個元素看上去就像被從標準流中刪除了一樣, 這個就是脫離文檔流。
        </div>
    </body>
</html>

7. 清除浮動

  • 清除浮動就是清除因為浮動而產(chǎn)生的高度塌陷問題
1)高度塌陷
  • 當父標簽不浮動,并且不設置固定高度,而子標簽浮動,就會產(chǎn)生高度塌陷的問題
2)清除浮動的方法
  • 空盒子法:在高度會塌陷的標簽的最后添加一個空的div,并且設置這個空的div的樣式的clear屬性為both
  • 設置高度會塌陷的標簽的樣式的overflow屬性為hidden
  • 萬能清除法:給高度會塌陷的標簽的after狀態(tài)添加樣式{display:block;clear:both;content:"";visibility:hidden;height:0;},再給高度會塌陷的標簽添加樣式屬性zoom的值為1
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>

        <style type="text/css">
            /*方法1*/
            .clear1{
                clear: both;
            }
            /*方法2*/
            .clear2{
                 overflow: hidden;
            }
            /*方法3*/
            .clear3:after{
                display:block;
                clear:both;
                content:"";
                visibility:hidden;
                height:0;
            }
            .clear3{
                zoom: 1;
            }
        </style>

    </head>

8. 定位:

1)position屬性
  • 選中定位的標簽的參考對象
  • initial / static:不定位,默認值;但是body的不是它們
  • absolute:絕對定位, 相對第一個position屬性不是initial/static的父標簽進行定位
  • relative:相對定位,相對標準流定位(相對于原標簽在標準流中的位置進行定位)
  • fixed:相對瀏覽器定位
  • sticky:定位保持網(wǎng)頁中最后一個塊在最后面(網(wǎng)頁滾動的時候在瀏覽的最下面,網(wǎng)頁不超過一屏在內(nèi)容的最下面)
2)left \ right \ top \ bottom
  • 設置當前標簽的左右上下到參考對象的左右上下的距離
  • 注意:在不給position屬性的時候直接設置left \ right \ top \ bottom屬性無效

9. 盒子模型:

  • html中每個可見的標簽都是一個盒子模型,由content、padding、border、margin組成
1)content
  • 內(nèi)容,設置寬和高其實是設置盒子內(nèi)容的大?。惶砑幼訕撕炇翘砑釉趦?nèi)容上;設置背景顏色和背景圖都會作用于內(nèi)容部分
2)padding
  • 內(nèi)邊距(默認沒有),內(nèi)容外面的可見部分(默認沒有),有四個方向:padding-left、padding-right、padding-top、padding-bottom;設置padding會讓標簽變大;設置背景顏色和背景圖都會作用于padding部分
3)border
  • 邊框,有四個方向(border-bottom/left/right/top),可以單獨控制每個方向的大小、顏色、樣式
  • border: 邊框?qū)挾?邊框樣式 邊框顏色(例:border:5px solid #ff0000)
  • 邊框樣式:solid(實線)/ dashed(虛線)/ dotted(點劃線)/ double(雙線)
4)margin
  • 外邊距,有四個方向,不可見,但是占位置
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #div1{
                /*2.padding*/
                /*1)一起設置4個方向的padding值都為50px*/
                /*padding: 50px;*/
                
                /*2)單獨設置各個方向的padding*/
                padding-left: 20px;
                padding-top: 20px;
                
                /*3.border
                 * 1)一起設置
                 * 格式 - border: 邊框?qū)挾?邊框樣式 邊框顏色
                 * 邊框樣式 - solid(實線)\dashed(虛線)\dotted
                 */
                border: 2px solid darkblue;
                
                /*2)單獨設
                 */
                /*border-left-width: 10px;*/
                border-left: 5px dashed red;
                
                /*4.margin*/
                /*1)一起設置*/
                /*margin: 20px;*/
                margin-left: 20px;
                
                
                
            }
        </style>
    </head>
    <body>
        <div id="div1" style="width: 100px; height: 100px; background-color: hotpink;">
            <p>我是段落</p>
        </div>
        
        <input type="" name="" id="" value="" style="padding-left: 10px;"/>
    </body>
</html>

10.補充

1)設置背景圖片

  • background:圖片地址 是否平鋪 水平方向的位置 垂直方向的位置 背景顏色

2)去掉 / 增加下劃線

  • text-decoration: none
  • text-decoration: underline

3)水平居中方法

  • text-align:center
  • margin-left: auto; margin-right: auto

4)垂直居中方法

  • line-height:行高(當單行文本的行高等于容器高時,可實現(xiàn)文本在容器中垂直居中)

5)其他

  • cursor: pointer - 鼠標懸停時候的樣式為手指
  • vertical-align: bottom - 相對于容器底部對齊 (垂直方向布局方式)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容