今天又有一篇 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" );
}
你可以在这里找到这段新代码的 实时演示。具有讽刺意味的是,他们使用的是我写的一段 代码,但却没有署名。
我绝对最喜欢上面代码的部分是我正在进行的短路操作。那部分的原始代码来自 evolt 文章。我不知道是怎么回事,但每当我看到包含多个赋值的 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
你将对那段(之前非常冗长的)代码中实际发生的事情有更清晰的认识。