2013-02-22 31 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