鼠标悬停时的CSS3背景旋转动画

Posted

技术标签:

【中文标题】鼠标悬停时的CSS3背景旋转动画【英文标题】:CSS3 background rotation animation in mouse hover 【发布时间】:2012-09-12 10:42:43 【问题描述】:

这是我的 div。

   #div1
        position:   absolute;
        top:        50%;
        left:       50%;
        margin-left:-100px;
        margin-top: 420px;
        width:      158px;
        height:     158px;
        background-image:url(images/background.png);
    

我需要鼠标悬停事件的背景图像旋转 360 度动画。有谁能够帮我?谢谢。

【问题讨论】:

【参考方案1】:

这是您的要求:

jsFiddle Demo

    <div id="div1">rterterrt
teteterrtetre<div id="div2">
</div></div>

.

 #div1
        position:   absolute;
        top:        50%;
        left:       50%;
        margin-left:-100px;
        /*margin-top: 420px;*/
        width:      158px;
        height:     158px;


#div2


        /*margin-top: 420px;*/
        width:      158px;
        height:     158px;
        background-image:url(http://www.commentsyard.com/cy/01/6474/Mixed%20Flowers%20and%20a%20Bear.jpg);


#div2:hover 
    -webkit-animation-name: rotate; 
    -webkit-animation-duration: 2s; 
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: linear;
    -moz-animation-name: rotate; 
    -moz-animation-duration: 2s; 
    -moz-animation-iteration-count: infinite;
    -moz-animation-timing-function: linear;

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

​

【讨论】:

这会旋转整个 div。 用户请求和我的结果有什么区别? div 可能包含他不想旋转的文本内容。在这种情况下,您需要将内容包装在div(或另一个标签)中并以相反方向旋转它使用绝对定位以覆盖div的伪元素的背景和而是旋转该伪元素。 不完全。文本应该在背景旋转的 div 内。更像这样dabblet.com/gist/3754605(旋转孩子以取消父母的旋转)。或者像这样(仅在 FF 中有效)dabblet.com/gist/3754578(具有伪元素和旋转伪元素的背景)。或者像这样dabblet.com/gist/3754586(具有绝对定位子元素而不是伪元素的背景)。【参考方案2】:

您不能通过 CSS(2,3 级)方式旋转背景图像。 因此,您唯一的选择是对该图像使用单独的元素,并将该元素作为一个整体进行旋转/动画处理。

但是您可以在CSS level 4 中执行此操作。

【讨论】:

【参考方案3】:

你可以使用伪元素来实现这一点

#div1
        position:   absolute;
        top:        50%;
        left:       50%;
        margin-left:-100px;
        margin-top: 420px;

#div:before 
   content: "";
   position: absolute;
   width: 158px;
   height: 158px;
   background-image:url(images/background.png);
   transition: all 1s linear;


#div:hover:before 
    transform:rotate(360deg);

【讨论】:

【参考方案4】:

仅使用 CSS 代码在 :hover 上旋转背景图像。

http://designshack.net/tutorialexamples/multiplebackgrounds/index.html

【讨论】:

以上是关于鼠标悬停时的CSS3背景旋转动画的主要内容,如果未能解决你的问题,请参考以下文章

css3关键帧悬停动画firefox

悬停时启动旋转动画,但悬停时仍会完成

悬停时的CSS 3旋转动画[重复]

CSS3 动画脱离 :hover

CSS3:动画精灵+悬停过渡

不悬停时的CSS动画