说我有以下CSS和HTML代码:
#header {
height: 150px;
}
Header title
Header content (one or multiple lines)
标题部分是固定高度,但标题内容可能会更改.我想将标题的内容垂直对齐到标题部分的底部,因此最后一行文本"粘贴"到标题部分的底部.
因此,如果只有一行文字,那就像:
----------------------------- | Header title | | | | header content (resulting in one line) -----------------------------
如果有三行:
----------------------------- | Header title | | header content (which is so | much stuff that it perfectly | spans over three lines) -----------------------------
怎么能在CSS中完成?
相对+绝对定位是您最好的选择:
#header {
position: relative;
min-height: 150px;
}
#header-content {
position: absolute;
bottom: 0;
left: 0;
}
#header, #header * {
background: rgba(40, 40, 100, 0.25);
}
Title
Some content
使用CSS定位.
/* Creates a new stacking context on the header */
#header {
position: relative;
}
/* Positions header-content at the bottom of header's context */
#header-content {
position: absolute;
bottom: 0;
}
正如克莱特斯所说,你需要确定标题内容才能使其发挥作用.
some header content
bottom
我使用这些属性,它的工作原理!
#header { display: table-cell; vertical-align: bottom; }
如果您不担心旧版浏览器,请使用flexbox.
父元素需要将其显示类型设置为flex
div.parent { display: flex; height: 100%; }
然后将子元素的align-self设置为flex-end.
span.child { display: inline-block; align-self: flex-end; }
这是我以前学习的资源:http: //css-tricks.com/snippets/css/a-guide-to-flexbox/
经过一段时间的努力,我终于找到了满足我所有要求的解决方案:
不要求我知道容器的高度.
与相对+绝对解决方案不同,内容不会在其自己的层中浮动(即,它通常嵌入在容器div中).
适用于各种浏览器(IE8 +).
易于实施.
解决方案只需要一个 CSS HTML 这个技巧的工作原理是创建一个高大的瘦小的div,它将文本基线推到容器的底部. 这是一个完整的例子,可以实现OP的要求.我将"bottom_aligner"设为厚实和红色仅用于演示目的. CSS: HTML: 现代的方法是使用flexbox.请参阅下面的示例.您甚至不需要包装
如果父/块元素的行高大于内联元素的行高,则内联块或内联块元素可以与块级元素的底部对齐.* 标记: CSS: *确保您处于标准模式 你可以简单地实现flex
.bottom_aligner {
display: inline-block;
height: 100%;
vertical-align: bottom;
width: 0px;
}
... Your content here ...
.outer-container {
border: 2px solid black;
height: 175px;
width: 300px;
}
.top-section {
background: lightgreen;
height: 50%;
}
.bottom-section {
background: lightblue;
height: 50%;
margin: 8px;
}
.bottom-aligner {
display: inline-block;
height: 100%;
vertical-align: bottom;
width: 3px;
background: red;
}
.bottom-content {
display: inline-block;
}
.top-content {
padding: 8px;
}
is on top.
at the bottom.
如果放入`:: before`规则,这也可以工作,这样就不需要额外的元素了.我们最后使用了flex,但是当你不能的时候这很有用.
6> Stickers..:Some text...
到任何HTML标记中,因为直接包含在Flex容器中的文本包装在匿名的flex项中.header {
border: 1px solid blue;
height: 150px;
display: flex; /* defines flexbox */
flex-direction: column; /* top to bottom */
justify-content: space-between; /* first item at start, last at end */
}
h1 {
margin: 0;
}
Header title
Some text aligns to the bottom
7> user3053247..:display: flex;
align-items: flex-end;
@AnthonyB - 定义旧?我们必须改变这个记录作为开发人员.技术向前发展,旧的根本无法生存.从我看到的IE9和10有flex的问题,但它们分别在2011年和2012年发布......它是2017年.我们不得不放弃这些过时和破损的浏览器.如果不是为了视觉上的满足,而是为了安全性和一般软件更新.
请注意,在旧版浏览器中,flexbox不受[支持](http://caniuse.com/#feat=flexbox).
@Tisch你是绝对正确的,作为开发人员,我们必须使用体面和近期的技术.但我只是警告这个兼容性问题,以免引起惊讶.
8> 小智..:I'm at the bottom
h1.alignBtm {
line-height: 3em;
}
h1.alignBtm span {
line-height: 1.2em;
vertical-align: bottom;
}
9> 小智..:header {
border: 1px solid blue;
height: 150px;
display: flex; /* defines flexbox */
flex-direction: column; /* top to bottom */
justify-content: space-between; /* first item at start, last at end */
}
h1 {
margin: 0;
}
Header title
Some text aligns to the bottom
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有