常用CSS布局(1.左右高度固定,中间自适应 2.上下高度固定,中间自适应)

1.左右高度固定,中间自适应

 一般有五种方法:

 第一种利用浮动:

 分为两种情况:

 文本高度未超过自适应div最小高度:

     <section class="layout float">
         <style>
             .layout.float .left{
                 float: left;
                 width: 300px;
                 background-color: #333;
             }
             .layout.float .right{
                 float: right;
                 width: 300px;
                 background-color: #333fff;
             }
             .layout.float .center{
                 background-color: #666;
             }

         </style>
         <article>
             <div class="left">
                 <p>111</p>
             </div>
             <div class="right"></div>
             <div class="center">
                 <p>浮动</p>
             </div>
         </article>
     </section>

 

 文本高度超过自适应div最小高度:

<!-- 1.利用浮动 -->

<!-- 1.利用浮动 -->
     <section class="layout float">
         <style>
             .layout.float .left{
                 float: left;
                 width: 300px;
                 background-color: #333;
             }
             .layout.float .right{
                 float: right;
                 width: 300px;
                 background-color: #333fff;
             }
             .layout.float .center{
                 background-color: #666;
             }

         </style>
         <article>
             <div class="left">
                 <p>111</p>
                <p>111</p>
                <p>111</p>
                <p>111</p>
                <p>111</p>
                <p>111</p>
                <p>111</p>
             </div>
             <div class="right"></div>
             <div class="center">
                 <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
                <p>浮动</p>
             </div>
         </article>
     </section>

样式:

 第二种利用绝对定位:

 文本高度未超过自适应div最小高度:

 

<section class="layout position">
         <style>
             .layout.position article div{
                 position: absolute;
             }
             .layout.position .left{
                 left: 0;
                 width: 300px;
                 background-color: #333;
             }
             .layout.position .right{
                 right: 0;
                 width: 300px;
                 background-color: #333fff;
             }
             .layout.position .center{
                 left: 300px;
                 right: 300px;
                 background-color: #666;
             }

         </style>
         <article>
             <div class="left"></div>
             <div class="center">
                 <p>定位</p>
             </div>
             <div class="right"></div>
         </article>
     </section>

 

 文本高度超过自适应div最小高度:

position

 

 第三种利用flex布局:

 文本高度未超过自适应div最小高度:

 <section class="layout flex">
         <style>
             .layout.flex{
                 margin-top: 140px;
             } 
             .layout.flex article{
                 display: flex;
             }
             .layout.flex .left{
                 width: 300px;
                 background-color: #333;
             }
             .layout.flex .right{
                 width: 300px;
                 background-color: #333fff;
             }
             .layout.flex .center{
                 flex: 1;
                 background-color: #666;
             }

         </style>
         <article>
             <div class="left"></div>
             <div class="center">
                 <p>flex</p>
             </div>
             <div class="right"></div>
         </article>
     </section>
flex

 文本高度超过自适应div最小高度:

flex
     <!-- 3.利用flex布局 -->
     <section class="layout flex">
         <style>
             .layout.flex{
                 margin-top: 140px;
             } 
             .layout.flex article{
                 display: flex;
             }
             .layout.flex .left{
                 width: 300px;
                 height: 500px;
                 background-color: #333;
             }
             .layout.flex .right{
                 width: 300px;
                 background-color: #333fff;
             }
             .layout.flex .center{
                 flex: 1;
                 background-color: #666;
                 height: 400px;
             }

         </style>
         <article>
             <div class="left"></div>
             <div class="center">
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
             </div>
             <div class="right"></div>
         </article>
     </section>

 

 第四种利用table属性:

 文本高度未超过自适应div最小高度:

<section class="layout table">
         <style>
             .layout.table article{
                 height: 100px;
                 display: table;
                 width: 100%;
             }
             .layout.table article>div{
                 display: table-cell;
             }
             .layout.table .left{
                 width: 300px;
                 background-color: #333;
             }
             .layout.table .right{
                 width: 300px;
                 background-color: #333fff;
             }
             .layout.table .center{
                 background-color: #666;
             }

         </style>
         <article>
             <div class="left"></div>
             <div class="center">
                 <p>table</p>
             </div>
             <div class="right"></div>
         </article>
     </section>
table

 文本高度超过自适应div最小高度:

