html - CSS动画不够流畅
问题描述
动画从左到右线性移动,但在动画时间结束后突然开始。尝试减少到 1 秒并将时间增加到 15 秒。甚至增加了关键帧但仍然不起作用。请帮忙:
.grid-item-2 {
grid-column: 1 / span 2;
grid-row: 1;
background-image: url(Building_1.png);
margin-left: 100px;
margin-top: 53px;
width: 90%;
background-repeat: repeat-x;
animation: Buildings 2s linear infinite;
}
@keyframes Buildings {
0% { background-position: 0% 100%; }
25% { background-position: 25% 75%; }
50% { background-position: 50% 50%; }
75% { background-position: 75% 25%; }
100% { background-position: 100% 0; }
}
<div class="grid-item grid-item-2"></div>
解决方案
跳跃的问题是您需要使背景图像适应 div 元素的大小,如果您想要一个响应式站点,这可能会很困难。下面的代码是我能想到的最好的代码,我在 -100% 和 200% 之间循环,使图像从元素外部开始,然后在元素的另一侧结束,产生它继续的错觉。老实说,我会repeat-x
用 just替换repeat
。
我添加了背景颜色只是为了使元素更加可见。
.grid-item-2 {
grid-column: 1 / span 2;
grid-row: 1;
background-image: url("https://picsum.photos/id/737/300/200.jpg");
/* margin-left: 100px;
margin-top: 53px; */
width: 90%;
background-repeat: repeat-x;
background-size: 50% 50%;
animation: Buildings 3s linear infinite;
background-color: #000; /* just to show case the element better */
height: 90vh;
}
@keyframes Buildings {
0% { background-position: -100% 200%; }
100% { background-position: 200% -100%; }
}
<div class="grid-item-2">
</div>
推荐阅读
- python-3.x - 使用 matplotlib 制作雷达图时出现运行时错误
- laravel - 使用 mailchimp 发送事务邮件
- javascript - 将复选框值传递给 laravel 控制器
- c++ - 查找输入数字的最小值/最大值的 C++ 程序
- android - 如何在运行时将可下载字体应用于整个应用程序?
- vb.net - 无法将 ListView 转换为 ListViewItem
- php - 在php中使用angular js时出错
- c# - 允许重复键(或值)并允许我删除项目的 C# 排序集合
- java - 基于地图中整数索引的列表比较的最佳排序
- python - 返回包含字符串的列的布尔掩码