【问题标题】:Fliping 3 coin images with CSS用 CSS 翻转 3 个硬币图像
【发布时间】:2021-06-19 23:40:52
【问题描述】:

我想用这 3 张图片掷硬币,我希望每张图片在旋转时都可以改变,这样用户就看不到每张图片的原始变化。我知道解决方案可以通过改变百分比来解决,但不能弄清楚

结论:当每一枚硬币发生变化时,我都想“隐藏”起来。

这是 HTML 和 CSS

.coin {
    height: 40px;
    width: 40px;
    animation: spin 18s ease infinite;
    border-radius: 50%;
    background-size: cover;
}

    @keyframes spin {
    0% {
        -webkit-transform: rotateY(0deg);
        background-image: url("https://i.ibb.co/w0M0NjP/3.png");
    }

    33.33% {
        -webkit-transform: rotateY(360deg);
        background-image: url("https://i.ibb.co/w0M0NjP/3.png");
    }

    33.34% {
        -webkit-transform: rotateY(0deg);
        background-image: url("https://i.ibb.co/n7k3p0X/2.png");
    }

    66.66% {
        -webkit-transform: rotateY(360deg);
        background-image: url("https://i.ibb.co/n7k3p0X/2.png");
    }

    66.67% {
        -webkit-transform: rotateY(0deg);
        background-image: url("https://i.ibb.co/gmzSqzG/1.png");
    }
    
    100% {
        -webkit-transform: rotateY(360deg);
        background-image: url("https://i.ibb.co/gmzSqzG/1.png");
    }
}    
<div class="coin"></div>

【问题讨论】:

  • @Johannes 这个问题与这个问题有什么关系。我看不到任何关系(CSS 和 jQuery 是两个不同的世界......)

标签: html css animation


【解决方案1】:

考虑 2 个动画,它会更容易处理。一个用于将持续Xs 的旋转,另一个用于将持续(3/2)*Xs 的图像更改,延迟为X/4s,因为您需要打开90deg 角度和90deg=360deg/4

.coin {
  height: 40px;
  width: 40px;
  animation: 
    spin 2s linear infinite,
    change 3s infinite linear .5s;
  border-radius: 50%;
  background-size: cover;
}

@keyframes change {
  0%,33.33% {
    background-image: url("https://i.ibb.co/w0M0NjP/3.png");
  }
  33.34%,66.66% {
    background-image: url("https://i.ibb.co/n7k3p0X/2.png");
  }
  66.67%,100% {
    background-image: url("https://i.ibb.co/gmzSqzG/1.png");
  }
}

@keyframes spin {
  100% {
    transform: rotateY(360deg);
  }
}
<div class="coin"></div>

有一个变量可以更好地控制

.coin {
  --x:4s;
  height: 40px;
  width: 40px;
  animation: 
    spin var(--x) linear infinite,
    change calc(3*var(--x)/2) infinite linear calc(var(--x)/4);
  border-radius: 50%;
  background-size: cover;
}

@keyframes change {
  0%,33.33% {
    background-image: url("https://i.ibb.co/w0M0NjP/3.png");
  }
  33.34%,66.66% {
    background-image: url("https://i.ibb.co/n7k3p0X/2.png");
  }
  66.67%,100% {
    background-image: url("https://i.ibb.co/gmzSqzG/1.png");
  }
}

@keyframes spin {
  100% {
    transform: rotateY(360deg);
  }
}
<div class="coin"></div>

【讨论】:

  • 哇,太酷了,如果 2 掷同一个硬币然后改变呢?和我发的一样
  • @JuanCruz 您只需将除以 2 即可保持 3*
猜你喜欢
  • 1970-01-01
  • 2012-05-11
  • 2018-12-30
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多