我试图找到最有效的方法来将文本与 div 对齐。我尝试了一些东西,似乎都没有用。
.testimonialText {
position: absolute;
left: 15px;
top: 15px;
width: 150px;
height: 309px;
vertical-align: middle;
text-align: center;
font-family: Georgia, "Times New Roman", Times, serif;
font-style: italic;
padding: 1em 0 1em 0;
}
<div class="testimonialText">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
CSS 中的垂直居中
http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
文章摘要:
对于 CSS2 浏览器,可以使用display:table
/ display:table-cell
to center content。
div { border:1px solid green;}
<div style="display: table; height: 400px; overflow: hidden;">
<div style="display: table-cell; vertical-align: middle;">
<div>
everything is vertically centered in modern IE8+ and others.
</div>
</div>
</div>
可以将旧浏览器(IE6 / 7)的黑客合并到样式中,使用#
隐藏新浏览器的样式:
div { border:1px solid green;}
<div style="display: table; height: 400px; #position: relative; overflow: hidden;">
<div style=
"#position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
<div style=" #position: relative; #top: -50%">
everything is vertically centered
</div>
</div>
</div>
您需要添加line-height
属性,该属性必须与div
的高度匹配。在你的情况下:
.center {
height: 309px;
line-height: 309px; /* same as height! */
}
<div class="center">
A single line.
</div>
实际上,您可以完全删除height
属性。
这只适用于一行文字 ,所以要小心。
以 CSS 为中心是一个痛苦的屁股。根据各种因素,似乎有很多方法可以做到这一点。这可以整合它们并为您提供每种情况所需的代码。
为了使这篇文章与最新的技术保持同步,这里有一个更简单的方法来使用 flexbox 中心化。 IE9 and lower
不支持 Flexbox。
这里有一些很棒的资源:
HTML
<ul>
<li>
<p>Some Text</p>
</li>
<li>
<p>A bit more text that goes on 2 lines</p>
</li>
<li>
<p>Even more text that demonstrates how lines can span multiple lines</p>
</li>
</ul>
CSS
li {
display: flex;
justify-content:center;
align-content:center;
flex-direction:column; /* column | row */
}
这是来自zerosixthree ,让你以 6 行 css 为中心
IE8 and lower
不支持此方法
HTML
<ul>
<li>
<p>Some Text</p>
</li>
<li>
<p>A bit more text that goes on 2 lines</p>
</li>
<li>
<p>Even more text that demonstrates how lines can span multiple lines</p>
</li>
</ul>
CSS
p {
text-align: center;
position: relative;
top: 50%;
-ms-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
简单和跨浏览器方法,作为标记答案中的链接有用略微过时。
如何在无序列表和 div 中垂直和水平居中文本而不使用 JavaScript 或 css 行高 。无论您有多少文本,您都不必将任何特殊类应用于特定列表或 div(每个代码都相同)。这适用于所有主流浏览器,包括 IE9,IE8,IE7,IE6,Firefox,Chrome,Opera 和 Safari。由于现代浏览器没有的 css 限制,有 2 个特殊样式表(IE7 为 1,IE6 为另一个)以帮助他们。
编辑:因为我对上一个项目的 IE7 / 6 并不在意,我使用了一个稍微剥离的版本(即删除了使它在 IE7 和 6 中工作的东西)。可能对其他人有用......
HTML
<ul>
<li>
<div class="outerContainer">
<div class="innerContainer">
<div class="element">
<p><!-- Content --></p>
</div>
</div>
</div>
</li>
<li>
<div class="outerContainer">
<div class="innerContainer">
<div class="element">
<p><!-- Content --></p>
</div>
</div>
</div>
</li>
</ul>
而 CSS:
.outerContainer {
display: table;
width: 100px; /* width of parent */
height: 100px; /* height of parent */
overflow: hidden;
}
.outerContainer .innerContainer {
display: table-cell;
vertical-align: middle;
width: 100%;
margin: 0 auto;
text-align: center;
}
li {
background: #ddd;
width: 100px;
height: 100px;
}