【发布时间】:2015-01-21 13:44:52
【问题描述】:
我有三个块,我希望它们始终位于底部,无论视口高度如何,当没有足够的高度来显示所有块时,我希望它们从底部隐藏,而不是从顶部隐藏。
我厌倦了 flexbox 解决方案:http://jsbin.com/kutipequxe/1/edit?css,output ..它几乎可以工作,除了在低分辨率下,块从顶部隐藏,底部仍然可见。
我还尝试了另一种解决方案:http://jsbin.com/ruhigijeba/1/edit?css,output .. 好吧,这使顶部始终可见,但只是完全隐藏了底部,包括其他两个块。
我什至尝试了一个 JS 解决方案:
var vh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
var topHeight = document.getElementById('top').offsetHeight;
console.log('Viewport Height: ' + vh);
function getHeight(element) {
console.log(document.getElementsByClassName(element));
var offsetHeight = document.getElementsByClassName(element)[0].offsetHeight;
console.log('offsetHeight: ' + offsetHeight);
var marginTop = vh - (topHeight + offsetHeight);
console.log('marginTop: ' + marginTop);
document.getElementsByClassName(element)[0].style.marginTop = marginTop + "px";
}
getHeight("card-1");
getHeight("card-2");
getHeight("card-3");
...但它仍然从顶部隐藏块!
【问题讨论】:
-
在第一个示例中,您是否尝试删除
#cards { flex-flow: row wrap; }? -
@cari 刚试过,还是一样。
-
我没有时间在睡觉前写一个合适的解决方案,但我觉得 CSS 媒体选择器可能正是您正在寻找的。查看w3schools.com/cssref/css3_pr_mediaquery.asp,了解如何做到这一点。在您的情况下,您只需将块设置为
display: none
标签: javascript html css flexbox