2013-02-22 38 views
0

我有一個網站列出了最受歡迎的投票書。書籍存儲在數據庫中。有沒有辦法將$ maxresults設置爲顯示器的寬度?在較大的顯示器上,這會在整個底部留下一兩本書。無論分辨率如何,我都希望每行都能填寫。也許是一個if語句?我的代碼:基於屏幕分辨率的最大結果

$maxresults = 21; 
    if($_GET['page']) 
    $page = $_GET['page']; 
    else 
    $page = 0; 
    $currentpage = $page; 
    $page = $page*$maxresults; 
    $numpages = QuickQuery("SELECT COUNT(id) FROM movies WHERE visible=1"); 
    $numpages = mysql_result($numpages, 0); 
    $numpages = $numpages/$maxresults-1; 
    $result = GetBooksByRangeID($page, $maxresults);//Show <maxresults> pages at a time 
    DisplayResults($result); 
    ?> 
+0

有沒有自動的方式爲PHP做到這一點。您將不得不將屏幕分辨率發送到服務器,然後手動進行計算。 – 2013-02-22 19:42:03

+0

我該如何去做這件事?也可以用JavaScript來完成,對吧? – JJM 2013-02-22 19:45:53

+0

如果我沒有使用打開全屏顯示器尺寸的窗口?或者,如果我選擇調整窗口大小?你真的仍在設計你的網頁,好像它是1993年而不是2013年?這不是響應式設計,它是反應靈敏的設計....並且您可以使用表格和內嵌框架來進行佈局 – 2013-02-22 19:47:47

回答

0

你可以用javascript來做到這一點。不要害怕,這並不難。

首先,CHEC屏幕分辨率:http://www.pageresource.com/jscript/jscreen.htm

其次,通過多個元件到客戶端,並動態隱藏 - 設置顯示=「none」或類似的東西(你可以使用http://datatables.net/例如)。

+0

感謝 - 您發送的第一個鏈接顯示瞭如何根據分辨率將用戶發送到其他頁面。我不想這樣做。我只想顯示最後一排書籍,像在其他所有行中那樣水平填寫。目前,我已將$ maxresults設置爲21,不會執行此操作 – JJM 2013-02-22 20:31:01

+0

您不必在任何地方重定向任何人。而不是window.location你應該修改DOM元素(動態改變HTML元素的CSS),你會得到你想要的。 – ducin 2013-02-22 20:33:12

0

如果你正在尋找這個工作基於窗口大小,而不是監視器的大小(即它應該填充瀏覽器窗口,但不能運行在屏幕外,如果窗口比屏幕小),看看jQuery .width()函數(http://api.jquery.com/width/

如果每本書的顯示都包含在div中,則可以將div的樣式設置爲float: left。然後這些人將填滿屏幕,直到他們沒有空間,然後闖入一條新線路。

+0

你需要做一些數學。確定可用窗口空間的寬度(使用'window.width()'或'$(document).width()')。然後,您可以通過將窗口/文檔寬度除以單個div的寬度來計算多少個div適合一行。或者你是否說你不想改變最後一行顯示的書的數量(因爲你可能得不到完美的劃分),而是想改變最後一排書的間距,迫使它們均勻分佈即使它們沒有像其他線路那樣佔用足夠的空間(它們有更多的書本),也是有間隔的? – EmmyS 2013-02-22 20:34:08

+0

如果這就是你想要做的,可能有多種方式去做。 CSS不是我的強項,但我認爲你需要弄清楚(通過js或jq)哪些元素將落在最後一行,然後將它們與其他元素分開。有一個很好的帖子,在這裏均勻分隔水平元素:http://stackoverflow.com/questions/6865194/fluid-width-with-equally-spaced-divs – EmmyS 2013-02-22 20:40:26

+0

艾美獎 - 第一個選項是正確的。我將嘗試使用jQuery .width並查看我想出的內容。 – JJM 2013-02-22 20:49:30