给出以下HTML:
Copyright Foo web designs
我想#copyright
坚持到底#container
.
我可以不使用绝对定位来实现这一目标吗 如果float属性支持'bottom'的值,那么似乎可以做到这一点,但不幸的是,它没有.
可能不是.
分配position:relative
给#container
,然后分配position:absolute; bottom:0;
给#copyright
.
#container {
position: relative;
}
#copyright {
position: absolute;
bottom: 0;
}
Copyright Foo web designs
实际上,@ User接受的答案只有在窗口很高且内容很短的情况下才有效.但是,如果内容是高大的窗口很短,它将把版权信息在页面上的内容,然后向下滚动看到的内容将让你有一个浮动的版权声明.这使得这个解决方案对大多数页面都没用(实际上就像这个页面一样).
最常见的方法是演示"CSS粘性页脚"方法,或略微变细.这种方法效果很好 - 如果你有一个固定的高度页脚.
如果你需要一个可变高度的页脚,如果内容太短,它将出现在窗口的底部,如果窗口太短,你需要在内容的底部,你会怎么做?
吞下你的骄傲,并使用一张桌子.
例如:
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
}
#container {
height: 100%;
border-collapse: collapse;
}
Lorem ipsum, etc.
Copyright some evil company...
在支持的浏览器中,您可以使用以下内容:
这里的例子
.parent {
display: flex;
flex-direction: column;
}
.child {
margin-top: auto;
}
.parent {
height: 100px;
border: 5px solid #000;
display: flex;
flex-direction: column;
}
.child {
height: 40px;
width: 100%;
background: #f00;
margin-top: auto;
}
Align to the bottom
是的,你可以做到这一点,没有absolute
定位,也没有使用table
s(带有标记的螺丝等).
演示
经过测试,可以在IE> 7,chrome,FF上进行测试,这是一个非常容易添加到现有布局的东西.
Some content you don't want affected by the "bottom floating" divsupports not just textSome other content you want kept to the bottomthis is in a div
#container { height:100%; border-collapse:collapse; display : table; } .foot { display : table-row; vertical-align : bottom; height : 1px; }
float:bottom
即使考虑到@Rick Reilly的回答中指出的问题,它也能有效地做到这一点!
这是一个古老的问题,但这是一种独特的方法,可以在几种情况下提供帮助.
看看工作小提琴
因为正常的流量是"从上到下",我们不能简单地要求#copyright
div坚持他父母的底部而没有绝对的某种定位,但是如果我们想让#copyright
div坚持他父母的顶部,那么将非常简单 - 因为这是正常的流动方式.
所以我们将利用这个优势.我们将改变div
HTML中s 的顺序,现在#copyright
div位于顶部,内容立即跟随它.我们还使内容div一直延伸(使用伪元素和清除技术)
现在只是在视图中反转该顺序的问题.这可以通过CSS转换轻松完成.
我们将容器旋转180度,现在:向上 - 向下.(我们将内容反转回来看起来正常)
如果我们想在内容区域中有一个scroolbar,我们需要应用更多的CSS魔法.可以显示在这里 [在那个例子中,内容低于标题 - 但它的想法相同]
* {
margin: 0;
padding: 0;
}
html,
body,
#Container {
height: 100%;
color: white;
}
#Container:before {
content: '';
height: 100%;
float: left;
}
#Copyright {
background-color: green;
}
#Stretch {
background-color: blue;
}
#Stretch:after {
content: '';
display: block;
clear: both;
}
#Container,
#Container>div {
-moz-transform: rotateX(180deg);
-ms-transform: rotateX(180deg);
-o-transform: rotate(180deg);
-webkit-transform: rotateX(180deg);
transform: rotateX(180deg);
}
Copyright Foo web designs
Element 1
Element 2
试试这个;
Copyright Foo web designs
div
为上面的元素创建另一个容器#copyright
.在版权之上添加一个新的div
:
它将强制页脚在其他所有内容之下,就像使用相对定位(
bottom:0px;
)的情况一样.
尽管此处提供的答案似乎都不适用于我的特定情况,但我遇到了提供此整洁解决方案的这篇文章:
#container { display: table; } #copyright { display: table-footer-group; }
我发现这对于将响应式设计应用于移动显示非常有用,而不必重新排序网站的所有html代码,body
而是将自身设置为表格。
请注意,只有第一个table-footer-group
或table-header-group
会这样渲染:如果有多个,则其他将被渲染为table-row-group
。