css三列布局

标签: 随笔 | 发表时间:2012-11-20 16:39 | 作者:[email protected] (wind)
出处:http://www.callmewind.info/

   web平面设计中有一个既经典又基础的问题(据说很多公司面试都考):三列布局问题,就是一个大盒子,里面竖直再分三块小盒子并排,其中左边的盒子和右边的盒子固定宽度,中间的盒子自适应宽度,无乱怎么样放大缩小浏览器都不会变形。这两天研究了一下这个问题,默认父容器是body,1:设置三个盒子都左浮动且宽度都是33.3%,不行。2:设置三个盒子都左浮动且宽度都是整数的px,一直试到三个盒子沾满整个页面宽度,这明显不行,浏览器一缩小就变形了,这里绝对不能用固定的宽度。

  网搜发现其实有两个很好的方法解决这个问题:

  1:css2传统方法,让第一个盒子左浮动,第二个盒子右浮动,且都设置好固定宽度,中间第三个盒子只设置一下高度,不要设置宽度或者设置宽度为auto,中间盒子就会去自适应宽度,看一下代码

<html>

<head>
<style type="text/css">
body{margin:0;}
.left{
width:180px;
height:500px;
float:left;
background:#F39;
}
.right{
width:300px;
height:500px;
float:right;
background:#F99;
}
.center{
width:auto;
 height:500px;
 margin-left:190px;
margin-right:310px;
background:#33C;
}
</style>
</head>

<body>
<div class="left"></div>
<div class="right"></div>
<div class="center"></div>
</body>
</html>

  这里要绝对要注意的就是center这个盒子的margin-left和margin-right,他们是到父容器的左边框和右边框的距离,不是到左边盒子和右边盒子的距离,意思就是center这个盒子的margin-left=190一定要大于left这个盒子的宽width=180,不然他们就会重叠。同理右边

2:用css3的box-flex属性,css3增加了这个属性之后,更方便了,可以不用定义浮动了

 

<html>

<head>
<style type="text/css">
body{margin:0;}
.box{
display:box;
display:-webkit-box;
display:-moz-box;
background-color:#fff;
width:auto;
height:500px;
border:1px solid #333;
}
.left{
background-color:#f39;
width:182px;
height:500px;
}
.right{
background-color:#f99;
width:300px;
height:500px;}
.center{
background-color:#33c;
box-flex:2;
-moz-box-flex:2;
-webkit-box-flex:2;
margin:0 10px;}</style>
</head>

<body>

<div class="box">
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>

</div>
</body>
</html>

这里要注意的是因为css3还没有统一,各个浏览器在 box-flex属性上有自己的定义方式, -moz-box-flex是火狐的, -webkit-box-flex是chrome和safari的,必须全部定义,假如定义chrome的,到了火狐上就不兼容没效果。 box-flex属性,盒子固定宽度就以固定宽度显示,如果没有固定宽度,就自适应宽度,比如 box-flex:2就是自适应,当然2的意思就是父容器总宽度的2份,假如左盒子是1中间是2右边是2,父容器总宽度为500PX,那么左边就是100PX中间是200PX右边是200PX。当然,这里的 box-flex:2可以随便写,因为左右盒子的宽度固定了,浏览器会认为中间盒子的宽度就是剩下的宽度了,设置一个2不起作用了。还有一个要注意的是,这里要注意盒子的顺序,严格的左中右来,如果像第一种方法那样先引用right样式在引用center样式的话,就会变成,左盒子和中盒子固定宽度,右盒子自适应宽度了

看看他们的效果是一致的:

这下无论怎样调整浏览器大小,无论页面在什么样的电脑屏幕下显示都不会变形了。

大家也可以想想一行两列布局这么做?左盒子固定宽度,右盒子自适应宽度,这个应该更简单。

 

 

您可能也喜欢:

资讯:早期的宇宙或许只有二维

Winsock配置出错导致不能正常上网

教你如何访问墙外世界——GAE教程

用二维码下载最新美剧

谷歌浏览器Chrome崩溃解决方法
无觅

相关 [css 布局] 推荐:

css三列布局

- - Wing的风言风语
   web平面设计中有一个既经典又基础的问题(据说很多公司面试都考):三列布局问题,就是一个大盒子,里面竖直再分三块小盒子并排,其中左边的盒子和右边的盒子固定宽度,中间的盒子自适应宽度,无乱怎么样放大缩小浏览器都不会变形. 这两天研究了一下这个问题,默认父容器是body,1:设置三个盒子都左浮动且宽度都是33.3%,不行.

