我知道这里有很多问题,但我尝试的所有方法似乎都不适用于我的代码。
我想垂直对齐元素中的文字
HTML:
<div id="mainWrapper">
<div id="header">
<div id="logo" class="headerElements">
<h:outputText class="headerText" value="RedPrice" />
</div>
<div id="login" class="headerElements">
<h:outputText class="headerText" value="Login" />
</div>
<div id="register" class="headerElements">
<h:outputText class="headerText" value="Register" />
</div>
<div id="follow" class="headerElements">
<h:outputText class="headerText" value="Follow us" />
</div>
</div>
</div>
CSS:
*{
margin:0;
padding:0;
}
body,html {
height: 100%;
font-family: 'Quicksand', sans-serif;
}
div#mainWrapper {
height: 100%;
width: 100%;
background: url(../images/women.jpg) no-repeat center center;
}
div#header {
width: 100%;
height: 5%;
background: white;
opacity: 0.5;
}
div.headerElements {
float: left;
height: 100%;
width: 10%;
text-align: center;
}
div.headerElements:hover {
background: orangered;
opacity: 0.5;
}
.headerText {
font-size: x-large;
}
我已经尝试过:(不成功)
display: table-cell
ul
和lis
并设置display:table并display:table-cell 有人能为我提供解决方案吗?
答案 0 :(得分:9)
您可以使用
div.headerElements:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: middle;
}
Demo(注意:我已经增加了包装器的高度以便更好地看到它)
答案 1 :(得分:5)
这是另一个建议,但我不确定我理解这个问题。
div {
height: 40px;
line-height: 40px;
vertical-align: middle;
}
答案 2 :(得分:3)
我最终使用了flex容器。因此,在此示例中,将div#mainWrapper的CSS更改为:
div#mainWrapper {
height: 100%;
width: 100%;
background: url(../images/women.jpg) no-repeat center center;
display: flex;
align-items: center;
}
答案 3 :(得分:1)
哟也可以这样使用 -
1: - Html部分
<div>
<h1>try me</h1>
</div>
2: - Css Part
div {
background: #000;
color: #FFFFFF;
height: 30px;
display: table;
width: 100%;
text-align: center;
}
div > h1 {
display: table-cell;
text-align: center;
vertical-align: middle;
}
答案 4 :(得分:0)
尝试用这个替换你的实际css“div.headerElements”(刚删除“float:left;”):
div.headerElements {
height: 100%;
width: 10%;
text-align: center;
}
答案 5 :(得分:0)
您可以使用clear:both;
来实现这一目标。像这样:
div.headerElements {
float: left;
height: 100%;
width: 10%;
clear: both;
text-align: center;
}
Check this JSFiddle来说明这种实现。
答案 6 :(得分:0)
最简单易用的解决方案imo ..除非你支持IE8
,否则最安全的是:
<强> HTML 强>
<h2>
<span>30 mins</span>
</h2>
<强> CSS 强>
h2 {
height: 120px;
position: relative;
}
h2 span {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
}
费德尔先生