我正在尝试将两个元素绝对居中在页面中间,其中一个在另一个后面。意图是创建一个完全响应式的页面,在页面中央有一个带有脉冲效果的圆形。以下是链接到示例的fiddle网站: http://jsfiddle.net/Fy8vD/2003/
html,
body {
height: 100%;
width: 100%;
}
body {
background: lightblue;
display: flex;
align-items: center;
justify-content: center;
}
.container {
display: flex;
align-items: center;
justify-content: center;
}
.sphere {
display: flex;
background: black;
border-radius: 300px;
height: 100px;
width: 100px;
}
.container:after {
display: flex;
background: #FFF;
border-radius: 300px;
height: 130px;
width: 130px;
animation: pulsate 2.5s ease-out;
animation-iteration-count: infinite;
opacity: 0.0;
content: "";
z-index: -1;
margin: auto;
}
@keyframes pulsate {
0% {
transform: scale(0.1, 0.1);
opacity: 0.0;
}
50% {
opacity: 1.0;
}
100% {
transform: scale(1.2, 1.2);
opacity: 0.0;
}
}
<div class="container">
<div class="sphere"></div>
</div>
方法:
我目前正在使用 flexbox 居中一个包含圆形的容器 div,以及在容器上使用 :after
标签创建脉冲效果。我尝试过使用 z-index(似乎没有什么作用)和绝对定位(需要硬编码像素值,而我想避免这样做)。
有没有一种优雅的方式使用 flexbox 来实现这个效果?
期望的效果:
这个例子已经很接近了,但如果可能的话,我想避免使用像素值来定义 :after
元素。