如何为html元素的填充设置动画

时间:2016-05-19 04:32:17

标签: javascript html css angularjs css-transitions

所以我遇到的问题是我试图设置圆形html元素的填充动画。圆圈以灰色开始,用户将提供一个数字,圆圈将通过使另一个蓝色圆圈填充到用户指定的原始圆圈的百分比来改变颜色。我无法弄清楚如何动画或创建蓝色圆圈的填充。

HTML

<div class="circle circle-outer-border">
    <div class="circle circle-background">
        <div class="circle circle-fill"></div>
    </div>
</div>

CSS

.circle{
  height: 200px;
  width: 200px;
  -moz-border-radius: 100px;
  -webkit-border-radius: 100px;
}

.circle-outer-border{
  border: 1px solid black;
}

.circle-background{
  border: 20px solid #b1b1b1;
  background-color: transparent;
  margin-left: -1px; margin-top: -1px /** to make up for outer-border        margin**/
}

.circle-fill{
  border: 20px solid #147fc3;
  background-color: transparent;
  margin-left: -21px; margin-top: -21px;
}

所以我有3个圆圈,一个用于黑色边框,一个用于显示灰色边框,第三个用于第三个圆圈,这是我将动画起来作为蓝色填充的一个&# 39;我把它们叠在一起,以便给它带来拨号效果。再一次,我只是不确定如何制作动画,有没有办法只显示蓝色圆圈的一部分并不断显示更多,直到它显示整个蓝色圆圈?感谢您的帮助。我在angularjs应用程序中写这个,但还没有编写angularjs代码。

1 个答案:

答案 0 :(得分:0)

我简化了你的解决方案。而不是3个DIV,只有2个。

外部DIV绘制圆圈并说“我的孩子不会溢出”。

内部DIV是一个简单的矩形。他是你的动画,从底部开始并上下移动他。

正好像在船上看一个舷窗!

.circle{
  height: 200px;
  width: 200px;
}
.circle-outer-border{
  position: relative;
  border: 1px solid black;
  border-radius: 100px;
  -moz-border-radius: 100px;
  -webkit-border-radius: 100px;
  overflow: hidden;
}

.circle-fill{
  position: absolute;
  top: 0;
  left: 0;
  background-color: #147fc3;
}

.animated .circle-fill {
  -webkit-animation: fillerup 5s infinite;
  animation: fillerup 5s infinite;
}
.static .circle-fill {
  top: 150px;
}

@-webkit-keyframes fillerup {
  0% {
    top: 200px;
  }
  100% {
    top: 0px;
  }
}
@keyframes fillerup {
  0% {
    top: 200px;
  }
  100% {
    top: 0;
  }
}
<div class="circle circle-outer-border animated">
  <div class="circle circle-fill"></div>
</div>
<br/>
<div class="circle circle-outer-border static">
  <div class="circle circle-fill"></div>
</div>