<section class="layout table">
         <style>
             .layout.table article{
                 height: 100px;
                 display: table;
                 width: 100%;
             }
             .layout.table article>div{
                 display: table-cell;
             }
             .layout.table .left{
                 width: 300px;
                 height: 500px;
                 background-color: #333;
             }
             .layout.table .right{
                 width: 300px;
                 background-color: #333fff;
             }
             .layout.table .center{
                 background-color: #666;
                 height: 300px;
             }

         </style>
         <article>
             <div class="left"></div>
             <div class="center">
                 <p>table</p>
                <p>table</p>
                <p>table</p>
                <p>table</p>
                <p>table</p>
                <p>table</p>
                <p>table</p>
                <p>table</p>
                <p>table</p>
             </div>
             <div class="right"></div>
         </article>
     </section>
table

 

 第五种利用网格grid布局:

 文本高度未超过自适应div最小高度:

     <section class="layout grid">
         <style>
             .layout.grid article{
                 min-height: 100px;
                 display: grid;
                 grid-template-rows: 100px;
                 grid-template-columns: 300px auto 300px;
             }
             .layout.grid .left{
                 background-color: #333;
             }
             .layout.grid .right{
                 background-color: #333fff;
             }
             .layout.grid .center{
                 background-color: #666;
             }

         </style>
         <article>
             <div class="left"></div>
             <div class="center">
                 <p>grid</p>
             </div>
             <div class="right"></div>
         </article>
     </section>
grid

 文本高度超过自适应div最小高度:

<!-- 5.利用grid属性 -->
     <section class="layout grid">
         <style>
             .layout.grid article{
                 min-height: 100px;
                 display: grid;
                 grid-template-rows: 100px;
                 grid-template-columns: 300px auto 300px;
             }
             .layout.grid .left{
                 background-color: #333;
             }
             .layout.grid .right{
                 background-color: #333fff;
             }
             .layout.grid .center{
                 background-color: #666;
             }

         </style>
         <article>
             <div class="left"></div>
             <div class="center">
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
             </div>
             <div class="right"></div>
         </article>
     </section>
grid

 

根据以上示例,我们可以总结他们各自存在什么优缺点:

当div中的文本元素的高度超过容器div的高度时,
1.定位,网格布局不能撑高所在div的高度
2.浮动只能撑高所在div的高度
3.flex,和表格可以撑高整个div的高度
4.但是table不能设置每列的高度,始终高度都是一致的,为所写div的最大高度,
5.所以flex布局是最好的自适应布局

2.上下高度固定,中间自适应

 第一种利用table:

 <section class="layouttop">
         <style>
             /*没有文本内容时,盒子需要被撑开,每个盒子都要被赋予100%的高度*/
             html,body,.layouttop,.layouttop article{
                 height: 100%;
             }
             /*可以被内容撑开*/
             .layouttop article{
                 display: table;
                 width: 100%;
             }
             .layouttop article div{
                 display: table-row;
             }
             .layouttop .top{
                 height: 200px;
                 background-color: #787878;
             }
             .layouttop .bottom{
                 height: 200px;
                 background-color: #565656;
             }
             .layouttop .middle{
                 background-color: #cd4d5d;
             }
         </style>
         <article>
             <div class="top">11</div>
             <div class="middle">
                 <p>table</p>
                 <p>table</p>
                 <p>table</p>
                 <p>table</p>
                 <p>table</p>
                 <p>table</p>
             </div>
             <div class="bottom">22</div>
         </article>
     </section>
table

 第二种利用flex:

     <!-- 上下高度固定,中间自适应 -->
     <section class="layouttop">
         <style>
             /*flex上下自定义定位中,每个盒子都要被赋予100%的高度*/
             /*html,body,.layouttop,article{
                 height: 100%;
             }*/
             /*可以被内容撑开*/
             .layouttop article{
                 display: flex;
                 flex-direction: column;
             }
             .layouttop .top{
                 height: 100px;
                 background-color: #787878;
             }
             .layouttop .bottom{
                 height: 100px;
                 background-color: #565656;
             }
             .layouttop .middle{
                 flex: 1;
                 background-color: #cd4d5d;
             }
         </style>
         <article>
             <div class="top"></div>
             <div class="middle">
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
                 <p>flex</p>
             </div>
             <div class="bottom"></div>
         </article>
     </section>
