页面布局
题目:假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应
1、float 绝对定位 flex-box 表格布局 网格布局
2、怎么去延伸拔高这些点
初始化样式
html *{
padding:0;
margin:0;
}
一、float方法
设置min-height:100px;
左width:300px; float:left
右width:300px; float:right
中间background:red
二、position
左中右都是position:absolute;
左 left:0; width:300px;
中间 left:300px; right:300px;
右 right:0; width:300px;
三、flex-box
.left-center-right{display:flex} ---把容器设为flex布局
左 width:300px;
中 flex:1;--中间自适应的原理,中间等于1(剩下所有的宽度都给它)
右 width:300px;
四、表格布局
.left-center-right{display:table;height:100px}
.left-center-right div{display:table-cell;}
左width:300px; background:blue;
中bacground:red;
右width:300px; background:yellow;
五、网格布局
.left-center-right{
display:grid; //容器为网格
width:100%;
grid-template-rows:100px; //行高100px
grid-template-columns:300px auto 300px; //3栏就是3列
}
*怎么延伸:
1.这5种方案各自有什么优点和缺点?
float:
缺点:清除浮动,浮动以后脱离文档流,处理不好会带来很多问题,本身的局限性;
优点:兼容性比较好;把清除浮动和周边元素的关系处理好的话
position绝对定位:
好处:快捷,配合js使用不容易出问题;
缺点:布局已经脱离文档流了,就意味下面所有子元素也必须脱离文档流
,导致了这个方案的可使用性比较差。
flex布局:
为了解决上面两个方案的不足,比较完美(IE8不支持flex)
表格布局:
优点:轻易的做到,表格兼容性非常好,flex解决不了的(IE8不支持flex),
想实现同样效果可以用表格。
缺点:历史的诟病以外,其中某一个单元格的高度超出了的时候,
两侧的单元格也是要调整高度的;有时候的场景是不需要同时增高的;
网格布局:
可以做很多复杂的事情,代码量简化很多;(做为一个新的技术)
2.如果把假设高度已知去掉,考虑纵向,左右内容撑高了,中间也需要撑高; 哪个可以适用,哪个不可以用了?
flex 和表格布局是可以通用的;
float:为什么中间左右内容都超出来了?
float的基本原理,它的内容向左浮动的时候,被左侧的块挡住了,
所以它的文案在左边块的右边排的,当内容超出以后,它发现左侧没有遮挡物,
也就是没有了float元素,就会向左排;
(解决让文字在中间超出部分不转到左边,创建bfc)
3.这5中方案的兼容性如何,业务中选出最优的方案?
-------------页面布局小结:----------------
1.语义化要到位
2.页面布局理解深刻
3.css基础知识扎实
4.思维零花且积极上进
5.代码书写规范
--------------页面布局的变通---------------------
1.三栏布局
左右宽度固定,中间自适应
上下高度固定,中间自适应
2.两栏布局
左宽度固定,右自适应
右宽度固定,左自适应
上高度固定,下自适应
下高度固定,上自适应