Html 如何在另一个固定高度div内垂直对齐动态高度div
我遇到了一个CSS难题,我正在为以下技巧寻找最佳解决方案:Html 如何在另一个固定高度div内垂直对齐动态高度div,html,css,Html,Css,我遇到了一个CSS难题,我正在为以下技巧寻找最佳解决方案: <div class="vertical-wrapper"> <div class="vertical-content"> Variable length of text which can be multiple lines </div> </div> 下面是实现这一点的方法。您正在上设置最小高度。垂直包装,但随后溢出:自动。如果改为设置一个固定的高度,
<div class="vertical-wrapper">
<div class="vertical-content">
Variable length of text which can be multiple lines
</div>
</div>
下面是实现这一点的方法。您正在
上设置最小高度
。垂直包装
,但随后溢出:自动
。如果改为设置一个固定的高度,而文本变得太大,它仍然会变得更高,并实现相同的效果
固定高度后,可以使用display:table cell
和vertical align:middle
垂直对齐div,如中所述
。垂直包装器{
宽度:220px;
高度:220px;
背景:#cf0000;
溢出:自动;
显示:表格单元格;
垂直对齐:中间对齐;
}
.垂直内容{
背景:#fff;
利润率:10px;
填充物:5px;
}
文本长度可变,可以是多行。
祝您好运!
文本长度可变,可以是多行。
祝您好运!
文本长度可变,可以是多行。
祝您好运
文本长度可变,可以是多行。
祝您好运
文本长度可变,可以是多行。
祝您好运
文本长度可变,可以是多行。
祝您好运
文本长度可变,可以是多行。
祝您好运
您可以使用内联flex
显示。以下是正确的CSS:
。垂直包装器{
display:inline flex;/*此处有细微更改*/
宽度:220px;
最小高度:220px;
背景:#cf0000;
溢出:自动;
}
.垂直内容{
背景:#fff;
保证金:自动10px;/*在这里*/
填充物:5px;
}
}
一种解决方案是将其Y轴
转换为-50%
,然后将边距顶部:50%
应用于。垂直内容
。垂直包装器{
宽度:220px;
最小高度:220px;
背景:#cf0000;
溢出:自动;
}
.垂直内容{
背景:#fff;
利润率:10px;
填充物:5px;
利润率最高:50%;
转化:translateY(-50%);
}
可变长度的文本,可以是多行。可变长度的文本,可以是多行。
祝你好运!
我把上面的一些答案和我自己的一些研究结合起来,找到了答案,多亏了你们
HTML代码
当我看到片段中的第二个框不知怎么地没有居中时,我正准备向上投票。但你的逻辑是有道理的…@Rhumborl-它居中,看看整页或小提琴。我做了-是小提琴在Chrome中的样子。34px以上,63pxbelow@Rhumborl-奇怪!当框显示为内联块时,在Firefox上可以完美地工作,如果只有一个框,则可以在所有浏览器中工作。很好。顺便说一句,如果这正是你所需要的,并且你认为这是最好的解决方案,你可以将你自己的答案标记为被接受的答案。
.vertical-wrapper{
width: 220px;
min-height: 220px;
background: #red;
overflow: auto;
}
.vertical-content{
background: #green;
margin: 10px;
padding: 5px;
}
<div class="vertical-wrapper">
<div class="vertical-content">
Variable length of text which can be multiple lines.<br />
Variable length of text which can be multiple lines.<br />
Variable length of text which can be multiple lines.<br />Good luck!
</div>
</div>
.vertical-wrapper{
width: 220px;
height: 220px;
background: #cf0000;
overflow: auto;
position: relative;
}
.vertical-content{
position: absolute;
top: 50%;
left:10px;
right:10px;
background: #fff;
padding: 5px;
transform: translateY(-50%);
}