解這樣的方程式,有點類似哥德巴赫猜想了,好像有必要寫個程序來搞定。幸好這一次,我們有強大的笨笨熊童鞋,寫出了這樣一段程序:
public class test1 { private static float decimal = 0.0001f; public static void main(String[] args) { int count = 1; int result_x = 0; int result_y = 0; for (float x = 0.33f; x < 0.34f; x = x + decimal) { for (float y = 0.33f; y < 0.34f; y = y + decimal) { if (((Math.floor(312 * x) + Math.floor(312 * x) + Math.floor(312 * y)) == 312) && ((Math.floor(472 * x) + Math.floor(472 * x) + Math.floor(472 * y)) == 472) ) { System.out.printf("x==>%.4f,y==>%.4f\n" ,x, y); } } } System.out.println("result_x==>" + result_x + ",result_y==>" + result_y); } }
好吧,相信萬能的機器,總是什么都能做出來的。運行以上程序,一下就輸出了幾百組結(jié)果,X取值從-33.06%—33.47%,Y從33.48%—33.4%,從中選出最接近的1組:
x=33.47% y=33.48%
好了,給CSS設(shè)置:
.tab3 li{float:left;width:33.47%;} .tab3 li:last-child{width:33.48%;}
大功告成!iPhone和Android自帶瀏覽器都表現(xiàn)完美了。
[再提一點,對Firefox瀏覽器要滿足的條件如下:
(312*X) + (312*X)+(312*Y)=312,同時(472*X) + (472*X)+(472*Y)=472,
基本上就是2X+Y=1,而通過程序運算,我們發(fā)現(xiàn)找不到這樣一組4位以內(nèi)的數(shù)值能同時滿足Firefox和Safari的條件,好在目前在高端機的網(wǎng)頁上,我們還不需要兼容Firefox——如果有誰知道-moz或-webkit設(shè)置寬度的私有屬性,請告訴我,可以分別給他們定義寬度。]
這樣就行啦!
這時,有一個弱弱的聲音在問:但是,請問,請問,我們每次都要這么痛苦么!
好,問的好!
在經(jīng)歷了這一番死去活來的推理計算后,一直覺得如鯁在喉,心有不甘。突然有一天,腦子里靈光一現(xiàn),柳暗花明又一村…讓我們換個思路吧:
一定要給每個選項卡定義精確寬度么?能不都定義么?如果我們只定義其中前N-1個,而讓最后一個自適應(yīng)會如何?像這樣:
.tab3 li:not(:last-child){float:left;width:33.33%;} .tab3 li:last-child{margin-left:66.66;}
世界頓時簡單了!Firefox、Safari一次被搞定——ie下用,稍作修改即可。不論5個、7個,一個道理:前N-1個取最接近平均值的百分比,最后一個自適應(yīng),填充剩余空間。
正所謂大巧無術(shù)、大道至簡,換一種思路,海闊天空。
原文:http://wsd.tencent.com/2010/08/tab.html
本文鏈接:http://m.95time.cn/tech/web/2010/7917.asp
出處:騰訊WSD
責(zé)任編輯:bluehearts
上一頁 一個選項卡寬度的哥德巴赫猜想 [3] 下一頁
◎進入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|