日期:2014-01-23 浏览次数:21094 次
前言:在前面四篇文章中,我引见了九宫格的原理及一个使用案例,本来曾经告一段落了,但是那个规划还是有一定的局限性的。其最大的局限是不能使用四角圆角外面是通明的图片,而作为一个界面规划方式,如果不能使用通明的外圆角,那么这种规划的可扩展性就会大受影响,不能最大化限制地得以推广。本文就是要从基本上处理这个问题。
我知道这个问题的本源在于:两头的左左边框列垂直同高产生的,由于它们的父级容器是box这个总容器,而不是一个独立的容器,而底部的左右两个角容器是向上负偏移到它们的上面的,遮挡住了背景色。所以当圆角容器中的图片采用半通明或通明的图片时,其通明部分就会显示出左右两侧边框的图片背景出来。
在制造前面的《牢不可破的九宫格规划》的模型时,我就曾经发现了这个问题,当时制造圆角图片也是采用的通明的圆角图片,可是后来发现这个问题后,为了减少麻烦,我又将通明的圆角片的通明部分加上一个和总容器相反的背景色,来避免了这个问题。但这个方法最终不是处理的终极办法,在我们的日常任务中,采用半通明的圆角来定制界面是很有必要的,因此在那篇文章中仅仅只是逃避了问题,而没有从基本上处理问题。在文章发布之后,终于有细心的朋友在试用之后,提出这个问题,哈哈,看看终于是无法偷懒来回避这个问题了。
知道了问题的本源后,要处理它也是一件简单的事情。
由于我这篇文章是建立在《牢不可破的九宫格规划》这篇文章的基础上的,如果还没有看过那篇文章的朋友,不妨先看了它后再来看这篇文章。这将有助于你的消化!
看来,要处理这个问题,我需求将两头部分作一些结构上的修正。由于我希望它的左左边框容器是和内容区是垂直同高的,也就是当内容区的文字内容的高度发生变化时,其左左边框的高度跟着同步调整其高度。这就是一个典型的三列同高规划。但与平时看到的三列规划有点不同的是,我希望两头的内容区的宽度填满整个两头的宽度,但它不是100%的宽度,而是100%减去左右两列边框的宽度,而这个宽度并不是一个百分比,它们都是有固定像素值的。这需求运用到我在上一篇文章中提到的方法来进行的处理。
为此我需求改变一下原来的结构:
【结构层】
我给两头的左中右三个容器添加一个父级容器,并给它定义一个类名middle,那么,如今的两头区域的结构应该是这样的:
<div class="middle">
<span class="m_l"></span>
<span class="m_r"></span>
<div class="context">
<p>内容区< p>
</div>
</div>