星空网 > 软件开发 > 网页设计

CSS全屏布局的5种方式

×
目录
[1]float [2]inline-block [3]table[4]absolute[5]flex[6]总结

前面的话

  全屏布局在实际工作中是很常用的,比如管理系统、监控平台等。本文将介绍关于全屏布局的5种思路

 

思路一: float

【1】float + calc

  通过calc()函数计算出.middle元素的高度,并设置子元素高度为100%

<style>body,p{margin: 0;}body,html,.parent{height: 100%;}.middle{  overflow: hidden;  height: calc(100% - 100px);}.left{  float: left;  width: 100px;  margin-right: 20px;  height: 100%;}.right{  overflow: auto;  height: 100%;}.right-in{  height: 1000px;}.top,.bottom{height:50px;}</style>

<div class="parent" id="parent" style="background-color: lightgrey;">  <div class="top" style="background-color: lightblue;">    <p>top</p>  </div>   <div class="middle" style="background-color: pink;">    <div class="left" style="background-color: orange;">      <p>left</p>    </div>    <div class="right" style="background-color: lightsalmon;">      <div class="right-in">        <p>right</p>      </div>    </div>  </div>       <div class="bottom" style="background-color: lightgreen;">    <p>bottom</p>  </div>    </div>

【2】float + absolute + (fix)

  通过增加结构来提高兼容性,.middle元素设置100%的高度,.top和.bottom设置absolute覆盖在.middle上

<style>body,p{margin: 0;}body,html,.parent{height: 100%;}.top,.bottom{  position: absolute;  height:50px;  left: 0;  right: 0;}.top{top: 0;}.bottom{bottom: 0;}.middleWrap{  height: 100%;  overflow: hidden;}.middle{  overflow: hidden;  height: 100%;  margin: 50px 0;}.left{  float: left;  width: 100px;  margin-right: 20px;  height: 100%;}.right{  overflow: auto;  height: 100%;}.right-in{  height: 1000px;}</style>

<div class="parent" id="parent" style="background-color: lightgrey;">  <div class="top" style="background-color: lightblue;">    <p>top</p>  </div>   <div class="middleWrap">    <div class="middle" style="background-color: pink;">      <div class="left" style="background-color: orange;">        <p>left</p>      </div>      <div class="right" style="background-color: lightsalmon;">        <div class="right-in">          <p>right</p>        </div>      </div>    </div>      </div>   <div class="bottom" style="background-color: lightgreen;">    <p>bottom</p>  </div>    </div>

 

思路二: inline-block

【1】inline-block + calc

<style>body,p{margin: 0;}body,html,.parent{height: 100%;}.middle{  height: calc(100% - 100px);  font-size: 0;}.left,.right{  display: inline-block;  vertical-align: top;  font-size: 16px;}.left{  width: 100px;  margin-right: 20px;  height: 100%;}.right{  width: calc(100% - 120px);  height: 100%;  overflow: auto;}.right-in{  height: 1000px;}.top,.bottom{height: 50px;}</style>

<div class="parent" id="parent" style="background-color: lightgrey;">  <div class="top" style="background-color: lightblue;">    <p>top</p>  </div>   <div class="middle" style="background-color: pink;">    <div class="left" style="background-color: orange;">      <p>left</p>    </div>    <div class="right" style="background-color: lightsalmon;">      <div class="right-in">        <p>right</p>      </div>    </div>  </div>      <div class="bottom" style="background-color: lightgreen;">    <p>bottom</p>  </div>    </div>

【2】inline-block + absolute + (fix)

<style>body,p{margin: 0;}body,html,.parent{height: 100%;}.top,.bottom{  position: absolute;  left: 0;  right: 0;  height: 50px;}.top{top: 0;}.bottom{bottom: 0;}.middleWrap{  height: 100%;  font-size: 0;  overflow: hidden;}.middle{  position: relative;  height: 100%;  margin: 50px 0;  overflow: hidden;}.left,.rightWrap{  display: inline-block;  vertical-align: top;  font-size: 16px;}.left{  position: absolute;  width: 100px;  margin-right: 20px;  height: 100%;}.rightWrap{  width: 100%;  height: 100%;}.right{  height: 100%;  margin-left: 120px;  overflow: auto;}.right-in{  height: 1000px;}</style>

