Javascript 可缩放css百分比环
我试图将下面的代码基本上转换成一个可伸缩的版本,我尝试使用vw和vh、%值等,但我似乎无法获得正确的值平衡。感谢您的帮助 此代码笔还可能有助于:Javascript 可缩放css百分比环,javascript,html,css,css-shapes,Javascript,Html,Css,Css Shapes,我试图将下面的代码基本上转换成一个可伸缩的版本,我尝试使用vw和vh、%值等,但我似乎无法获得正确的值平衡。感谢您的帮助 此代码笔还可能有助于: .arrow{ 位置:相对位置; 高度:0px; 宽度:0px; 边框顶部:18px实心#dd1111; 左边框:11px实心透明; 右边框:11px实心透明; 位置:绝对位置; 底部:40px; 左:57px; z指数:1; 动画:加载箭头1.6s线性; 动画填充模式:正向; -webkit动画:加载箭头1.6s线性; -webkit动画填充模式:
.arrow{
位置:相对位置;
高度:0px;
宽度:0px;
边框顶部:18px实心#dd1111;
左边框:11px实心透明;
右边框:11px实心透明;
位置:绝对位置;
底部:40px;
左:57px;
z指数:1;
动画:加载箭头1.6s线性;
动画填充模式:正向;
-webkit动画:加载箭头1.6s线性;
-webkit动画填充模式:正向;
}
@关键帧加载箭头{
从{
变换:平移(0,0);
}
到{
转换:转换(0,55px);
}
}
@-webkit关键帧加载箭头{
从{
-webkit转换:转换(0,0);
}
到{
-webkit转换:转换(0,55px);
}
}
.馅饼{
宽度:140px;
高度:140像素;
位置:相对位置;
边界半径:140像素;
背景色:#DD1111;
浮动:左;
右边距:10px;
}
.馅饼.头衔{
位置:绝对位置;
底部:-40px;
文本对齐:居中;
宽度:100%;
}
.面具{
位置:绝对位置;
宽度:100%;
身高:100%;
}
.1.右内侧{
变换:旋转(160度);
动画:load-right-pie-1 1s线性;
-webkit动画:load-right-pie-1 1s线性;
-webkit变换:旋转(160度);
}
@关键帧load-right-pie-1{
从{
变换:旋转(0度);
}
到{
变换:旋转(160度);
}
}
@-webkit关键帧load-right-pie-1{
从{
-webkit变换:旋转(0度);
}
到{
-webkit变换:旋转(160度);
}
}
.左外{
剪辑:rect(0px 70px 140px 0px);
}
.外右翼{
剪辑:rect(0px 140px 140px 70px);
}
.左内侧{
背景色:#710000;
位置:绝对位置;
宽度:100%;
身高:100%;
边界半径:100%;
剪辑:rect(0px 70px 140px 0px);
变换:旋转(-180度);
-webkit变换:旋转(-180度);
}
.内右翼{
背景色:#710000;
位置:绝对位置;
宽度:100%;
身高:100%;
边界半径:100%;
剪辑:rect(0px 70px 140px 0px);
变换:旋转(180度);
-webkit变换:旋转(180度);
}
.内容{
宽度:100px;
高度:100px;
边界半径:50%;
背景色:#fff;
位置:绝对位置;
顶部:20px;
左:20px;
线高:100px;
字体系列:arial,无衬线;
字体大小:35px;
文本对齐:居中;
z指数:2;
}
.内容跨度{
不透明度:0;
动画:加载内容3s;
动画填充模式:正向;
动画延迟:0.6s;
-webkit动画:加载内容3s;
-webkit动画填充模式:正向;
-webkit动画延迟:0.6s;
}
@关键帧加载内容{
从{
不透明度:0;
}
到{
不透明度:1;
}
}
@-webkit关键帧加载内容{
从{
不透明度:0;
}
到{
不透明度:1;
}
}
啁啾
44%
这是一个很好的插件。这是和
希望这能解决您的问题。您可以使用
svg
和JavaScript简化代码并使其动态化
这个代码是做什么的
文本
标记中提取百分比值,计算角度并将其存储到动画中θ=0
设置为计算角度的动画文本
标记中的44%
,即可动态设置百分比。
- 有效格式-->
-%|-%
,包括浮点值-%
t
变量来更改动画速度svg的
宽度和高度取决于#容器的宽度
var dark=document.getElementById('dark'),
t=5,
percentage=parseInt(document.getElementById('perc').innerHTML.slice(0,-1),10),
θ=0,
最大θ=(180*百分比)/50,
radius=document.getElementById('svg').getBBox().width/2;
setAttribute('transform','translate('+radius+','+radius+'));
var animate=setInterval(函数(){
θ+=0.5;
变量d='M0,0v'+-radius++'A'+radius++','+radius++'1'+((θ>180)?1:0)+',1'+Math.sin(θ*Math.PI/180)*radius++','+Math.cos(θ*Math.PI/180)*-radius++'z';
暗.setAttribute('d',d);
如果(θ>最大θ){
clearInterval(动画);
}
},t)代码>
44%
如果您使用svg
,这可以简化为少于10行(包括动画)。我从未使用过svg,因此我不使用它。。。但请告诉我有多确定,我会写一个答案。:)我尝试过使用这个插件,但实现起来非常奇怪,试图让我的网站插件保持免费,因为它会减慢速度。如果需要的话,我会回到他们的芯片上,我在mozilla中使用的代码有问题,你能解释一下吗?克里斯