Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.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
Html 设置div背景位置动画(CSS)_Html_Css - Fatal编程技术网

Html 设置div背景位置动画(CSS)

Html 设置div背景位置动画(CSS),html,css,Html,Css,我想动画我的div的背景。背景位置应该从左上到右下移动。由于某种原因,什么也没有发生。我不知道为什么 .test { width: 50%; height: 250px; background: linear-gradient(to right, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%), linear-gradient(to bottom, green 0%, blue 100%); background

我想动画我的div的背景。背景位置应该从左上到右下移动。由于某种原因,什么也没有发生。我不知道为什么

.test {
    width: 50%;
    height: 250px;
    background: linear-gradient(to right, rgba(255,255,255,1) 0%, rgba(255,255,255,0) 100%), linear-gradient(to bottom, green 0%, blue 100%);
    background-size: 100% 100%;

    animation: moving-gradient 1s infinite;
}

@keyframes moving-gradient {
    0% {
        background-position: left top;
    }

    100% {
        background-position: right bottom;
    }
}
JSFiddle:


您必须为背景动画使用固定值才能工作:

@keyframes moving-gradient {
    0% {
        background-position: 0,0;
    }

    100% {
        background-position: 200px 250px, 200px 250px;
    }
}
因此,您还必须为元素设置固定宽度:

.test {
     width: 200px;

根据评论编辑 如果将“宽度”设置为视口单位,它也会起作用:

.test {
    width: 50vw;
    height: 250px;
在动画中

100% {
    background-position: 50vw 250px, 50vw 250px;
}


我不知道为什么,但查看Firebug中的
computed
选项卡显示视口单位实际上被解释为固定的
px
值您必须为背景动画使用固定值才能工作:

@keyframes moving-gradient {
    0% {
        background-position: 0,0;
    }

    100% {
        background-position: 200px 250px, 200px 250px;
    }
}
因此,您还必须为元素设置固定宽度:

.test {
     width: 200px;

根据评论编辑 如果将“宽度”设置为视口单位,它也会起作用:

.test {
    width: 50vw;
    height: 250px;
在动画中

100% {
    background-position: 50vw 250px, 50vw 250px;
}


我不知道为什么,但查看Firebug中的
computed
选项卡可以发现视口单位实际上被解释为固定的
px
值,而不是移动背景图像,您是否尝试过移动元素

translate
是在屏幕上移动元素的一种非常有效且平滑的方法(因为它具有抗锯齿功能),此外,您还可以轻松使用百分比

一个可能有助于解释的例子


尽管我可能完全误解了您想要实现的目标。

您是否尝试过移动元素而不是移动背景图像

translate
是在屏幕上移动元素的一种非常有效且平滑的方法(因为它具有抗锯齿功能),此外,您还可以轻松使用百分比

一个可能有助于解释的例子

虽然我可能完全误解了你想要实现的目标。

这是一种愚蠢的方式,但确实有效

使用4 div和translate

HTML

这是一种愚蠢的方法,但有效

使用4 div和translate

HTML


但由于某些原因,百分比值不起作用抱歉链接不好…是的,百分比有一种奇怪的行为,如果将其设置为非常大的值,它只会移动一点…如果将元素宽度设置为50Vw,将动画高度设置为相同的固定值,它会起作用:我不知道为什么,但查看Firebug中的
computed
选项卡显示,视口单位实际上被解释为固定的
px
值,但由于某些原因,百分比值不起作用抱歉,链接不好……是的,百分比有一种奇怪的行为,如果将其设置为非常大的值,它只会移动一个值有一点……如果您确实将元素宽度设置为50vw,将动画高度设置为相同的固定值,那么它将起作用:我不确定为什么,但查看Firebug中的
computed
选项卡,可以发现视口单位实际上被解释为固定的
px