<div class="parent" id="parent" style="background-color: lightgrey;">  <div class="top" style="background-color: lightblue;">    <p>top</p>  </div>   <div class="middleWrap">    <div class="middle" style="background-color: pink;">      <div class="left" style="background-color: orange;">        <p>left</p>      </div>      <div class="rightWrap">        <div class="right" style="background-color: lightsalmon;">          <div class="right-in">            <p>right</p>          </div>        </div>              </div>    </div>       </div>  <div class="bottom" style="background-color: lightgreen;">    <p>bottom</p>  </div>    </div>

 

思路三: table

  水平方向子元素的间距可以用border实现。所有浏览器都不支持给table-cell元素设置overflow属性。firefox和IE11浏览器不支持给table-cell元素的设置100%高度的子元素设置overflow属性

<style>body,p{margin: 0;}body,html,.parent{height: 100%;}.top,.bottom{  position: absolute;  width: 100%;  height: 50px;}.bottom{bottom: 0;}.middleWrap{  height: 100%;  overflow: hidden;}.middle{  width: 100%;  height: 100%;  display: table;    margin: 50px 0;  table-layout: fixed;}.left{  display: table-cell;  width: 120px;  border-right: 20px solid lightgray;}.rightWrap{  display: table-cell;  height: 100%;}.right{  height: 100%;  overflow: auto;}.right-in{  height: 1000px;}</style>

<div class="parent" id="parent" style="background-color: lightgrey;">  <div class="top" style="background-color: lightblue;">    <p>top</p>  </div>   <div class="middleWrap">    <div class="middle" style="background-color: pink;">      <div class="left" style="background-color: orange;">        <p>left</p>      </div>         <div class="rightWrap">        <div class="right" style="background-color: lightsalmon;">          <div class="right-in">            <p>right</p>          </div>              </div>                </div>      </div>       </div>    <div class="bottom" style="background-color: lightgreen;">    <p>bottom</p>  </div>    </div>

 

思路四: absolute

<style>body,p{margin: 0;}body,html,.parent{height: 100%;}.top,.middle,.bottom{  position: absolute;  left: 0;  right: 0;}.top{  top: 0;  height: 50px;}.bottom{  bottom: 0;  height: 50px;}.middle{  top: 50px;  bottom: 50px;}.left,.right{  position: absolute;  top: 0;  bottom: 0;}.left{  width:100px;}.right{  left: 120px;  right: 0;  overflow: auto;}.right-in{  height: 1000px;}</style>

<div class="parent" id="parent" style="background-color: lightgrey;">  <div class="top" style="background-color: lightblue;">    <p>top</p>  </div>   <div class="middle" style="background-color: pink;">    <div class="left" style="background-color: orange;">      <p>left</p>    </div>       <div class="right" style="background-color: lightsalmon;">      <div class="right-in">        <p>right</p>      </div>          </div>            </div>         <div class="bottom" style="background-color: lightgreen;">    <p>bottom</p>  </div>    </div>

 

思路五: flex

  flex常用于小范围的布局,使用全屏布局时会因为性能问题,出现卡顿现象。如果要使用全屏自适应布局,则只有flex才能达到效果

<style>body,p{margin: 0;}body,html,.parent{height: 100%;}.parent{  display: flex;  flex-direction: column;}.top,.bottom{  height: 50px;}.middle{  display: flex;  flex: 1;}.left{  width: 100px;  margin-right: 20px;}.right{  flex: 1;  overflow: auto;}.right-in{  height: 1000px;}</style>

<div class="parent" id="parent" style="background-color: lightgrey;">  <div class="top" style="background-color: lightblue;">    <p>top</p>  </div>   <div class="middle" style="background-color: pink;">    <div class="left" style="background-color: orange;">      <p>left</p>    </div>       <div class="right" style="background-color: lightsalmon;">      <div class="right-in">        <p>right</p>      </div>          </div>            </div>         <div class="bottom" style="background-color: lightgreen;">    <p>bottom</p>  </div>    </div>

 

总结

  全屏布局实际上就是两列或三列自适应布局的扩展形式。由于实现的是全屏效果,高度实际上是固定的,所以思路并没有等高布局局限。水平方向元素之间的间距根据实际情况使用margin、padding、border都可以实现




原标题:CSS全屏布局的5种方式

关键词:CSS

CSS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

泰国危险品海运货代:https://www.goluckyvip.com/tag/89712.html
海运去泰国运费:https://www.goluckyvip.com/tag/89713.html
广州到泰国海运多少钱:https://www.goluckyvip.com/tag/89714.html
海运到泰国曼谷要多久:https://www.goluckyvip.com/tag/89715.html
深圳海运到泰国:https://www.goluckyvip.com/tag/89716.html
泰国海运鞋子:https://www.goluckyvip.com/tag/89717.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流