flex

 第三种利用绝对定位布局:

 <!-- 通过绝对定位和固定定位实现 -->
     <section class="layouttop">
         <style>
             /*flex上下自定义定位中,每个盒子都要被赋予100%的高度*/
             /*html,body,.layouttop,.layouttop article{
                 height: 100%;
             }*/
             /*可以被内容撑开*/
             .layouttop .top{
                 height: 100px;
                 top: 0;
                 background-color: #787878;
                 position: fixed;
                width: 100%;
             }
             .layouttop .bottom{
                 height: 100px;
                 bottom: 0;
                 background-color: #565656;
                 position: fixed;
                width: 100%;
             }
             .layouttop .middle{
                 top: 100px;
                 bottom: 100px;
                 background-color: #cd4d5d;
                width: 100%;
                 position: absolute;
                 /*当文本内容超出自定义高度时,出现自定义滚动条*/
                 overflow: auto;
             }
         </style>
         <article>
             <div class="top"></div>
             <div class="middle">
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
                 <p>position</p>
             </div>
             <div class="bottom"></div>
         </article>
     </section>
position

第四种利用grid网格布局:

grid

转载于:https://www.cnblogs.com/JiaFanFan/p/10441775.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: <div style="width:100%;"> <div style="float:left;width:30%;">左栏内容</div> <div style="float:left;width:40%;margin-left:2%;">中间栏内容</div> <div style="float:right;width:30%;">右栏内容</div> </div> ### 回答2: 可以使用HTML和CSS来创建一个三栏布局,其中左右两列的宽度固定,而中间列的宽度自适应。 首先,我们需要使用HTML创建一个三列的容器,可以使用`<div>`标签来实现。代码如下: ```html <div class="container"> <div class="left-column"></div> <div class="middle-column"></div> <div class="right-column"></div> </div> ``` 接下来,我们可以使用CSS来设置样式,以实现固定宽度和自适应宽度的效果。首先,我们设置三列容器的样式,将其设置为一行布局,并使用`display: flex;`属性,使其自动伸缩。同时,设置容器的宽度为100%,以确保占据整个容器的宽度。代码如下: ```css .container { display: flex; width: 100%; } ``` 接下来,我们为左中右三列设置样式。设置左右两列的宽度为固定值,例如200像素。代码如下: ```css .left-column { width: 200px; } .right-column { width: 200px; } ``` 为了让中间自适应宽度,我们可以使用`flex-grow`属性,设置中间列的伸缩比例为1,使其自动填充剩余的宽度。代码如下: ```css .middle-column { flex-grow: 1; } ``` 最后,为了使布局更加美观,我们可以为三列容器和内部的列添加一些样式,例如背景色和内边距。代码如下: ```css .container { background-color: #f1f1f1; padding: 10px; } .left-column, .middle-column, .right-column { background-color: #e0e0e0; padding: 10px; margin: 5px; } ``` 通过这样设置,我们就可以得到一个具有固定宽度左右列和自适应宽度中间列的三栏布局。 请注意,以上代码只是一个示例,你可以根据自己的需求进行调整和修改。 ### 回答3: 要实现一个左右宽度固定中间自适应的三栏布局,可以使用HTML和CSS进行编写。 首先,在HTML中,我们可以使用```<div>```标签来创建三个元素,分别代表左栏、中栏和右栏。例如: ``` <div class="left-column">左栏内容</div> <div class="middle-column">中栏内容</div> <div class="right-column">右栏内容</div> ``` 然后,我们需要使用CSS来设置这些元素的样式。首先,设置左栏和右栏的宽度固定,可以使用```width```属性进行设置,例如: ``` .left-column { width: 200px; } .right-column { width: 200px; } ``` 接下来,设置中栏的宽度自适应,可以使用```flexbox```布局来实现。在CSS中,将父元素设置为```display: flex;```,然后将中栏设置为```flex-grow: 1;```,这样中栏的宽度将会自适应。例如: ``` body { display: flex; } .middle-column { flex-grow: 1; } ``` 最后,可以添加一些样式来美化布局,如设置背景颜色、边框样式等。 完整的HTML和CSS代码如下: ``` <!DOCTYPE html> <html> <head> <style> .left-column { width: 200px; background-color: lightgray; } .middle-column { flex-grow: 1; background-color: white; } .right-column { width: 200px; background-color: lightgray; } </style> </head> <body> <div class="left-column">左栏内容</div> <div class="middle-column">中栏内容</div> <div class="right-column">右栏内容</div> </body> </html> ``` 通过上述HTML和CSS代码,我们实现了一个左右宽度固定中间自适应的三栏布局

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值