1. 程式人生 > >sticker-footer布局

sticker-footer布局

通過 ade posit 應對 ack 100% play 處理 align

1、嵌套層級不深,可直接繼承自 body width:100%; height:100%;

<body>
    <div id="sticker">
        <div class="sticker-con">我是內容</div>
    </div>
    <div class="footer">我是腳</div>
</body>
html,body{
    width:100%;
    height:100%;
}
#sticker{
    width:100%;
    min-height:100%;
}
.sticker-con
{ padding-bottom:40px; // 40px footer 本身高度 } .footer{ margin-top:-40px; // 40px footer 本身高度 }

2、嵌套層級很深,無法直接從上級繼承 百分比高度的

<body>
    <div id="wrapper">
        <div id="sticker">
            <div class="sticker-con">我是內容</div>
</div> <div class="footer">我是腳</div> </div> </body>
.wrapper{
    position:fixed;  // 這樣 wrapper 就可以直接從 html,body 繼承 百分比高度了
    overflow:auto;   // 當高度超過 100% ;時產生滾動條
    width:100%;
    height:100%;     // 繼承自 body
}
// wrapper 內部包裹的結構,就如上所示了,css樣式也一樣

3. 當無法用百分比獲取高度時,也可通過js方式獲得

<body>
    <div id="sticker">
        <div class="sticker-con">我是內容</div>
    </div>
    <div class="footer">我是腳</div>
</body>
var sticker = document.querySelector(‘#sticker‘);
var h = document.body.clientHeight;
sticker.style.minHeight = h - 44 + ‘px‘;

//css樣式同第一種, 只是 sticker 的 min-height 用css獲取

//這種方式也可應對一些特殊情況,比如有頭部導航欄的情況,可以靈活的處理 min-height:    

4. 強大的 flex 布局 flex-direction:column

  • 將wrapper容器 display:flex; flex-direction:column
  • sticker: flex:1; 占據除footer以外的剩余空間
html,body{
  width: 100%;
  height: 100%;
  background-color: #ccc;
  margin:0;
  padding: 0;
    
}
header{
  height:44px;
  width: 100%;
  text-align: center;
  line-height: 44px;
}
#wrapper{
  display: flex;
  flex-direction: column;
  width: 100%;
  /*height: 100%;*/
}
#sticker{
  background-color: red;
  flex: 1;
}
#sticker .sticker-con{
  padding-bottom: 40px;
}
.footer{
  background-color: green;
  height: 40px;
}
<header>我是頭部</header>
<div id="wrapper">
    <div id="sticker">
        <div class="sticker-con">我是內容</div>
    </div>
    <div class="footer">我是腳</div>
</div>
var wrapper = document.querySelector(‘#wrapper‘);
var h = document.body.clientHeight;
wrapper.style.minHeight = h - 44 + ‘px‘;   // 減去頭部導航欄高度    

sticker-footer布局