Dreamweaver教程 FrontPage教程 Flash教程
  • CSS教程
  • javascript教程
    当前位置:教程 > 网页制作 > CSS教程 > 正文

    无hack并支持透明圆角框的全兼容九宫格布局

    编辑:教程网 来源:网络 时间:2011年06月26日 15:43
    CSS布局教程:九宫格的基本布局 九宫格布局的重点和难点 设计一种三层分离的完美九宫格结构 九宫格应用案例:极酷网页播放器

    前言:在前面四篇文章中,我介绍了九宫格的原理及一个应用案例,本来已经告一段落了,但是那个布局还是有一定的局限性的。其最大的局限是不能应用四角圆角外面是透明的图片,而作为一个界面布局方式,如果不能应用透明的外圆角,那么这种布局的可扩展性就会大受影响,不能最大化限度地得以推广。本文就是要从根本上解决这个问题。

    我知道这个问题的根源在于:中间的左右边框列垂直同高产生的,因为它们的父级容器是box这个总容器,而不是一个独立的容器,而底部的左右两个角容器是向上负偏移到它们的上面的,遮挡住了背景色。所以当圆角容器中的图片采用半透明或透明的图片时,其透明部分就会显示出左右两侧边框的图片背景出来。

    在制作前面的《 九宫格布局的重点和难点 》的模型时,我就已经发现了这个问题,当时制作圆角图片也是采用的透明的圆角图片,可是后来发现这个问题后,为了减少麻烦,我又将透明的圆角片的透明部分加上一个和总容器相同的背景色,来避免了这个问题。但这个方法最终不是解决的终极办法,在我们的日常工作中,采用半透明的圆角来定制界面是很有必要的,因此在那篇文章中仅仅只是逃避了问题,而没有从根本上解决问题。在文章发布之后,终于有细心的朋友在试用之后,提出这个问题,哈哈,看看终于是无法偷懒来回避这个问题了。
    知道了问题的根源后,要解决它也是一件简单的事情。

    因为我这篇文章是建立在《 九宫格布局的重点和难点 》这篇文章的基础上的,如果还没有看过那篇文章的朋友,不妨先看了它后再来看这篇文章。这将有助于你的消化!

    看来,要解决这个问题,我需要将中间部分作一些结构上的修改。因为我希望它的左右边框容器是和内容区是垂直同高的,也就是当内容区的文字内容的高度发生变化时,其左右边框的高度跟着同步调整其高度。这就是一个典型的三列同高布局。但与平时看到的三列布局有点不同的是,我希望中间的内容区的宽度填满整个中间的宽度,但它不是100%的宽度,而是100%减去左右两列边框的宽度,而这个宽度并不是一个百分比,它们都是有固定像素值的。这需要运用到我在上一篇文章中提到的方法来进行的解决。

    为此我需要改变一下原来的结构:

    【结构层】

    我给中间的左中右三个容器增加一个父级容器,并给它定义一个类名middle,那么,现在的中间区域的结构应该是这样的:

    <div class="middle">
    <span class="m_l"></span>
    <span class="m_r"></span>
    <div class="context">
    <p>内容区< p>
    </div>
    </div>

    【样式层】

    我们再定义一下middle的样式,我们将原来的box的overflow:hidden;取消,将它加在middle容器上,让超出的部分截出隐藏。

    .box{width:50%;margin:50px auto 0;background:#fff; }
    .middle{overflow:hidden; zoom:1; }

    这时需要特别指出的是,如果只是将middle这个容器设置为overflow:hidden的话,那么这个模型可以在IE6以上的所有浏览器中通过,但对于IE6来说,问题依然存在(你可以将此句删除,然后在IE6测试看看。)。最后加上zoom:1才能完美地解决这个问题。

    基础模型的效果图如下:

    无hack并支持透明圆角框的全兼容九宫格布局
    图一

    此基础案例也包括在下面的下载压缩包中。你可以下载到本机进行测试。

  • 原文来自 教程网 转载请注明:http://www.websmill.com/wangye/css/6918.html

  • 上一篇:CSS代码:@import和link调用的区别
  • 下一篇:用CSS调整scrollbar(滚动条)换色