【问题标题】:Make Button Bounce with CSS3使用 CSS3 制作按钮弹跳
【发布时间】:2015-03-12 09:25:05
【问题描述】:

我正在尝试使用 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 轴上)上下弹跳。

【问题讨论】:

标签: html css button css-animations


【解决方案1】:

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

.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>

迭代次数:

如果您想在多次“弹跳”后停止动画,可以使用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>

【讨论】:

    【解决方案2】:

    试试这个 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>
    

    【讨论】:

      【解决方案3】:

      web-tiki 发布的答案将是最好的使用方法,但我仍然有不同的方法,因为您已经使用了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;
        }
      }
      &lt;div class="order"&gt;&lt;/div&gt;

      编辑:

      要进一步添加,您还可以将左侧和顶部动画都设置为 38 像素,这样 按钮看起来不像从原始位置偏离看到这个 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;
        }
      }
      &lt;div class="order"&gt;&lt;/div&gt;

      【讨论】:

        【解决方案4】:

        你可以像下面这样动画(反弹):

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多