2013-02-23 173 views
0

我知道如何使用CSS解決我的問題。我需要從像素到百分比(趣味時間!)設置每個值,其中有1000個值。無論是在事實發生後還是在我走後,這總是很痛苦。我已經能夠更快地設計出避開它的像素,但是現在想要避免它們一起出現。我假設使用CSS百分比(我的整個頁面是一個固定的長寬比,所以每一個元素都需要翻譯成百分比)將是最輕量級的解決方案,但我希望可能有一些jQuery腳本存在,可以調整大小元素?jQuery調整CSS元素的大小

有一次我想嘗試訪問瀏覽器縮放,但這似乎不可能。這是我另一種方法的最後一拍。如果我無法得到某些工作......我必須將其吸收並將我的所有元素轉換爲百分比(實際上應該有一個工具可以爲您做這件事!)。

任何和所有的幫助表示讚賞。謝謝!

編輯*這裏是一個小提琴描繪了一個簡單的網站結構:http://jsfiddle.net/hkdeA/4/。我包括一些代碼來嘗試擴展外部容器。如果所有內部容器都是CSS百分比,它就可以工作,但我有1000個值需要翻譯,並且調整所有元素的簡單腳本將節省大量的時間,精力和精力。

<div id="container"> 
    <div id="vid"> 

    </div> 
    <div id="sidebar"> 

    </div> 
    <div id="footer"> 

    </div>  
</div> 

#container{ 
    background:grey; 
    width:480px; 
    height:270px; 
    float:left; 
} 

#vid{ 
    background:black; 
    width:320px; 
    height:180px; 
    float:left; 
} 

#sidebar{ 
    background:blue; 
    width:160px; 
    height:180px; 
    float:right; 
} 

#foot{ 
    background:yellow; 
    width:480px; 
    height:90px; 
    float:left; 
} 

終極目標是:讓我的網站的應用程序,以調整到100%的寬度或高度(取決於窗口的縱橫比)的瀏覽器窗口。我知道可以用CSS百分比和腳本來完成包含div的大小。但是,我想用腳本來更改所有div,以避免將每個固定值轉換成百分比的繁瑣操作。

+0

你可以張貼一些代碼,讓您的問題在整個更清楚? – Lowkase 2013-02-23 02:00:47

+0

我已經添加了一些代碼和一個快速小提琴。想象一下我已經佈置的結構,但是在我展示給你的這幾個容器中的整個Web應用程序。我需要調整每一個元素。就像他們都是百分比一樣,我改變了外部容器的大小。 – jstacks 2013-02-23 02:06:34

+0

所以爲了更精確一點,您希望您的1000個容器以「流動」的方式進行操作? – Lowkase 2013-02-23 02:08:00

回答

0

你在找這樣的事嗎?

$('div').each(function(i,v){ 
    if($(v).width() > 0){ 
    $(v).width('auto'); 
    } 
}); 
+0

這似乎比其他答覆更簡單,但我不明白它會如何工作?你可以解釋嗎? – jstacks 2013-02-23 04:22:03

1

嘗試這樣:

var list = []; 
var containerW = $("#container").width(); 
var containerH = $("#container").height(); 
$("#container").find("*").each(function(){ 
    var obj = {}; 
    obj.w = $(this).width() * 100/containerW; 
    obj.h = $(this).height() * 100/containerH; 
    obj.el = $(this); 
    list.push(obj); 
}); 


for (var i in list) { 
    var obj = list[i]; 
    obj.el.width(obj.w+'%'); 
    obj.el.height(obj.h+'%'); 
} 


$("#container").width('100%'); 
// if you want height also to be 100% 
$("#container").height('100%'); 

你可以在這裏進行測試:http://jsbin.com/izubed/1/edit

+0

這似乎正是我想要的。所以,你要告訴它用'*'查找所有內容,然後通過容器的寬度和高度來操作所有內容。然後這個外部容器被操縱以跟隨瀏覽器窗口。棒極了。我想我會發現當我實現這個......但這會比使用CSS百分比慢嗎?我知道腳本在CSS之後運行,所以在這種情況下,我認爲它會變慢......但這種方法皺起了眉頭? – jstacks 2013-02-23 04:19:56

+0

不幸的是,它並沒有結束工作。它打破了一切。很難說爲什麼。另外,在更多地使用你的例子之後,這並不能保持高寬比(我希望高度保持與寬度成正比) - 在這篇文章中不是一個大問題,但我主要是想縮放所有的子元素,你的例子似乎可以做...但在與我的其他代碼一起使用時不起作用。該死。 :( – jstacks 2013-02-23 04:39:10

+0

很明顯,在這樣一個簡單的例子中,將起作用如果你有更多的元素,可能有些元素不喜歡第一個地方的百分比寬度/高度!可能需要一些調整。結論是,對於小像這樣的實驗,可以採用這種方法,但在生產環境中,您應該遵循正確的路徑。 – Oden 2013-02-23 12:07:15