1. 程式人生 > >關於display樣式、overflow樣式、文件流、浮動、定位

關於display樣式、overflow樣式、文件流、浮動、定位

一、顯示與隱藏
  1 通過display樣式 - none隱藏
    語法 - display:none;
    特點 - 隱藏以後,元素原有的位置會被佔用,
  2 通過visibility - hidden隱藏  
                   - visible顯示(預設值)
    語法 - visibility:hidden;
    特點 - 隱藏以後,元素原有的位置還會保留。
    
二、display樣式
  1 none 設定隱藏
  2 block 將元素變為塊元素的顯示效果。與HTML元素本身並無聯絡。
  3 inline 將元素變為內聯元素的顯示效果。與HTML元素本身並無聯絡。
  4 inline-block 將元素變為行內塊元素的效果顯示。
    * 行內塊元素:
        - 元素本身以塊元素的效果顯示(寬和高設定有效)
        - 元素之間以行內元素的排列方式顯示(水平排列,不會獨佔一行)
    * 補充:行內元素有一個特點,在編寫HTML程式碼時,如果元素之間有空格(包括換行符),
        如: <span>你好</span> <span>你好</span> <span>你好</span>
        或:  <span>你好</span>
              <span>你好</span>
              <span>你好</span> 
        這樣寫,在瀏覽器頁面中顯示時,元素之間也會出現一個“間隙”。
        若: <span>你好</span><span>你好</span><span>你好</span>
        這樣寫,就可以消除間隙,但是程式碼的可讀性不好。

三、overflow樣式(設定子元素溢位時父元素如何處理)
  1 visible 預設值,內容可能會溢位。
    * 內容溢位定義:
        當定義一個元素,並且在此元素定義文字內容,當文字內容過多時,可能顯示會超出當前元素的區域。
        但是在IE6中父元素會被撐開,不會溢位。
  2 hidden 溢位的內容會被修剪,並且修剪掉的內容是不可見的
  3 scroll 瀏覽器會顯示豎直、水平滾動條來顯示內容
  4 auto 有兩種可能的效果
       - 當內容溢位時,會自動新增豎直滾動條(相當於scroll)
       - 當內容不會溢位時,不會新增滾動條。(相當於預設樣式)


四、文件流
  1 定義 - 垂直方向從上到下的順序排列,水平方向從左到右的順序排列
  2 注意 - 預設情況下,排列的順序是不能改變的.
  3 脫離文件流的三種方式: 浮動、絕對定位、固定定位

五、浮動
  1 特點 - 當前元素脫離文件流,並且在頁面中不再佔有位置。
    注意 - 元素設定浮動以後,元素將會最大程度漂浮到元素的最上邊,直到遇到父元素的邊框或其他的浮動元素。
         - 如果父元素的寬度不足以裝下所有的浮動子元素,子元素將會換行。
         - 塊元素 本來不設定浮動時,會佔父元素的100%,設定浮動以後寬度不再佔父元素的100%,而是被子元素撐開。
 - 內聯元素  設定浮動以後會變成塊元素。
  2 可選值 
      - left
      - right
  3 浮動應用的特殊場景
      - 對於父子元素,當設定子元素浮動時,不會超出父元素的範圍。
      - 對於相鄰兄弟元素,存在兩種情況
          - 如果兩個元素都設定了浮動,兩個元素將變為水平排列。
          - 如果前一個元素不設定浮動,後一個元素設定了浮動,
            那麼後一個元素不會超出(最多是齊著)或覆蓋前一個元素。
      - 文字內容不會被浮動的元素覆蓋,會環繞在浮動元素的周圍。
        應用:文字環繞影象效果。


六、高度塌陷問題
    原因:文件流中,預設情況下,沒有設定寬度和高度時,
          預設的寬度是父元素的整個寬度。
          預設的高度是0或者子元素的高度的總和。
    特點:對於父子元素,如果父元素沒有設定高度,子元素設定了高度,並且浮動。
    現象:父元素的高度顯示為0.  —— 高度塌陷問題


七、高度塌陷解決方案:
   * BFC塊級格式化環境
      -  BFC是元素的隱含屬性。預設情況下,BFC是關閉的
      -  如何開啟BFC
          * 將當前元素設定為浮動
          * 將當前元素的 overflow 設定為 非visible 的值(一般為hidden)
          * 在所有子元素的最後,新增一個子元素,並且設定子元素的 clear 屬性值為 both
   * 高度塌陷解決方案
      1 為父級元素設定高度height為所有子元素的高度之和。
        存在問題:需要根據子元素高度人為計算父級元素的height值。


      2 為父級元素和子級元素同時設定浮動,父級元素沒有設定寬度和高度。可以使父元素包裹子元素。
        結果顯示:父級的寬度和高度分別是子元素的寬度和高度之和。


      3 將當前元素的 overflow 設定為 非visible 的值(一般為hidden)


      4 在所有子元素的最後,新增一個子元素,並且設定 clear 屬性值為 both
        注意:清除浮動可以清除其他元素對本元素的影響。
        問題:新增的元素會造成程式碼冗餘。


      5 設定父元素的 :after偽類display為inline-block,然後清除浮動。
        問題:IE6、7不支援    :after偽類。


   * 總結 最好的方式是 -     overflow:hidden
          - 在IE6中不能開啟BFC,但是他有另外一個隱藏屬性:
          - 開啟方式(副作用比較小的): zoom: 1; (只相容IE6)


八、定位
   * 元素開啟定位以後,如果不設定偏移量,元素不會發生任何變化。


   * 元素開啟定位以後,可以通過z-index來設定元素的層級。
     將z-index設為整數值,值越大,層級越高。


   1 static - 預設值,表示元素不開啟定位
   2 relative - 相對定位
   3 absolute - 絕對定位 
   4 fixed - 固定定位
   
九、絕對定位 absolute
    1 當父級元素沒有設定定位,子級元素設定了定位時,子級元素會根據頁面進行偏移。
    2 當父級元素和子級元素都設定了定位時,子級元素會相對於父級元素設定定位。
    3 行內標籤開啟絕對定位以後,會變成塊級元素(高和寬有效),同時也會脫離文件流。
    4 開啟絕對定位以後,元素會提升一個層級。
    5 當元素設定絕對定位時,寬度和高度預設由內容決定。
    偏移量的設定:
     left和top - 設定距離左邊和上邊的值。
     righthe bottom - 設定距離右邊和下邊的值。

十、固定定位
    1  特點:當元素開啟固定定位以後,會脫離文件流。
       固定定位是絕對定位的一種特殊形式,始終依據瀏覽器視窗來定義自己的顯示位置。
    2  效果:不管瀏覽器滾動條如何滾動,也不管瀏覽器視窗的大小如何變化,該元素都會始終顯示
       在瀏覽器視窗的固定位置。
    3  當行內元素開啟固定定位以後,也會改變元素的性質,即變成塊元素,同時脫離文件流。

十一、相對定位
    1 特點:開啟以後元素相對於元素自身原來的位置發生偏移。
            元素不會脫離文件流,並且元素會提升一個層級(覆蓋沒定位的元素)。
            元素開啟相對定位以後,不會改變元素的性質。
   也就是說塊元素設定相對定位還是塊元素,內聯元素設定相對定位以後還是內聯元素。