1. 程式人生 > >CSSHTML實現高度寬度自適應

CSSHTML實現高度寬度自適應

首先說明 auto 和 100%是不一樣的,100%是根據元素的畫素有關的,auto是自動的。
舉個例子:給box下新增一個div高度是100%,這時候div高度為box高度300px,
這時候如果給這個div設定padding,那麼這個div的高度等於box的高度+padding的畫素之和。

再說一個知識點:
正常文件流下,塊級元素的寬度等於父元素的寬度,高度為內容撐開的高度;內聯元素的高度寬度都是內容撐開的高度寬度;
設定絕對定位/固定定位/浮動會脫離文件流;
脫離文件流下,塊級元素的寬度是內容撐開的元素,高度還是內容撐開的高度;
給內聯元素設定絕對定位/固定定位/浮動,內聯元素就會有塊元素的特點。

<div class="box">
  <div class="header"></div>
  <div class="content">
    <div class="left"></div>
    <div class="main"></div>
  </div>
</div>

 

第一種使用:width: auto;overflow: hidden

<style>
  *{margin: 0;padding: 0;}
  .box{width:300px;height:300px;position: relative;margin: 20px auto;}
  .header{height: 100px;width: 100%;background: #FF0000;}
  .content{position: absolute;top:100px;bottom: 0;background: yellow;height: auto;width: 100%;}
  .left{float: left;height: 100%;width: 100px;background: aqua;}
  .main{background: green;overflow: hidden;width: auto;;height: 100%;}

</style>

二種使用: width: 100%;padding;box-sizing: border-box;

<style>

  *{margin: 0;padding: 0;}

  .box{width:300px;height:300px;position: relative;margin: 20px auto;}
  .header{height: 100px;width: 100%;background: #FF0000;}
  .content{position: absolute;top:100px;bottom: 0;background: yellow;height: auto;width: 100%;}
  .left{float: left;height: 100%;width: 100px;background: aqua;}
  /* .main{background: green;width: auto;height: 100%;padding-left: 100px;} */
  /* 這種情況,寬度是auto就會自己適應 */
  .main{background: green;width: 100%;height: 100%;padding-left: 100px;box-sizing: border-box;}
  /* 這個時候width是100%,是相對於父元素的寬度,padding-left屬性就會是寬度多出100px,這時候就需要設定box-sizing: border-box;的作用是把padding往裡加,不會改變寬度. */

</style>