三栏宽度自适应垂直等高布局思考

Filed under: Css |
Posted on

三列宽度自适应垂直等高布局

这个图别看简简单单几个色块,真正实现也不见得有多容易,得看你考虑到哪些东西。大概例子已经做出来了,提供下载

由于上下head跟foot两个色彩是单色的,所以要考虑自适应各种分辨率的屏幕,自适应分辨率不是百分百就够的,div的百分百布局会有很多问题。另一个是中间内容需要宽度自适应,左边side1是固定宽度,右边的side2也是固定宽度。

还有一个应该是比较难的一个问题,就是高度自适应,要保证side1红色块内容增多的时候,右边main,side2的色块也要跟着一起延伸,右边side2的内容增多,左边红色块也要跟着一起延伸,中间main的内容增加,红色块依然要继续延伸。先前也发过 关于 高度百分百引发的思考 ,有兴趣的可以去拍砖。

这个即使是堪称是圣杯布局 都没有去做到这个等高自适应,都是靠内容自适应的。

也许红色块的背景可以使用图片来垂直平铺下来,如果用table来布局那是再好不过了,不要排斥table,它在很多时候可以更方便的帮你布局。就连google得很多产品都在使用 table做主布局,你还想怎样?

如果采用position跟固定高度,就可以很快的定位,但是如果内容超出,会浮于foot层上面。

有兴趣的可以把上面的图做一下,你就会明白原来不是那么容易的。

这里有几种比较巧妙的方法 点击这里查看

有一个很巧妙的用了 border-right 来代替side1 红色块的延伸 比较巧妙的设计。

下面我罗列了一些在布局中,你可能会遇到的问题,或者一些技巧跟习惯分享一下。

1.用padding-bottom:100000px;margin-bottom:-100000px以后会导致opera overflow:hidden 变高

2.float:left 以后可以通过 margin-left:-100% 定位在左边,但是在ie8下会导致下面的foot不能延伸。

3.float 会导致背景色去掉,解决的办法是让父容器也float。

4.如果是一个 ul li 还包含着一个ul li ,float跟position 会导致第二级 ul li 背景图没法显示,主要是因为用了继承父容器的宽度。重新定义一个宽度可以解决ie6问题。也许你不会遇到也说不定。

5.tfoot 要正确嵌套使用,在tbody之上。

<table>
  <thead>
    <tr>
      <td></td>
    </tr>
  </thead>
  <tfoot>
    <tr>
      <td></td>
    </tr>
  </tfoot>
  <tbody>
    <tr>
      <td></td>
    </tr>
  </tbody>
</table>

6.

color:#ffffff\0; 

不止是ie8的hack ,firefox 3.0.1 也支持。

屏蔽ie8的hack是
ie6 ie7 firefox 支持

.class {/*/*/color:#ffffff;/* */}

7.z-index 负数会导致 ie下 链接没法点击

8.color:#fff;不是所有浏览器都支持这种写法,当然在主流浏览器可以,但是这样写并没有什么好处。

第一张图的 三列等高宽度自适应例子,无论哪一列内容多的时候,左边,右边,跟中间的背景色也都会垂直平铺下来,用来学习下还是不错的。我已经通过我的想法结合圣杯的做法做出来了,可以点击这里下载

10 Responses to “三栏宽度自适应垂直等高布局思考”

  1. 泡面 Says:

    这布局看上去有点复杂~貌似国外如果这种布局的话,不设置背景色不会看出三个块等高的问题。

    o仔 回复:

    @泡面, 是啊,如果不设置背景色的话,就感觉没有什么问题了~~但是真正去思考整个色块的话,还是有很多东西要考虑的。。

  2. daniel Says:

    研究的太多很费劲的,不过实际应用起来,这种的不是太多。

    o仔 回复:

    @daniel, 主要还是过程,另外有很多时候,可能客户就有这样的需求,多学点东西还是好的,就像你现在每天学习英语一样,你跟中国朋友讲话的时候会用英语吗?

  3. Firm Says:

    呵呵,等你研究好了,不介意让我学习下不

    o仔 回复:

    @Firm, 呵呵,刚刚已经把想法做出来了,在文章里有提供下载,谢谢关注。

  4. web标准广州第一次交流会–小结 | o仔札记 -- W3C标准下的页面构建 Says:

    [...] 第二个问题是自适应三列垂直等高布局该不该用table?因为我发现垂直三栏布局到目前为止,就是堪称是圣杯的三列自适应布局都没办法做到完美,没法做到等高,它只能根据内容自动伸展,左边蓝色部分的高度是跟红色部分不能同样的。另外一个就是该布局在ie8下会出现foot不能下来的情况,我是用ietest的ie8试的,估计跟正式版还是比较像的。 点击这里 可以看下效果。 如果采用table,它是可以符合标准,并且可以有效的自适应,这点是div没法比的。目前谷歌的很多产品,例如,www.google.com/ig/,gmail…在别人都摒弃掉table布局的时候,只有Google还是采用了table布局,可见table布局也必定有它的优势所在,特别是在自适应宽度高度方面。 [...]

  5. Firm Says:

    呵呵,谢谢啦

    o仔 回复:

    @Firm, 不客气,里面还有个小瑕疵,就是没考虑在ie6下的最小宽度,可以用CSS表达式去解决。

    o仔 回复:

    @Firm, 不好意思,你第一个下载的那个例子有点问题,我已经做了更新,有需要可以重新下载。

Leave a Reply