所以我想试着用纯css制作一艘宇宙飞船,并try 添加一些细节.我在飞船的主体上加了4个点,我想要给它一个旋转的效果.由于这是一个2D模型,我们将只能看到从前面旋转,就像字幕标签.我添加了关键帧,但它不平滑.当动画时间停止时,它会突然剪切动画.我怎么才能让它看起来像是不停地旋转呢?以下是代码:

<div class="spaceship">
  <div class="glass">
    <div class="bottom">
      <div class="point1"></div>
      <div class="point2"></div>
      <div class="point3"></div>
      <div class="point4"></div>
    </div>
  </div>
</div>

和css:

   

* {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    body {
      background: #333;
    }

    .spaceship {
      position: absolute;
      height: 200px;
      aspect-ratio: 1;
    }

    .spaceship .glass {
      height: 100px;
      aspect-ratio: 1;
      /*   background: red; */
      background: rgba(255, 255, 255, 0.19);
      border-radius: 16px;
      box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
      backdrop-filter: blur(6.8px);
      -webkit-backdrop-filter: blur(6.8px);
      border-radius: 50%;
    }

    .spaceship .bottom {
      position: absolute;
      height: 30px;
      width: 100px;
      /*   background: red; */
      border-radius: 20px;
      background-image: linear-gradient(
        to right,
        #af2323,
        #b5242e,
        #bb2739,
        #c02a44,
        #c42e4f
      );
      bottom: 0px;
      display: flex;
      justify-content: center;
      align-items: center;
      /*   flex-direction:space-between; */
      gap: 10px;
      overflow-x: hidden;
    }
    .point1,
    .point2,
    .point3,
    .point4 {
      height: 20px;
      aspect-ratio: 1;
      background: #fff;
      border-radius: 50%;
      animation: move 4s linear infinite;
    }
    @keyframes move {
      0% {
        translate: 100% 0%;
      }
      100% {
        translate: 0% 0%;
      }
    }
<div class="spaceship">
  <div class="glass">
    <div class="bottom">
      <div class="point1"></div>
      <div class="point2"></div>
      <div class="point3"></div>
      <div class="point4"></div>
    </div>
  </div>

</div>

推荐答案

将这些点设置为一个点的宽度加上一个间隙的距离.这将使动画看起来无缝和无限.我们还需要添加第五个点,以确保动画结尾附近有一个右点(在循环之前).

* {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    body {
      background: #333;
    }

    .spaceship {
      position: absolute;
      height: 200px;
      aspect-ratio: 1;
    }

    .spaceship .glass {
      height: 100px;
      aspect-ratio: 1;
      /*   background: red; */
      background: rgba(255, 255, 255, 0.19);
      border-radius: 16px;
      box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
      backdrop-filter: blur(6.8px);
      -webkit-backdrop-filter: blur(6.8px);
      border-radius: 50%;
    }

    .spaceship .bottom {
      position: absolute;
      height: 30px;
      width: 100px;
      /*   background: red; */
      border-radius: 20px;
      background-image: linear-gradient(
        to right,
        #af2323,
        #b5242e,
        #bb2739,
        #c02a44,
        #c42e4f
      );
      bottom: 0px;
      display: flex;
      justify-content: center;
      align-items: center;
      /*   flex-direction:space-between; */
      gap: 10px;
      overflow-x: hidden;
    }
    .point1,
    .point2,
    .point3,
    .point4,
    .point5 {
      height: 20px;
      aspect-ratio: 1;
      background: #fff;
      border-radius: 50%;
      animation: move 4s linear infinite;
    }
    @keyframes move {
      0% {
        translate: 0 0;
      }
      100% {
        translate: calc(-100% - 10px) 0%;
      }
    }
<div class="spaceship">
  <div class="glass">
    <div class="bottom">
      <div class="point1"></div>
      <div class="point2"></div>
      <div class="point3"></div>
      <div class="point4"></div>
      <div class="point5"></div>
    </div>
  </div>

</div>

Css相关问答推荐

Javascript Splitter Divider hover color css

MUI Reaction移除焦点上的轮廓边框

如何在容器查询体中重新定义:Root的CSS自定义属性值?

设置ScaleImageButton的样式

下拉菜单未展开- bootstrap

我找不出Firefox上奇怪的css行为的原因

如何从 WooCommerce 中的 Betheme 图像中删除产品永久链接图标

媒体查询在生产中没有响应:React 18 应用程序

为什么所有选项卡都没有显示在 React 的 MUI 选项卡组件中?

2 列 UL,右列中的列表项数量为奇数?

我怎样才能将我的按钮向上移动,因为文本是

CSS 字符串变量的正确null值是多少?

我无法在 next.js 应用程序中传播 daisyui 的主题

弹性盒项目之间的间距

更改最后一个
  • 的 CSS
  • 边框半径 + 背景 colored颜色 == 裁剪边框

    定位背景图片,添加内边距

    为什么是垂直对齐:文本顶部;不能在 CSS 中工作

    如何根据容器大小设置字体大小?

    CSS 中的星号属性是什么意思?