使用 CSS3 使按钮弹跳

Make Button Bounce with CSS3

我正在尝试使用 CSS3

让这个按钮弹跳

.order {
  position: absolute;
  top: 50px;
  left: 50px;
  width: 75px;
  line-height: 75px;
  text-align:center;
  opacity: 1;
  background: green;
  color:#fff;
  border-radius:50%;
}
<div class="order">Order</div>

我希望它在屏幕上(在 Z 轴上)上下弹跳。

发布的答案将是最好的答案,我仍然有不同的方法,因为你已经使用过 position:absolute

看到这个FIDDLE 您需要使用关键帧为按钮设置高度和宽度动画。

.order {
  background: url("http://onestudio.id-staging.com/_BUILD/Dominos/BANNERS/C3%20Digital%20Midweek%20Rescue/Wide%20Skyscraper/images/order.png") no-repeat;
  position: absolute;
  background-size: cover;
  top: 50px;
  left: 50px;
  width: 75px;
  height: 75px;
  z-index: 1;
  opacity: 1;
  -webkit-animation: mymove 1s infinite;
  /* Chrome, Safari, Opera */
  animation: mymove 1s infinite;
}
/* Chrome, Safari, Opera */

@-webkit-keyframes mymove {
  0% {
    height: 75px;
    width: 75px;
  }
  50% {
    height: 100px;
    width: 100px;
  }
  100% {
    height: 75px;
    width: 75px;
  }
}
/* Standard syntax */

@keyframes mymove {
  0% {
    height: 75px;
    width: 75px;
  }
  50% {
    height: 100px;
    width: 100px;
  }
  100% {
    height: 75px;
    width: 75px;
  }
}
<div class="order"></div>

编辑:

To add further, you can also animate left and top to 38px both so the button doesn't look like deviating from original position see this Fiddle

.order {
  background: url("http://onestudio.id-staging.com/_BUILD/Dominos/BANNERS/C3%20Digital%20Midweek%20Rescue/Wide%20Skyscraper/images/order.png") no-repeat;
  position: absolute;
  background-size: cover;
  top: 50px;
  left: 50px;
  width: 75px;
  height: 75px;
  z-index: 1;
  opacity: 1;
  -webkit-animation: mymove 1s infinite;
  /* Chrome, Safari, Opera */
  animation: mymove 0.5s 2;
}
/* Standard syntax */

@keyframes mymove {
  0% {
    height: 75px;
    width: 75px;
    left: 50px;
    top: 50px;
  }
  50% {
    height: 100px;
    width: 100px;
    left: 38px;
    top: 38px;
  }
  100% {
    height: 75px;
    width: 75px;
    left: 50px;
    top: 50px;
  }
}
<div class="order"></div>

您可以使用关键帧动画为按钮的比例设置动画并使其弹跳:

.order {
  position: absolute;
  top: 50px;
  left: 50px;
  width: 75px;
  line-height: 75px;
  text-align:center;
  opacity: 1;
  background: green;
  color:#fff;
  border-radius:50%;
  -webkit-animation: bounce .3s infinite alternate;
  -moz-animation: bounce .3s infinite alternate;
  animation: bounce .3s infinite alternate;
}
@-webkit-keyframes bounce {
  to { -webkit-transform: scale(1.2); }
}
@-moz-keyframes bounce {
  to { -moz-transform: scale(1.2); }
}
@keyframes bounce {
  to { transform: scale(1.2); }
}
<div class="order">Order</div>

迭代次数:

如果你想在 "bounces" 之后停止动画,你可以使用 animation-iteration-count (使用偶数次迭代否则动画会在结束时卡住):

.order {
  position: absolute;
  top: 50px;
  left: 50px;
  width: 75px;
  line-height: 75px;
  text-align:center;
  opacity: 1;
  background: green;
  color:#fff;
  border-radius:50%;
  -webkit-animation: bounce .3s infinite alternate;
  -moz-animation: bounce .3s infinite alternate;
  animation: bounce .3s infinite alternate;
  -webkit-animation-iteration-count: 8;
  -moz-animation-iteration-count: 8;
  animation-iteration-count: 8;
}
@-webkit-keyframes bounce {
  to { -webkit-transform: scale(1.2); }
}
@-moz-keyframes bounce {
  to { -moz-transform: scale(1.2); }
}
@keyframes bounce {
  to { transform: scale(1.2); }
}
<div class="order">Order</div>

试试这个 css

.order {
    background:url("http://onestudio.id-staging.com/_BUILD/Dominos/BANNERS/C3%20Digital%20Midweek%20Rescue/Wide%20Skyscraper/images/order.png");
      background-size: cover;
      position: absolute;
      top:50px;
      left:50px;
      width: 75px;
      height: 75px;
      z-index:1;
      opacity:1;

}

@keyframes fade {
    from { top:40px;
      left:40px;
      width: 100px;
      height: 100px; }
    50% { top:50px;
      left:50px;
      width: 75px;
      height: 75px; }
    to { top:40px;
      left:40px;
      width: 100px;
      height: 100px; }
}

@-webkit-keyframes fade {
    from { top:40px;
      left:40px;
      width: 100px;
      height: 100px; }
    50% { top:50px;
      left:50px;
      width: 75px;
      height: 75px; }
    to { top:40px;
      left:40px;
      width: 100px;
      height: 100px; }
}

.blink {
    animation:fade 1000ms infinite;
    -webkit-animation:fade 1000ms infinite;
}

试试这个 html

<div class="order blink"></div>

您可以像下面这样设置动画(弹跳):

CSS:

.order {
    background:url("http://onestudio.id-staging.com/_BUILD/Dominos/BANNERS/C3%20Digital%20Midweek%20Rescue/Wide%20Skyscraper/images/order.png");
      position: absolute;
      top:50px;
      left:50px;
      width: 75px;
      height: 75px;
      z-index:1;
      opacity:1;
      animation: myfirst 2s infinite;
      -webkit-animation: myfirst 2s infinite; 
}

    @-webkit-@keyframes myfirst {

    0% {
    transform: scale(1);
  }
  50% {
   transform: scale(1.5);
  }
  100% {
   transform: scale(1);
  }
}

@keyframes myfirst {

    0% {
    transform: scale(1);
  }
  50% {
   transform: scale(1.5);
  }
  100% {
   transform: scale(1);
  }
}

勾选Fiddle