一览CSS布局标准

- - Kejun's Blog
回顾历史,CSS1于1996.12.17发正式版,它是为辅助HTML的展现效果而生的. 1998.5.12,CSS2发正式版. 随后发修订版CSS2.1,纠正了CSS2中的一些错误. 注意从CSS2起,CSS的作用就不是辅助展现了,变为全全负责展现. (注:当年 CSS2的勘误表有兴趣可以看看).

CSS技巧荟萃:了解CSS页面布局和加载流程

- - 前端观察
如果你开发web相关应用或者网站的话,肯定知道CSS对于页面布局的重要性. 在本篇CSS技巧中我们将介绍页面加载的流程来帮助你更好的实现页面布局. 在我们开始正式的介绍页面流程前,我们需要简单了解几种不同类型的html元素,以及它们的缺省显示方式. 这里我们主要重点介绍两个类型的元素:. 如果大家关心html5的话,你应该知道在HTML5中也包含了几个新的元素,例如,section,article等等,但是仍旧遵循这里我们介绍的显示类型.

Semantic:来自未来的CSS布局框架

- 小宇 - 雷锋网
CSS网格框架可以让你享受轻松的生活,但这依然无法掩盖它们的不足. 让我们感到幸运的是,先进技术为我们引入了新的方法去布局网页. 在我们前往了解先进技术前,我们必须首先了解当前影响CSS网格样式的三个看似不可克服的缺陷. 这是我从“纯化论者”口中听到过的最大的抱怨,自我在两年前创建1KB CSS Grid框架开始,CSS网格系统就规定标记和描述必须在一起.

CSS布局中一个简单的应用BFC的例子

- - 阿里巴巴(中国站)用户体验设计部博客
上文中我们讲述了在一个星球上发生的有关overflow:hidden的故事. 这次,我们再欣赏下她另一个迷人之处. 而是由于她会引起 BFC(Block Formatting Context). BFC(Block Formatting Context),简单讲,它是提供了一个独立布局的环境,每个BFC都遵守同一套布局规则.

页面架构HTML+CSS ●▽● 各种布局各种实现

- - SegmentFault 最新的文章
(1)清除浏览器默认样式. (1)项目开发初期就定义好. (2) reset.css 在引入的时候一定要放在第一位. (3)不同的产品 reset.css不一样. 3.table合并边框间距. table { border-collapse: collapse; // 合并边框 border-spacing: 0; //边框间距.

[常用布局]左栏固定宽度,右栏自适应的两种纯CSS方法

- - 蓝飞技术部落格
其一,左栏固定宽度,右栏自适应之绝对定位法:. 左栏固定宽度,右栏自适应之绝对定位法. 由于左栏使用绝对定位,脱离了文档流,因此有一个缺陷,即当左栏高度大于右栏时,无法将container撑开,这个缺陷单单只看两栏布局并没有太大影响,但如果两栏布局下面有一个底栏,就会出现底栏与左栏重叠的情况:.

CSS图形

- GLORY - 酷壳 - CoolShell.cn
下面的示例展示了使用纯CSS制作的各种图形,你可以自由地修改文中的CSS代码. 经测试,IE9, Chrome, FF, Safari都可以正常显示. 五角星形 via Kit MacAllister. 心形 via Nicolas Gallagher. 无穷大 via Nicolas Gallagher.

用 Compass 寫 CSS

- Jay - Blog.XDite.net
最近在開發一個新產品,整體來說應該是接近寫完了,不過越接近完工,抓 IE 系列的 bug 就越是挫折. 朋友 @evenwu 就來洗我要不要換成 Compass,說這東西超神奇,超好用,還可以把 IE bug 殺光光. 其實之前就久仰 Compass 大名了,只是文件實在看起來太他媽的眼花繚亂,因為專案進度一直在跑,不太敢貿然換掉寫 CSS 的方式.

CSS 入门

- - 博客 - 伯乐在线
级联样式表非常简单,也就是 (X)HTML 网页之上的分层设计. 使样式表 “级联”,这样您就可以跨站点应用它 — 也就是说,将样式应用到网站,它就会自行应用到每个网页的每个元素. ●XHTML:可扩展 HTML. 对于网站,将数据与设计分离是一个重要的概念:数据使用 (X)HTML 发送到 浏览器,而设计使用 CSS 应用到该数据.