我目前正在使用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("layout700.php");
} else if (width < 900) {
setLocation("layout900.php");
} else {
setLocation("layout1200.php");
}
}
$(function() {
reloadPage($(this).width());
$(window).resize(function() {
reloadPage($(this).width());
});
});
我的问题:
Q1。是否有可能只用PHP实现这一点?如果是,怎么样?
Q2。我可以使用PLAIN JAVASCRIPT(没有jQuery,MooTools或其他库)这样做吗?如果是,怎么做?
我不想使用这些库,因为这是我模板中唯一的javascript函数,目前只是这样做我正在加载整个jQuery库。请帮忙。
当我只需使用CSS重新排列布局时,为什么要这样做呢?
我不想使用CSS属性#div { display:none }
,因为问题是我的布局加载了很多图像和小部件。
我甚至尝试了响应式布局,但不幸的是,在小屏幕上几乎看不到某些图像细节。
使用css属性display:none
,仍会加载未显示的内容,浪费大量带宽。让我们说移动浏览器加载1.5 MB的网站,然后隐藏1.2 MB的它?那可能不是一个好主意。
对于较小的浏览器,这些小部件没有任何意义,因此我想加载更轻的版本。
这就是我的想法。如果我错了,请随时纠正我,因为我在编程方面仍然是新手而且还处于学习阶段。
答案 0 :(得分:1)
Q1。是否有可能只用PHP实现这一点?如果是,怎么样?
在某种程度上,您可以识别移动设备。但是,用户的屏幕分辨率在PHP中不可用。
Q2。我可以使用PLAIN JAVASCRIPT(没有jQuery,MooTools或其他库)这样做吗?如果是,怎么做?
是。事实上,它甚至可能更容易。这是相当于没有jQuery的代码:
function setLocation(url) {
if (window.location.href.indexOf(url) === -1)
window.location = url;
}
function reloadPage(width) {
if (width < 701) {
setLocation("layout700.php");
} else if (width < 900) {
setLocation("layout900.php");
} else {
setLocation("layout1200.php");
}
}
var done = false;
function ready() {
if(!done) {
done = true;
reloadPage(document.width);
}
}
if(window.addEventListener) {
window.addEventListener('DOMContentLoaded', ready, false);
window.addEventListener('load', ready, false);
} else if(window.attachEvent) {
window.attachEvent('onload', ready);
}
window.onresize = function() {
reloadPage(document.width);
};
然而!您还可以使用媒体查询来重新设置页面,而无需进行流畅的布局。这有很多原因,更值得注意的是,您的布局不依赖于JavaScript和可能的粗略兼容性。 Here's a good tutorial.