今天又有一篇 CSS/Javascript 文章在流传:基于宽度的布局。其前提是页面会自动根据浏览器宽度调整宽度。文章中包含了一段 38 行的 Javascript 代码(我是在慷慨)来完成这项工作。我将为您节省分解他们的代码,并直接向您展示改进后的代码,如下所示。
$(window).resize(setWidth);
$(document).ready(setWidth);
function setWidth() {
var de = document.documentElement;
var w = (window.innerWidth || (de && de.clientWidth)
|| document.body.clientWidth) < 990 ?"alt":"main";
$("#wrapper").addClass( w + "wrapper" );
}
此新代码的实时演示可以在 这里 找到。讽刺的是,他们正在使用我编写的一段 代码,但没有署名。
我最喜欢上述代码的部分是短路。原始代码的这一部分来自 这篇文章。我不知道为什么,但每次我看到带有多个赋值的 IF 语句时,都会感到不寒而栗。所以,以下
if (window.innerWidth)
{
theWidth = window.innerWidth
}
else if (document.documentElement
&& document.documentElement.clientWidth)
{
theWidth = document.documentElement.clientWidth
}
else if (document.body)
{
theWidth = document.body.clientWidth
}
更改为
var de = document.documentElement;
var w = window.innerWidth || (de && de.clientWidth)
|| document.body.clientWidth;
如果您想知道为什么这有效,请运行以下语句
alert(1||0); // You get 1
alert(0||2); // You get 2
alert(0||(2&&1)); // You get 1
alert(0||(3&&4)||2); // You get 4
您将更好地了解正在发生的事情(之前)这段非常冗长的代码中。