我有一個使用外面兩列,並在設計中的標題部分外柱和下面兩列,像這樣的一個:使柱的高度相等 - 築巢
**************************
* header *
**************************
| | |
| | |
| out1 | out2 |
| | |
| | |
| | |
**************************
* footer *
**************************
**************************
* header *
**************************
| title | |
|________________| |
| | | |
| | | |
| in1 | in2 | |
| | | |
| | | |
| | | |
**************************
* footer *
**************************
現在,一些的列有邊框,所以out2有左邊框,in1有右邊框。整個頁面有一個微弱的大背景平鋪圖像。
我想使列使用jQuery相同的高度,所以列邊框看起來是平等的。
我這樣做的方式是讓外部列的高度相同,然後嘗試使內部列的高度相同,並且嘗試使它們一直伸展到底部他們的in1容器(在out2比out1高的情況下)
難以置信的是out1中的標題部分需要在計算中考慮。
OUT1 OUT2 &包含與layout
類,便於選擇查詢和IN1一個div內,IN2 &標題被包裹一個div內部與類layout
和nested
(嵌套和外之間容易選擇和分化)。
每個佈局容器也有一個div.clear來取消浮動列高度的效果。
這是我在準備處理程序運行代碼:
var layouts = $('.layout').get();
// sort to have .nested last
layouts.sort(function(a,b){
return $(a).hasClass('nested');
});
$(layouts).each(function(){
var $this = $(this);
var container_height = $this.height();
if ($this.hasClass('nested'))
{
var parent = $this.parent();
var heading = $this.siblings('h1');
var parent_h = parent.innerHeight();
container_height = parent_h-heading.innerHeight() - 9; // (i'm not sure why I need -9 here, just go with it, it's not critical to the problem)
}
var columns = $this.find('> div').not('.clear');
columns.each(function(){
var padding = $(this).innerHeight() - $(this).height();
$(this).height(container_height - padding);
});
});
它主要從事。在safari(mac * ipad)上,我發現它有助於在運行該代碼之前設置一個延遲(即使它在一個準備好的事件中被觸發),但是存在隨機的不一致性,其中列高度誤計算得太小,並導致佈局流動在頁腳之上。
我曾考慮過使用Faux Columns,但由於內部標題部分的原因,文檔上的邊框和背景圖片的組合使得它變得不可能(人造列背景不應顯示在該區域內,但我仍應該看穿頁面背景)
你有沒有什麼聰明的想法可以使這個更簡單,或者你能提供一些見解,爲什麼偶爾出現錯誤計算?
由於
如果您願意參與純CSS實施,請查看http://matthewjamestaylor.com/blog/ultimate-multi-column-liquid-layouts-em-and-pixel-widths – 2011-06-09 01:23:49
你能提供一個[jsFiddle demo](http://jsfiddle.net/)你當前的解決方案嗎?它會幫助我們回答你的問題。 – thirtydot 2011-06-09 01:25:17
@Matt。我看到了這個。我的印象是隻適用於基於純色背景色的列效果,我說得對嗎? – Ben 2011-06-09 01:27:44