【发布时间】:2015-03-09 16:02:39
【问题描述】:
我正在尝试将下面的代码基本上转换为可扩展的版本,我尝试过使用 vw 和 vh、%values 等,但我似乎无法获得有效的值的正确平衡。任何帮助表示赞赏。
这个 codepen 也可能有帮助:http://codepen.io/anon/pen/dPNgvP
.arrow {
position: relative;
height: 0px;
width: 0px;
border-top: 18px solid #dd1111;
border-left: 11px solid transparent;
border-right: 11px solid transparent;
position: absolute;
bottom: 40px;
left: 57px;
z-index: 1;
animation: load-arrow 1.6s linear;
animation-fill-mode: forwards;
-webkit-animation: load-arrow 1.6s linear;
-webkit-animation-fill-mode: forwards;
}
@keyframes load-arrow {
from {
transform: translate(0, 0);
}
to {
transform: translate(0, 55px);
}
}
@-webkit-keyframes load-arrow {
from {
-webkit-transform: translate(0, 0);
}
to {
-webkit-transform: translate(0, 55px);
}
}
.pie {
width: 140px;
height: 140px;
position: relative;
border-radius: 140px;
background-color: #DD1111;
float: left;
margin-right: 10px;
}
.pie .title {
position: absolute;
bottom: -40px;
text-align: center;
width: 100%;
}
.mask {
position: absolute;
width: 100%;
height: 100%;
}
.pie1 .inner-right {
transform: rotate(160deg);
animation: load-right-pie-1 1s linear;
-webkit-animation: load-right-pie-1 1s linear;
-webkit-transform: rotate(160deg);
}
@keyframes load-right-pie-1 {
from {
transform: rotate(0deg);
}
to {
transform: rotate(160deg);
}
}
@-webkit-keyframes load-right-pie-1 {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(160deg);
}
}
.outer-left {
clip: rect(0px 70px 140px 0px);
}
.outer-right {
clip: rect(0px 140px 140px 70px);
}
.inner-left {
background-color: #710000;
position: absolute;
width: 100%;
height: 100%;
border-radius: 100%;
clip: rect(0px 70px 140px 0px);
transform: rotate(-180deg);
-webkit-transform: rotate(-180deg);
}
.inner-right {
background-color: #710000;
position: absolute;
width: 100%;
height: 100%;
border-radius: 100%;
clip: rect(0px 70px 140px 0px);
transform: rotate(180deg);
-webkit-transform: rotate(180deg);
}
.content {
width: 100px;
height: 100px;
border-radius: 50%;
background-color: #fff;
position: absolute;
top: 20px;
left: 20px;
line-height: 100px;
font-family: arial, sans-serif;
font-size: 35px;
text-align: center;
z-index: 2;
}
.content span {
opacity: 0;
animation: load-content 3s;
animation-fill-mode: forwards;
animation-delay: 0.6s;
-webkit-animation: load-content 3s;
-webkit-animation-fill-mode: forwards;
-webkit-animation-delay: 0.6s;
}
@keyframes load-content {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@-webkit-keyframes load-content {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
<div class="pie pie1">
<div class="title">Twitter</div>
<div class="outer-right mask">
<div class="inner-right"></div>
</div>
<div class="outer-left mask">
<div class="inner-left"></div>
</div>
<div class="content">
<span>44%</span>
</div>
</div>
【问题讨论】:
-
如果你使用
svg,这可以简化到少于10行(包括动画)。 -
我从未使用过 SVG,因此我不使用它...但请随时告诉我如何使用
-
当然,我会写一个答案。 :)
标签: javascript html css css-shapes