Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 填充半圆动画_Jquery_Html_Css_Css Animations_Css Shapes - Fatal编程技术网

Jquery 填充半圆动画

Jquery 填充半圆动画,jquery,html,css,css-animations,css-shapes,Jquery,Html,Css,Css Animations,Css Shapes,我从雅虎天气应用程序中看到了这个动画。我觉得很酷,我想去 现在我创建了半圆,并使用css关键帧使太阳沿着曲线路径运行 @-webkit-keyframes rotatekey { from {-webkit-transform: rotate(0deg);} to {-webkit-transform: rotate(360deg);} } .rotate { -webkit-animation-name: rotatekey; -webkit-animation-duration: 7s;

我从雅虎天气应用程序中看到了这个动画。我觉得很酷,我想去

现在我创建了半圆,并使用css关键帧使太阳沿着曲线路径运行

@-webkit-keyframes rotatekey {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}

.rotate {
-webkit-animation-name: rotatekey; 
-webkit-animation-duration: 7s; 
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
}

但是我想知道如何使用css和javascript使黄色区域填充半圆?外半圆是透明区域。

您可以使用关键帧动画实现此效果。在这个演示中,我使用了一个伪元素来创建填充形状,并为该伪元素的宽度设置了动画,以“填充”父元素:

.wrapper{
边框左上半径:500px;
边框右上角半径:500px;
宽度:500px;高度:250px;
溢出:隐藏;
边框:3件金色虚线;
边框底部:无;
}
.包装工:之后{
内容:'';
显示:块;
宽度:100px;高度:100%;
背景:金;
-webkit动画:填充7s线性无限;
动画:填充7s线性无限;
}
@-webkit关键帧填充{
从{宽度:0;}
到{宽度:100%;}
}
@关键帧填充{
从{宽度:0;}
到{宽度:100%;}
}
试试这个:


.wrapper{
保证金:1rem;
宽度:400px;
高度:200px;
溢出:隐藏;
边框底部:2倍实心#AAA;
}
.wrapper.半圆{
边框:2倍实心#AAA;
宽度:400px;
高度:400px;
边界半径:200px;
框大小:边框框;
溢出:隐藏;
}
.wrapper.半圆.填充{
背景:rgba(200,192,32,0.5);
宽度:0%;
高度:200px;
过渡:宽度1s,易于进出;
}
.wrapper.半圆:悬停。填充{
宽度:100%;
}

演示:

这里有一个替代方案,其中黄色旋转而不是横向填充:

HTML(伪元素万岁!):


Fiddle:

您已经用上面的代码制作了动画!:)问题是如何使黄色区域从左到右跟随太阳生长。我不是CSS专家,但我会准备两张图片:一张是空的半圆,另一张是填充的半圆。然后把一个放在另一个上面,操纵它们的宽度。为什么不制作一个圆角和溢出隐藏为半圆的div,将黄色表面作为div放在里面,从左到右或从0到100%的宽度设置动画?不需要图像我将创建一个单独的div,因为:after可能缺少compatibility@Alex,浏览器对伪元素的兼容性非常好(),并且达到了IE8,我认为它足够好,可以在大多数项目中使用它OP使用的关键帧动画甚至不受IE9支持,所以我认为浏览器对伪元素的支持与OP的情况无关。@WebTiki我尝试过了,对我来说效果很好!非常感谢。我想问你更多的问题,我怎样才能让太阳移动并相应地填充半圆?@Giffary太阳动画是如何触发的?@web tiki检查我的代码
<div id="horizon"></div>
#horizon:before {
   content: "";
    position: absolute;
    width: 400px;
    height: 400px;
    background: transparent;
    border:5px dashed #eee;
    -moz-border-radius: 50%;
    -webkit-border-radius: 50%;
    border-radius: 50%;
}

#horizon{
    width:410px;
    height:200px;
    position:relative;
    overflow:hidden;
}

#horizon:after {
   content: "";
    position: absolute;
    width: 400px;
    height: 200px;
    top:5px;
    left:5px;
    background: yellow;
    -moz-border-radius: 400px 400px 0 0;
    -webkit-border-radius: 400px 400px 0 0;
    border-radius: 400px 400px 0 0;
    -webkit-transform-origin: bottom;
    -moz-transform-origin: bottom;
    transform-origin: bottom;
    -webkit-animation-name: rotate; 
    -webkit-animation-duration: 5s; 
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: linear;
    -moz-animation-name: rotate; 
    -moz-animation-duration: 5s; 
    -moz-animation-iteration-count: infinite;
    -moz-animation-timing-function: linear;
}
@-moz-keyframes rotate {
    from {-moz-transform:rotateZ(180deg);}
    to {-moz-transform:rotateZ(360deg)}
}

@-webkit-keyframes rotate {
    from {-webkit-transform:rotateZ(180deg);}
    to {-webkit-transform:rotateZ(360deg)}
}