1. 程式人生 > >CSS中的聖盃佈局,以及聖盃佈局與雙飛翼佈局的區別

CSS中的聖盃佈局,以及聖盃佈局與雙飛翼佈局的區別

            為了解決中間寬度自適應,左右列固定寬度,最早出現的是聖盃佈局,雙飛翼佈局是對聖盃佈局的改良,同樣這種

佈局的優勢在於在中間列中的文件可以優先渲染。

       1.什麼是聖盃佈局

          其實對於聖盃佈局,前面一部分與雙飛翼佈局完全相同 

    <style>
     
    .column{
       float:left
    }
    .container{
       width:100%
     }
    .column{
      height:300px;
     }  
    #center_panel
{
      width:100%; 
      background-color:red;
    }
    #right_panel
     width:300px;
     margin-left:-100%;
     background-color:green;
  }
   #left_panel{
      width:300px;
       margin-left:-300px;
       background-color:green;
      }
</style>

<body>
   
    <div class="container"
>
        <div class="column" id="center_panel"></div>
        <div class="column" id="right_panel"></div>
       <div class="column" id="left_panel"></div>
     </div>
</body>
</html>
      這樣,大致實現了中間寬度自適應,左邊和右邊的寬度恆定,但是同時也出現了問題,就是中間panel
的部門內容被左邊和右邊的固定寬度層給遮擋了。
      雙飛翼佈局和聖盃佈局,也就是在如果解決中間層被遮擋的問題上會有不同。
      2.聖盃佈局如何解決中間層被遮擋
      聖盃佈局通過padding來解決此問題,因為左邊的固定寬度為300px;右邊的固定列的寬度為300px;
      我們設想可以用padding-left:300px;padding-right:300px;來解決問題,然而我們發現,如果
      簡單的設定
      .container{
      padding-left:300px;
      paddding-right:300px;
      }
      出現的效果為:
      

        我們發現左右兩列也會同時具有padding值,為了達到不覆蓋中間層,並且左右兩列沒有padding,這裡我們對於左右邊列,實行相對定位relative;

        具體設定如下:

 #right_panel{
            
              width:300px;
    
              margin-left:-100%;
   
              background-color:green;
  
              position: relative;
    
              left:-300px;
        }
      #left_panel{
  
              width:300px;
   
              margin-left:-300px;
    
              background-color:green;
    
              position: relative;
    
             left:-300px;

        }

        如此一來,我們就實現了聖盃佈局,並且左右的列也不會覆蓋中間列的一些內容,效果如下(PS:relative和浮 動可以混用):

        

          3.雙飛翼佈局如何解決中間部分被覆蓋的方法

          雙飛翼佈局解決中間層覆蓋的方法

          很簡單,就是在center_panel的這一層中增加了一個div,並且設定了這個

          div為

   <div class="container">
               <div class="column" id="center_panel">
                      <div id="center_child_panel"></div>
               </div>
               <div class="column" id="right_panel"></div>
               <div class="column" id="left_panel"></div>
        </div>
      並且設定:
          #center_child_panel{
           
                margin-left:300px;
    
                margin-right:300px;
            }
      至此我們實現了雙飛燕佈局中解決中間層被左右邊列覆蓋的問題,效果如下: