【发布时间】:2014-08-08 18:50:39
【问题描述】:
我有一个通过 JS 设置高度的 3x3 全屏响应式网格。然后,当您缩小到 800 像素时,我希望网格调整为 2x3。这是不同屏幕尺寸的网格图片:
我通过 CSS 设置了媒体查询,但我还必须更改 div 高度的函数以获取 windowHeight 并将其除以 3 而不是 windowHeight/2 以获得更大的屏幕尺寸。这是必要的JS:
(function() {
var $serviceBox6 = $('.js-service-box6');
var $serviceBox5 = $('.js-service-box5');
var $serviceBox4 = $('.js-service-box4');
var $serviceBox3 = $('.js-service-box3');
var $serviceBox2 = $('.js-service-box2');
var $serviceBox1 = $('.js-service-box1');
$(document).ready(function() {
function setHeight() {
windowHeight = $(window).innerHeight();
$intro.css('min-height', windowHeight);
$about.css('min-height', windowHeight);
$nav.css('min-height', windowHeight);
$services.css('min-height', windowHeight);
$contact.css('min-height', windowHeight);
$contactLeft.css('min-height', windowHeight);
$contactRight.css('min-height', windowHeight);
$map.css('min-height', windowHeight);
$serviceBox1.css('min-height', windowHeight/2);
$serviceBox2.css('min-height', windowHeight/2);
$serviceBox3.css('min-height', windowHeight/2);
$serviceBox4.css('min-height', windowHeight/2);
$serviceBox5.css('min-height', windowHeight/2);
$serviceBox6.css('min-height', windowHeight/2);
};
setHeight();
if (document.documentElement.clientWidth <= 800) {
$(document).ready(function() {
function setHeight() {
windowHeight = $(window).innerHeight();
$contactLeft.css('min-height', windowHeight/2);
$contactRight.css('min-height', windowHeight/2);
$map.css('min-height', windowHeight/2);
$serviceBox1.css('min-height', windowHeight/3);
$serviceBox2.css('min-height', windowHeight/3);
$serviceBox3.css('min-height', windowHeight/3);
$serviceBox4.css('min-height', windowHeight/3);
$serviceBox5.css('min-height', windowHeight/3);
$serviceBox6.css('min-height', windowHeight/3);
};
setHeight();
});
}
$(window).resize(function() {
if ($(window).width)
setHeight();
});
});
})();
这在我将屏幕缩小到 800 像素时有效,但如果我将其放大到 800 像素以上,除非刷新页面,否则它不会恢复为 3x3 网格。如果我从 800px 开始,出现 2x3 网格,然后当我将宽度放大,出现 3x3 网格,但如果我缩小到 800px 以下,它不会回到 2x3 网格。当用户调整屏幕宽度低于和高于 800 像素时,如何让网格在两个网格之间重新调整?
非常感谢所有帮助!
【问题讨论】:
-
通常当我看到在 JS 中指定的大量 CSS 时,我想知道这是否是 min-height: calc(100% / 2) 无法处理的...
-
我认为这应该是CSS问题,你可以使用Bootstrap网格系统来解决它。那容易得多。 getbootstrap.com/css/#grid
-
@dandavis 感谢您的帮助。我考虑过删除 JS 并切换到使用 CSS 计算,但担心会缺少浏览器支持,但在查看之后,我唯一需要担心的浏览器似乎是 IE9。如果我无法让 JS 解决方案正常工作,我可能会尝试通过 CSS 计算来解决这个问题。
-
@LiJunLe 感谢您的意见!实际上,我在本网站即将推出的页面中使用了 Foundations 网格系统,它运行良好,但对于最终网站,我们正在重用以前网站的一些代码,所以这不是一个真正的选择。
标签: javascript jquery responsive-design grid