kitematic/styles/radial.less

138 строки
3.2 KiB
Plaintext

@import "variables.less";
@-webkit-keyframes rotating {
from{
-webkit-transform: rotate(0deg);
}
to{
-webkit-transform: rotate(360deg);
}
}
.radial-progress {
&.radial-spinner {
-webkit-animation: rotating 1.6s linear infinite;
}
@circle-size: 140px;
@circle-background: red;
@inset-size: @circle-size - 4;
@inset-color: white;
@transition-length: 1s;
// @percentage-color: #3FD899;
@percentage-font-size: 24px;
@percentage-text-width: 57px;
background: white;
margin: 0 auto;
width: @circle-size;
height: @circle-size;
border-radius: 100%;
.circle {
.mask, .fill, .shadow {
width: @circle-size;
height: @circle-size;
position: absolute;
border-radius: 100%;
}
.mask, .fill {
-webkit-backface-visibility: hidden;
transition: -webkit-transform @transition-length;
transition: -ms-transform @transition-length;
transition: transform @transition-length;
border-radius: 100%;
}
.mask {
clip: rect(0px, @circle-size, @circle-size, @circle-size/2.0);
.fill {
clip: rect(0px, @circle-size/2.0, @circle-size, 0px);
background-color: @brand-action;
}
}
}
.inset {
width: @inset-size;
height: @inset-size;
position: absolute;
margin-left: (@circle-size - @inset-size) / 2.0;
margin-top: (@circle-size - @inset-size) / 2.0;
background-color: @inset-color;
border-radius: 100%;
.percentage {
width: @percentage-text-width;
position: absolute;
top: (@inset-size - @percentage-font-size) / 2.0;
left: (@inset-size - @percentage-text-width) / 2.0;
line-height: 1;
text-align: center;
color: @brand-primary;
font-weight: 500;
font-size: @percentage-font-size;
}
}
&.radial-negative .circle .mask .fill {
background-color: @brand-negative;
}
&.radial-positive .circle .mask .fill {
background-color: @brand-positive;
}
&.radial-thick {
@inset-size: @circle-size - 10;
.inset {
width: @inset-size;
height: @inset-size;
margin-left: (@circle-size - @inset-size) / 2.0;
margin-top: (@circle-size - @inset-size) / 2.0;
.percentage {
top: (@inset-size - @percentage-font-size) / 2.0;
left: (@inset-size - @percentage-text-width) / 2.0;
}
}
}
&.radial-gray {
background: @gray-lightest;
}
&.radial-transparent {
@inset-color: @color-background;
background: @color-background;
.inset {
background-color: @inset-color;
}
}
@i: 0;
@increment: 180deg / 100;
.loop (@i) when (@i <= 100) {
&[data-progress="@{i}"] {
.circle {
.mask.full, .fill {
-webkit-transform: rotate(@increment * @i);
-ms-transform: rotate(@increment * @i);
transform: rotate(@increment * @i);
}
.fill.fix {
-webkit-transform: rotate(@increment * @i * 2);
-ms-transform: rotate(@increment * @i * 2);
transform: rotate(@increment * @i * 2);
}
}
.inset .percentage:before {
content: "@{i}%"
}
}
.loop(@i + 1);
}
.loop(@i);
}