Hi我目前正在使用jQuery根据浏览器宽度加载可变php布局。
function setLocation(url) {
if (window.location.href.indexOf(url) === -1)
window.location = url;
}
function reloadPage(width) {
width = parseInt(width);
if (width < 701) {
setLocation("yournarrowpage.php");
} else if (width < 900) {
setLocation("yourmediumpage.php");
} else {
setLocation("yourwidepage.php");
}
}
$(function() {
reloadPage($(this).width());
$(window).resize(function() {
reloadPage($(this).width());
});
});
只需要php就可以实现这一点吗?
如果是,如何?请帮忙。
当我可以简单地用CSS重新排列布局时,我为什么要这样做
我不想使用CSS属性#div { display:none }
,因为问题是我的布局加载了很多图像、javascript和小部件。
我甚至尝试了响应式布局,但不幸的是,一些图像细节在小屏幕上几乎看不见。
使用css属性display:none
,仍然会加载未显示的内容,浪费大量带宽。比方说,移动浏览器加载1.5 MB的网站,然后隐藏1.2 MB????这可能不是个好主意。
对于较小的浏览器,这些小部件将没有任何意义,因此我想加载一个更轻的版本。
这就是我的想法。如果我错了,请随时纠正我,因为我在编程方面还是个新手,还处于学习阶段
将CSS媒体查询和javascript结合起来,以防止加载不想加载的较大项目/区域。。。
if ($('window').width() > 1000) {
// load your full functions and stylesheet
}
if ($('window').width() < 1000) {
// load your narrow functions and stylesheet
}
我最近用类似的方法组合了css媒体查询,然后添加了动画来帮助减少转换的痛苦。。很不错。
在PHP中尝试这样做的问题是,您无法从web服务器中判断客户端宽度,这意味着您必须查看请求标头。
有一个库可以帮助在谷歌代码上使用PHP进行设备检测。
最后是一两句警告。你需要让这个脚本保持最新,这样它才能继续工作。它用来判断设备是什么的方法属于"浏览器嗅探"的旗帜下,它依赖于浏览器通过某些标头发送,这些标头在以后的版本/新浏览器中可能会发生变化。此外,大多数时候,你只是不想强迫移动用户查看你网站的移动版本,所以如果你决定以这种方式实施,请让人们可以选择在手机上查看正常网站。
PHP只向客户端输出文本。它对客户一无所知,客户没有告诉它
我说的是客户端,因为不能保证启动对PHP脚本的请求的软件甚至是浏览器。
您已经排除了CSS,但老实说,如果您不想使用javascript,那么它是您唯一的其他选择。CSS3中的选择器非常强大,您可以使同一页面在不同的浏览器宽度下看起来完全不同。