0

我用CSS 动画创建了一个旋转齿轮。现在我希望整个旋转齿轮 div 的动画从1%to110%100%再回到1%. 或者基本上1px90px80px正常大小)然后回到1px.

现在,我在#spinnerdiv 内的元素上使用的 jQuery 正在为它设置动画,但它仍然关闭。动画应该像 CSS 过渡比例一样,从 1% 放大到 110%。目前我的动画偏离中心。

有什么想法吗?

jsFiddle: http: //jsfiddle.net/leongaban/d7UjD/681/
新 CodePen:http ://codepen.io/leongaban/pen/wJAip

#spinner我是否必须为div中的每个元素设置动画?

在此处输入图像描述


用于放大和缩小动画的 jQuery:

function firstAnimate() {
    $('#spinner').animate({width: "110px", height: "110px"}, secoundAnimate);
}

function secoundAnimate() {
    $('#spinner').animate({width: "80px", height: "80px"}, 'slow', thirdAnimate);
}

function thirdAnimate() {
    $('#spinner').animate({width: "1px", height: "1px"}, 'fast', fourthAnimate);
}

function fourthAnimate() {
    $('#spinner').hide;
}

firstAnimate();


我的旋转齿轮 HTML:

<div id="spinner">
    <div id="logo">
        <img src="http://leongaban.com/_codepen/whoat/loader-logo.png"/>
    </div>
    <div id="gear" class="spin">
        <img src="http://leongaban.com/_codepen/whoat/loader-gear.png"/>
    </div>
</div>


CSS:

#spinner {
    position: absolute;
    width: 80px; height: 80px;
    top: 35%; left: 50%;
    margin-left: -40px;
    background: blue;
}

#logo {
    position: absolute; top: 0; left: 0; width: 80px; height: 80px; z-index: 3;
}

#logo img { width: 100%; height:100%; }

#gear {
   position: absolute; top: 0; left: 0;
   -webkit-transition: -webkit-transform 0.1s;
   transition: transform 0.1s;
   -webkit-transform: translateX(100%) translateY(-100%) rotate(45deg);
   transform: translateX(100%) translateY(-100%) rotate(45deg);
   z-index: 2;
}
#gear img { display:block; }
4

1 回答 1

0

我不得不结合使用 CSS scale 和 jQuery 来获得我想要的效果。

Scale 在毫不费力地从中心放大方面做得更好,谢谢@Zeaklous

http://codepen.io/leongaban/pen/wJAip

需要一个类来动画和一个动画下来:

.animateUp {
    -webkit-animation: animateUp .5s ease-in-out;
    animation: animateUp .5s ease-in-out;
}
.animateDown {
   -webkit-animation: animateDown .5s ease-in-out;
   animation: animateDown .5s ease-in-out;
}

@-webkit-keyframes animateUp { 
    0%  {
        -webkit-transform: scale(.1);
       transform: scale(.1);
    }
    70% {
        -webkit-transform: scale(1.1);
        transform: scale(1.1);
    }
    100% {
        -webkit-transform: scale(1);
        transform: scale(1);
    }
}
@-webkit-keyframes animateDown { 
    0%  {
        -webkit-transform: scale(1);
        transform: scale(.1);
    }
    100% { 
        -webkit-transform: scale(.1);
        transform: scale(.1);
    }
}

jQuery,所以我可以控制它何时进出动画:

$('#animate-up').unbind('click').bind('click', function() {
    $('#spinner').removeClass('animateDown');
    $('#spinner').addClass('animateUp');
    console.log('animate up');
});

$('#animate-down').unbind('click').bind('click', function() {
    $('#spinner').removeClass('animateUp');
    $('#spinner').addClass('animateDown');
    console.log('animate down');
});
于 2013-09-25T18:58:43.367 回答