问题
I have searched Stackoverflow and cannot find a solution that works.
Seems that centring vertically AND horizontally in a div is hard.
I'm using this css:
.title {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 400%;
}
.subtitle {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 150%;
}
.subnote {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 75%;
}
.outer {
display: table;
position: absolute;
height: 100%;
width: 100%;
}
.middle {
display: table-cell;
vertical-align: middle;
}
.innie {
width: 1000px;
height: 515px;
background-image: url("bkgrnd3.png");
position:absolute;
left:50%;
top:50%;
margin: -257px 0 0 -500px;
text-align: center;
}
and this html:
<!DOCTYPE html>
<html>
<head>
<title>Timothy Eldon Official</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="eldon.css">
</head>
<body>
<div class="outer">
<div class="middle">
<div class="innie">
<span class="title">
Timothy Eldon
</span>
<br/>
<span class="subtitle">
Author
</span>
<br/>
<span class="subnote">
(amateur)
</span>
</div>
</div>
</div>
</body>
</html>
It centres everything on the page relatively, but I cannot get the text centred vertically.
There seems to be lots of ideas, but I've tried several and nothing works.
回答1:
You have some unnecessary css such as margin: -257px 0 0 -500px; left:50%;
top:50%; width: 1000px; height: 515px;
on .innie
, which is throwing off your center alignment.
I think this, what you are going for.
UPDATED
CSS
.title {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 400%;
}
.subtitle {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 150%;
}
.subnote {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 75%;
}
.outer {
display: table;
position: absolute;
height: 100%;
width: 100%;
background:url('https://placeimg.com/600/300/any')no-repeat;
background-position: center;
}
.middle {
display: table-cell;
vertical-align: middle;
}
.innie {
text-align: center;
}
jsFiddle Demo - https://jsfiddle.net/8dphnor5/
回答2:
flex can help you :
.title {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 400%;
}
.subtitle {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 150%;
}
.subnote {
font-family: "Book Antiqua", "Palatino Linotype", Palatino, serif;
font-size: 75%;
}
.outer {} .middle {} .innie {
width: 1000px;
height: 515px;
background-image: url("http://lorempixel.com/1000/515");
text-align: center;
text-shadow: 0 0 1px white;
}
html,
body {
height: 100%;/* min-height is buggie in IE */
}
body,
.innie {
display: flex;
flex-direction: column;
/* now centers things in X,Y axis */
align-items: center;
justify-content: center;
}
<div class="outer">
<div class="middle">
<div class="innie">
<span class="title">
Timothy Eldon
</span>
<br/>
<span class="subtitle">
Author
</span>
<br/>
<span class="subnote">
(amateur)
</span>
</div>
</div>
</div>
回答3:
Here is simple DEMO.. hope it helps.
HTML
<div>
<span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span>
</div>
CSS
div {
display: table;
width: 250px;
height: 500px;
text-align: center;
border: 1px solid red;
}
span {
display: table-cell;
vertical-align: middle;
}
来源:https://stackoverflow.com/questions/34912619/css-div-center-multi-line-text-vertically-and-horizontally-with-a-background-ima