动画未运行

时间:2017-08-20 12:29:23

标签: css css3 animation css-animations

我正在尝试使用CSS动画制作加载屏幕。屏幕是4个不同的酒吧缩小和增长。我想把它们安排在这个形成一个正方形的地层中。我使用绝对定位来定位它们,但我想知道是否有更好的方法。我设法做了3个显示和浮动的酒吧,但没有设法做最后一个。

现在,动画根本没有运行。有人可以帮帮我吗?

代码: https://codepen.io/ngmh/pen/gxewJK

HTML:

<div id="top"></div>
<div id="right"></div>
<div id="bottom"></div>
<div id="left"></div>

CSS:

#top{
  background-color: red;
  width: 100px;
  height: 25px;
  border-radius: 12.5px;
  position: absolute;
  left: 37.5px;
  animation-name: loading-1;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
#bottom{
  background-color: yellow;
  width: 100px;
  height: 25px;
  border-radius: 12.5px;
  position: absolute;
  top: 112.5px;
  animation-name: loading-1;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
#left{
  background-color: blue;
  width: 25px;
  height: 100px;
  border-radius: 12.5px;
  animation-name: loading-2;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
#right{
  background-color: green;
  width: 25px;
  height: 100px;
  border-radius: 12.5px;
  position: absolute;
  left: 112.5px;
  top: 37.5px;
  animation-name: loading-2;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
@keyframes loading-1{
  0%:{width: 100px;}
  50%:{width: 10px;}
  100%:{width: 100px;}
}
@keyframes loading-2{
  0%:{height: 100px;}
  50%:{height: 10px;}
  100%:{height: 100px;}
}

1 个答案:

答案 0 :(得分:1)

:规则中的百分号%后面不应该有冒号@keyframes

#top{
  background-color: red;
  width: 100px;
  height: 25px;
  border-radius: 12.5px;
  position: absolute;
  left: 37.5px;
  animation-name: loading-1;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
#bottom{
  background-color: yellow;
  width: 100px;
  height: 25px;
  border-radius: 12.5px;
  position: absolute;
  top: 112.5px;
  animation-name: loading-1;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
#left{
  background-color: blue;
  width: 25px;
  height: 100px;
  border-radius: 12.5px;
  animation-name: loading-2;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
#right{
  background-color: green;
  width: 25px;
  height: 100px;
  border-radius: 12.5px;
  position: absolute;
  left: 112.5px;
  top: 37.5px;
  animation-name: loading-2;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
@keyframes loading-1{
  0% {width: 100px;}
  50% {width: 10px;}
  100% {width: 100px;}
}
@keyframes loading-2{
  0% {height: 100px;}
  50% {height: 10px;}
  100% {height: 100px;}
}
<div id="top"></div>
<div id="right"></div>
<div id="bottom"></div>
<div id="left"></div>

使用伪元素会使标记变小,并且可能更易于维护。

outer不使用绝对定位,并且会与其他内容一起更好地流动。

.outer {
  position: relative;
}
.outer div,
.outer::before,
.outer::after,
.outer div::before,
.outer div::after {
  content: '';
  position: absolute;
  border-radius: 12.5px;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}
.outer::before {
  background-color: red;
  width: 100px;
  height: 25px;
  left: 37.5px;
  animation-name: loading-1;
}
.outer::after{
  background-color: yellow;
  width: 100px;
  height: 25px;
  top: 112.5px;
  animation-name: loading-1;
}
.outer div::before{
  background-color: blue;
  width: 25px;
  height: 100px;
  animation-name: loading-2;
}
.outer div::after{
  background-color: green;
  width: 25px;
  height: 100px;
  left: 112.5px;
  top: 37.5px;
  animation-name: loading-2;
}
@keyframes loading-1{
  0% {width: 100px;}
  50% {width: 10px;}
  100% {width: 100px;}
}
@keyframes loading-2{
  0% {height: 100px;}
  50% {height: 10px;}
  100% {height: 100px;}
}
<div class="outer"><div></div></div>