我正在尝试将徽标放在页面的中央,但我希望文本位于徽标的中间(中间)和页面的底部。因此它位于中心徽标和页面底部的中心。因此,实际上,徽标位于页面的中心,但文本位于徽标和页面底部之间的中心。以下是我制作的JSFiddle以及下面的代码。我可以将所有内容集中在一起但不是我想要的方式,徽标位于中心,文本位于徽标和页面底部之间的中心。
/* FRONT PAGE LOADER */
.loader {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 9999;
background: white;
text-align: center;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: column;
}
.centered {
align-self: center;
}
.center-center {
align-self: center;
}
.loading-img {
width: 80px;
height: 80px;
-webkit-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
}
/*SPIN THE LOGO */
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg);
}
100% {
-moz-transform: rotate(360deg);
}
}
@-o-keyframes spin {
0% {
-o-transform: rotate(0deg);
}
100% {
-o-transform: rotate(360deg);
}
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

<div class="loader">
<div class="centered" id="blank2"><img class="img-responsive loading-img" src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Newscycle-Circle.png" />
<p id="blank3">LOADING</p>
</div>
<div class="center-center">
<h3 id="blank1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et ultricies risus. Sed pulvinar leo non ligula luctus aliquet.</h3>
</div>
</div>
&#13;
答案 0 :(得分:2)
为此,您需要将这2行添加到.loader
规则中
(你还需要添加他们的前缀版本,我没有)
justify-content: center;
align-items: center;
然后你需要添加一个 ghost 元素(我使用伪::before
)来平衡底部文本并给它们flex-grow: 1; flex-basis: 0;
这样它们共享剩余空间相等
.loader::before,
.center-center {
content: '\00a0';
flex-grow: 1;
flex-basis: 0;
display: flex;
align-items: center;
justify-content: center;
}
最后摆脱一些保证金,否则他们会让它看起来不起作用
.center-center h3 {
margin: 0;
}
.centered p {
margin-bottom: 0;
}
<!-- $(window).load(function () {
"use strict";
function loadingScreen() {
$(".loader").fadeOut(2000);
}
(function() {
var counter = 3,
h2 = document.getElementById("blank1"),
spinningLogo = document.getElementById("blank2"),
loadingText = document.getElementById("blank3");
setInterval(function() {
counter -= 1;
if (counter === 0) {
clearInterval(counter);
h2.innerHTML = "";
spinningLogo.innerHTML = "";
loadingText.innerHTML = "";
loadingScreen();
}
}, 1000);
}());
}); -->
/* FRONT PAGE LOADER */
.loader {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 9999;
background: white;
text-align: center;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.loader::before,
.center-center {
content: '';
flex-grow: 1;
flex-basis: 0;
display: flex;
align-items: center;
justify-content: center;
}
.center-center h3 {
margin: 0;
}
.centered p {
margin-bottom: 0;
}
.loading-img {
width: 80px;
height: 80px;
-webkit-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
}
/*SPIN THE LOGO */
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg);
}
100% {
-moz-transform: rotate(360deg);
}
}
@-o-keyframes spin {
0% {
-o-transform: rotate(0deg);
}
100% {
-o-transform: rotate(360deg);
}
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="loader">
<div class="centered" id="blank2"><img class="img-responsive loading-img" src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Newscycle-Circle.png" />
<p id="blank3">LOADING</p>
</div>
<div class="center-center">
<h3 id="blank1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et ultricies risus. Sed pulvinar leo non ligula luctus aliquet.</h3>
</div>
</div>
也可以使用transform: translate
而不是伪,与Flexbox结合使用
请注意,它可以使文字和图像在较小(低)的屏幕上重叠
<!-- $(window).load(function () {
"use strict";
function loadingScreen() {
$(".loader").fadeOut(2000);
}
(function() {
var counter = 3,
h2 = document.getElementById("blank1"),
spinningLogo = document.getElementById("blank2"),
loadingText = document.getElementById("blank3");
setInterval(function() {
counter -= 1;
if (counter === 0) {
clearInterval(counter);
h2.innerHTML = "";
spinningLogo.innerHTML = "";
loadingText.innerHTML = "";
loadingScreen();
}
}, 1000);
}());
}); -->
/* FRONT PAGE LOADER */
.loader {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 9999;
background: white;
text-align: center;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.center-center {
position: absolute;
top: 75%;
width: 100%;
left: 0;
transform: translateY(-50%);
text-align: center;
}
.center-center h3 {
margin: 0;
}
.centered p {
margin-bottom: 0;
}
.loading-img {
width: 80px;
height: 80px;
-webkit-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
}
/*SPIN THE LOGO */
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg);
}
100% {
-moz-transform: rotate(360deg);
}
}
@-o-keyframes spin {
0% {
-o-transform: rotate(0deg);
}
100% {
-o-transform: rotate(360deg);
}
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="loader">
<div class="centered" id="blank2"><img class="img-responsive loading-img" src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Newscycle-Circle.png" />
<p id="blank3">LOADING</p>
</div>
<div class="center-center">
<h3 id="blank1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h3>
</div>
</div>
还可以单独使用transform: translate
(它的浏览器支持比Flexbox略好)
请注意,它可以使文字和图像在较小(低)的屏幕上重叠
<!-- $(window).load(function () {
"use strict";
function loadingScreen() {
$(".loader").fadeOut(2000);
}
(function() {
var counter = 3,
h2 = document.getElementById("blank1"),
spinningLogo = document.getElementById("blank2"),
loadingText = document.getElementById("blank3");
setInterval(function() {
counter -= 1;
if (counter === 0) {
clearInterval(counter);
h2.innerHTML = "";
spinningLogo.innerHTML = "";
loadingText.innerHTML = "";
loadingScreen();
}
}, 1000);
}());
}); -->
/* FRONT PAGE LOADER */
.loader {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 9999;
background: white;
text-align: center;
}
.centered {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.center-center {
position: absolute;
top: 75%;
width: 100%;
left: 0;
transform: translateY(-50%);
text-align: center;
}
.center-center h3 {
margin: 0;
}
.centered p {
margin-bottom: 0;
}
.loading-img {
width: 80px;
height: 80px;
-webkit-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
}
/*SPIN THE LOGO */
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg);
}
100% {
-moz-transform: rotate(360deg);
}
}
@-o-keyframes spin {
0% {
-o-transform: rotate(0deg);
}
100% {
-o-transform: rotate(360deg);
}
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="loader">
<div class="centered" id="blank2"><img class="img-responsive loading-img" src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Newscycle-Circle.png" />
<p id="blank3">LOADING</p>
</div>
<div class="center-center">
<h3 id="blank1">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h3>
</div>
</div>
答案 1 :(得分:0)
将display: flex
添加到center-center
并使用flex属性将文本置于剩余空间的中心位置:
/* FRONT PAGE LOADER */
.loader {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 9999;
background: white;
text-align: center;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: column;
}
.center-center {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
}
.loading-img {
width: 80px;
height: 80px;
-webkit-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
}
/*SPIN THE LOGO */
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg);
}
100% {
-moz-transform: rotate(360deg);
}
}
@-o-keyframes spin {
0% {
-o-transform: rotate(0deg);
}
100% {
-o-transform: rotate(360deg);
}
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
&#13;
<div class="loader">
<div class="centered" id="blank2"><img class="img-responsive loading-img" src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Newscycle-Circle.png" />
<p id="blank3">LOADING</p>
</div>
<div class="center-center">
<h3 id="blank1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et ultricies risus. Sed pulvinar leo non ligula luctus aliquet.</h3>
</div>
</div>
&#13;