三栏自适应布局方法
来源:互联网 发布:同道伟业大数据 编辑:程序博客网 时间:2024/06/01 07:34
前言:本文讲述的是两边栏宽度固定位200px,中间栏宽度自适应的布局,要想三栏宽度都自适应,将固定宽度改为百分比即可;
1.绝对定位法
这或许是三种方法里最直观,最容易理解的:左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离。于是实现了三栏自适应布局。
HTML:
<div id="" class="left">左</div> <div id="" class="main"></div> <div id="" class="right">右</div>
CSS:
*html, body{ margin:0; height:100%; } .left,.right{position:absolute;width:200px;height:100 background-color:#ff6633; top:0;} .left{left:0;} .right{right:0;} .main{height:100%; background-color:#6600ff;margin:0 210px;}
这里的左中右三个div的顺序是可以任意调整的,这与剩下的两中方法就不一样了,需要注意一下。
此方法的优点是,理解容易,上手简单,受内部元素影响而破坏布局的概率低,就是比较经得起折腾。
缺点在于:如果中间栏含有最小宽度限制,或是含有宽度的内部元素,当浏览器宽度小到一定程度,会发生层重叠的情况。然而,一般情况下,除非用户显示器分辨率宽度>=1600像素,否则用户不会把浏览器缩小到1000像素以下的,所以该缺陷危害指数3.
2.自身浮动法
此方法代码最简单。应用了标签浮动跟随的特性。左栏左浮动,右栏右浮动,主体直接放后面,就实现了自适应。
HTML:
<body> <div id="" class="left"></div> <div id="" class="right"></div> <div id="" class="main"></div> </body>
CSS:
<style type="text/css"> html, body{ margin:0; height:100%; } .left,.riht{ width:200px; height:100%; background-color:#ff6633; } .left{ float:left;} .main{height:100%; background-color:#6600ff;} .right{float:right;} </style>
此方法的优点是:代码足够简洁与高效
不足在于:中间主体存在克星,clear:both属性。如果要使用此方法,需避免明显的clear样式。
3.margin负值法
此方法是利用float+负margin,相对比较难难理解,所以在说之间现讲一下float情况下负margin值的表现:对于设置了浮动的元素,设置 margin 为负值的时候,表现如下:
如果设置的 margin 的方向与浮动的方向相同,那么,元素会往对应的方向移动对应的距离。
比如:
.elem { float: right; margin-right: -100px;}
该元素则会向右移动 100px。
如果设置 margin 的方向与浮动的方向相反,则元素本身不动,元素之前或者之后的元素会向钙元素的方向移动相应的距离。
比如:
.elem { float: right; margin-left: -100px;}
则位于该元素左边的元素则会向右移动 100px,同时覆盖在该元素上。
示例演示一下:
HTML代码:
<body> <div id="" class="frist">1</div> <div id="" class="second">2</div> </body>
CSS代码:
html,body{margin:0;} .frist, .second{ float:left; width:100px;height:100px; background-color:#ff3333; } .second{ background-color:#9966ff;}
刚开始效果是这样的:
1.现在
.frist{margin-left:-50px;}
变成这样
2.现在
.frist{margin-right:-50px;}
效果和上图一样,但原理是 div1没动,div2元素向左移动了50px,并且覆盖了1元素,可以想象为div1将自己50px的空间让了出来。
好了,这下将最后的分栏布局:
HTML代码:
<div id="" class="main"> <div id="" class="body"></div> </div> <div id="" class="left">zuo</div> <div id="" class="right">YO</div>
CSS代码:
html, body{ margin:0; height:100%; } .main{width:100%;height:100%;float:left;} .main .body{margin:0 210px;background- color:#ff9933;height:100%;} .left,.right{float:left;background-color:#ff0099;width:200px;height:100%;} .left{margin-left:-100%;} .right{margin-left:-200px;}
我的见解:此时的main left 和right全都是左浮动,因此left和right可以在main的上空。
此方法的优点:三栏相互关联,可谓真正意义上的自适应,有一定的抗性——布局不易受内部影响。
缺点在于:相对比较难理解些,上手不容易,代码相对复杂。出现百分比宽度,过多的负值定位,如果出现布局的bug,排查不易。
本文参考张鑫旭个人网站
- 三栏自适应布局方法
- 三栏网页宽度自适应布局方法
- 三栏网页宽度自适应布局方法
- 三栏布局----自适应
- 三栏自适应布局
- 三栏布局,中间自适应,左右固定实现方法
- 三栏网页宽度自适应布局方法,margin负值法
- 三栏布局,中间自适应!
- CSS三栏自适应布局
- css三栏布局,中间自适应
- 实现三栏布局中间自适应
- div三栏中间自适应布局
- 使用css实现三栏自适应布局
- 前端经典三栏布局,中间自适应。
- 三栏布局:左右固定,中间自适应
- 三栏自适应布局实现(左右固定宽度,中间自适应)
- CSS三栏布局(两边固定中间自适应宽度)的方法
- CSS三栏布局(两边固定中间自适应宽度)的方法
- springmvc接口支持跨域请求
- JVM内存设置多大合适?Xmx和Xmn如何设置?
- NOIP 2017 总结
- aggregates not allowed in where clause
- 42. Trapping Rain Water
- 三栏自适应布局方法
- 你的名字。
- 容易被忽略、轻视,却可能影响编程学习的计算机基础知识
- java用Dom4j来解析XML
- centos7安装mysql5.7操作步骤
- docker: No port specified: 8763:<empty>
- vBRAS控制面微服务化
- 关于tree命令的编写
- docker-compose的使用