【发布时间】:2017-02-24 00:07:06
【问题描述】:
我试图为我的网站制作粘性页脚,在这种情况下,出于特定原因,我使用 javascript 创建元素,我创建了<footer> 元素,并尝试在每个宽度分辨率下将其完全置于底部。
我只想在正文处添加页脚,所以这是我的 javascript:
$(function () {
$('.products').each(function(i, obj) {
if (i > 0) {
obj.id = "p" + i
var pl = document.createElement("footer");
var t = document.createTextNode(i);
pl.className = "pageblock"
pl.appendChild(t);
document.body.appendChild(pl);
}
});
});
这将创建页脚,在这种情况下仅创建单个页脚,.pageblock 类的编辑样式有效。
为了让页脚完全下降,我试过这个:
.pageblock {
clear: both;
position: relative;
text-align: center;
bottom: 0;
z-index: 10;
font-family: 'Lato';
font-size: 3em;
color: white;
font-weight: bold;
}
但由于某种原因,它仍然无法工作,它会卡在垂直中心附近的某个地方。 Check for "1" here.
我在网站上有 flex 布局,因此元素会随着浏览器水平缩放并增加垂直尺寸。
有什么方法可以将元素完全移动到底部,以便它始终存在,即使垂直尺寸变大或变小?有什么办法可以做到这一点,而无需将所有内容都包装在单个 div 中,这可能会损坏代码本身?
谢谢!
【问题讨论】:
-
相对定位只移动一个元素相对于它在正常流中的位置。而且由于您只设置了
bottom:0,因此您甚至根本不会将其从该位置移动。你认为这将如何实现你想要的? -
+CBroe 我不想用滚动来修复它,我希望它完全保持在底部。
-
使用 flexbox 实现此目的的一种简单方法:philipwalton.github.io/solved-by-flexbox/demos/sticky-footer(您可能需要在其余内容周围添加一个额外的容器元素,但这应该可以在不破坏所有内容的情况下实现。)
-
@CBroe 感谢您的解决方案,我应该为页脚创建单独的 flexbox 元素还是应该与我现有的元素一起创建?
-
在您当前的布局中可能很难实现这一点,因为您有诸如绝对定位的搜索框之类的东西(没有明显的原因?),这使它脱离了流程,因此这些元素不再影响其父元素的高度。
标签: javascript html css flexbox