主题:vue项目中,公用footer组件底部位置的适配问题

需求:footer为公用组件,其他页面都需要引入,这是会存在一种情况:有的页面高度很高,footer组件要放在内容的最后;有的页面内容很少,高度很低,footer需要放在浏览器可视窗口的最底部;窗口高度的变化时,footer的位置需要重新调整。

可能有的小伙伴首先会想到用固定定位:

position : fixed;
bottom : 0;

这种方式可以将footer固定在底部,但是会引入一个新的问题:如果页面内容超过一屏,那么footer组件就会覆盖掉页面内容!!!

最终解决方案:给内容不足以撑满浏览器可视高度的页面添加以下设置,通过动态监测浏览器窗口高度变化,,设置页面容器的最低高度,也就是footer正常加载,但是footer的兄弟容器的高度变化了,自身的位置也会变化。

script:

this.minHeight = document.documentElement.clientHeight - 100;
//100是footer的高度,如果顶部导航栏也固定的话需要再减去nav的高度
let that = this;
window.onresize = function () {
    that.minHeight = document.documentElement.clientHeight - 100;
}

template:

<homeComponent :style="{minHeight: minHeight+'px'}"></homeComponent>