网络编程
位置:首页>> 网络编程>> 网页设计>> [翻译]寻找圣杯 In Search of the Holy Grail(3)

[翻译]寻找圣杯 In Search of the Holy Grail(3)

作者:abdvl 来源:Alipay UED 发布时间:2008-11-12 13:10:00 

标签:三栏,圣杯,负边距,css

第三步:把左边栏放在左边

现在我们要干的是怎么样让这三栏在一行,中间的容器已经完全符合我们的要求了,我们只需要关注剩下的两个,先从左边的开始。

需要两步让左边栏在左边.第一步:让他以100%的负margin(margin-left: -100%;)穿过中间的层,记住一定要用100%,因为中间的层的宽度是100%.

#left { 
  width: 200px;        /* LC width */ 
  margin-left: -100%;  
}

现在左边栏和中间栏重合,左边重合,右边栏浮动过来(虽然还是掉下去了),现在的结果变成了下面的样子:


第二步:现在要把左边栏拉到正确的位置,我们使用相对定位来抵消左边栏的宽度

#container .columns { 
  float: left; 
  position: relative; 

#left { 
  width: 200px;        /* LC width */ 
  margin-left: -100%;  
  right: 200px;        /* LC width */ 
}

因为设置了right: 200px;所以左边栏被中心层的右边推远了200px,刚好到了左边。(The right property pushes it 200px away from the right edge; that is, to the left.)现在左边栏刚好完美的到了他应该到的位置

第四步:把右边栏放到右边

剩下的事就是把右边栏放在右边,需要把他拉出容器放在容器的padding上,我们依然利用负边距。

#right { 
  width: 150px;          /* RC width */ 
  margin-right: -150px;  /* RC width */ 
}

现在所有的东西都在他该在的位置上了,没有谁”掉队”,呵呵。

第五步:补充设计

如果浏览器重新调整大小,中间的容器小于左边栏的时候,整个布局都会被破坏掉,所以要设置一个min-width来保持我们的布局不被片破坏,虽然在IE6上这个属性是不起作用的,但是没关系。

body { 
  min-width: 550px;  /* 2x LC width + RC width */ 
}

没有任何一个布局是不要对IE增加一些额外的工作就能完成的。(-_-!) 在IE6中负边距会使左边栏离的太远(在全宽浏览下),我们要用右边栏的宽大把他向右拉回来。并且用* html来屏蔽其他浏览器执行他.

* html #left { 
  left: 150px;  /* RC width */ 
}

至于为什么要用右边栏的宽度,要牵涉到一些算法。当然我不会用去解释这些,我们只要知道这样是起作用的,我们甚至可以认为这个是IE的众多”魔法”之一。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com