【问题标题】:CSS3 /CSS - spinning background imageCSS3 /CSS - 旋转背景图片
【发布时间】:2018-07-05 00:39:47
【问题描述】:

是否可以在 css 中旋转背景图像?

我可以使用以下方法旋转元素:

@-webkit-keyframes spinX
{  
0%   {-webkit-transform: rotateX(0deg); -webkit-transform-origin: 0% 50% 0;}  
100% {-webkit-transform: rotateX(360deg); -webkit-transform-origin: 0% 50% 0;}  
}

@-webkit-keyframes spinY
{  
0%   {-webkit-transform: rotateY(0deg); -webkit-transform-origin: 0% 0% 5;}  
100% {-webkit-transform: rotateY(360deg); -webkit-transform-origin: 0% 0% 5;}  
}  

但是如果我想旋转一个元素的背景图像呢?

什么都找不到,我可以使用 gif,但如果可能的话,我想用 css 制作它!

有什么想法吗? 谢谢

我忘了说是否可以使动画跨浏览器支持:P

【问题讨论】:

标签: css background-image


【解决方案1】:

您可以在伪元素上设置背景,例如之后

.main {
    width: 200px;
    height: 300px;
    position: relative;
    border: solid 1px gray;
}

.main:after {
    width: 100%;
    height: 100%;
    position: absolute;
    background: url("http://placekitten.com/800/1200");
    background-size: cover;
    content: '';
    -webkit-animation: spinX 3s infinite;
    animation: spinX 3s infinite;
}

@-webkit-keyframes spinX
{  
0%   {-webkit-transform: rotateX(0deg); -webkit-transform-origin: 0% 50% 0;}  
100% {-webkit-transform: rotateX(360deg); -webkit-transform-origin: 0% 50% 0;}  
}
@keyframes spinX
{  
0%   {transform: rotateX(0deg); transform-origin: 0% 50% 0;}  
100% {transform: rotateX(360deg); transform-origin: 0% 50% 0;}  
}
<div class="main"></div>

demo

【讨论】:

    【解决方案2】:

    您可以将背景放在伪元素上,例如 ::before 并为其设置动画。

    Exampleanother one :)


    如果图片上方有内容,add z-index: -1 to the pseudo element

    【讨论】:

    • +1 在你的例子中,我无法停止观看这个生物 - 轧花和疾驰哈哈 ^_^
    • @One Trick Pony 您的动画示例是否可能仅受 webkit 浏览器支持?没有办法获得完整的浏览器支持? :P
    • 它适用于所有浏览器,只需添加一个-moz 版本和一个无前缀版本 - check this fiddle。我使用 webkit 只是因为你在 Q 中只有 webkit 属性
    • 其实你可以去掉-moz属性。看来Firefox现在支持不带前缀的animationkeyframes,比如IE和Opera :)