css-doodle实现九种盘中美食动画效果代码

代码语言:html

所属分类:动画

代码描述:css-doodle实现九种盘中美食动画效果代码

代码标签: css-doodle 九种 盘中 美食 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
  
<style>
* {
  box-sizing: border-box;
  margin: 0;
}

html,
body {
  margin: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background-color: #F1E8E1;
}

main {
  position: relative;
  background-color: #F1E8E1;
  width: 100vmin;
  height: 100vmin;
  --gap: 4vmin;
  --size: 28vmin;
  overflow: hidden;
}

section {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--gap);
  padding: var(--gap);
  width: 100%;
  height: 100%;
}

css-doodle {
  width: var(--size);
  height: var(--size);
  border-radius: 100%;
  -webkit-animation: rotate 40s linear infinite;
          animation: rotate 40s linear infinite;
}

@-webkit-keyframes rotate {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

@keyframes rotate {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
</style>

  <script>
  window.console = window.console || function(t) {};
</script>

  
  
</head>

<body translate="no">
  <style>
  css-doodle {
    --1: (
      :doodle {
        flex: none;
        @grid: 1x30;
        background: #FF4C00;
        overflow: hidden;
      }
      @place-cell: center;
      ::before, ::after { transition: inherit; }
      @match (i >= 2) {
        z-index: @p(2, 3, 4);
        transition: 0.5s ease all;
      }
      @nth(1) {
        @size: 80%;
        background: radial-gradient(circle at 50% 50%, #fff calc(58% - 0.1vmin), #E386B3 calc(58% - 0.1vmin + 1px), #E386B3 calc(58% + 0.1vmin), #fff calc(58% + 0.1vmin + 1px));
        border-radius: 100%;
      }
      @match(i >= 2 && i <= 7) {
        @size: calc(3.2vmin * 1.4);
        transform: translate(@m2(@r(±160%))) rotate(@r(360deg));
        background-image: @doodle(
          @grid: 1x6 / 100% 100%;;
          @size: 10% 20%;
          position: absolute;
          top: 29%;
          left: 45%;
          background-color: #d5f2d6;
          border-radius: 100%;
          transform: rotate(calc(60deg * (@i + 1))) translate3d(0%, -40%, 0);
          transform-origin: 50% 100%;
        );
        background-color: #74c58d;
        border: 0.28vmin solid #006c61;
        border-radius: 100%;
      }
      @match(i > 7  && i <= 12) {
        @size: 7vmin;
        z-index: @p(3, 4);
        transform: translate(@m2(@r(±90%))) rotate(@r(360deg));
        background: radial-gradient(circle at 50% 50%, @stripe(transparent 60%, #fff));
        border: 0.28vmin solid #b24478;
        clip-path: inset(0 50% 0 0);
        border-radius: 100%;
      }
      @match(i > 12  && i <= 17) {
        @size: calc(3.1vmin * 1.3) calc(3.3vmin * 1.3);
        transform: translate(@m2(@r(±180%))) rotate(@r(360deg));
        background-color: #ff4c00;
        border-radius: 100%;
        ::before, ::after {
          content: "";
          position: absolute;
          top: 10%;
          left: calc(0.4vmin * 1.3);
          width: calc(2.3vmin * 1.3);
          height: calc(2.3vmin * 1.3);
          background-image: @doodle(
            @grid: 1x3 / 100% 100%;;
            @size: 12% 22%;
            position: absolute;
            top: 25%;
            left: 45%;
            background-color: #fce8e5;
            border-radius: 100%;
            transform: rotate(calc(60deg * (@i + 1) + 180deg)) translate3d(0%, -60%, 0);
            transform-origin: 50% 100%;
          );
          background-color: #ffa788;
          border-radius: 100%;
          clip-path: inset(0 0 50% 0);
        }
        ::after {
          top: 19%;
          transform: rotate(180deg);
        }
      }
      @match(i > 17  && i <= 27) {
        z-index: @p(1, 2);
        transform: translate(@m2(@r(±80%))) rotate(@r(360deg));
        @size: calc(6vmin * 1.2) calc(6vmin * 1.2);
        background-image: @doodle(
          @grid: 1x9 / 100% 100%;
          @size: 100% 100%;
          :container {
            --color: @p(#006c61, #2d996e, #74c58d);
            --color-1: @P;
          }
          position: absolute;
          @nth(1, 2, 3, 4, 5) {
            @size: 40%;
            background: @var(--color);
            border-radius: 100%;
          }
          @nth(1) {
            top: 0;
            left: 50%;
            transform: translateX(-50%);
          }
          @nth(2) {
            top: 28%;
            left: 15%;
          }
          @nth(3) {
            top: 28%;
            right: 15%;
          }
          @nth(4) {
            top: 56%;
            right: 5%;
          }
          @nth(5) {
            top: 56%;
            left: 5%;
          }
          @nth(6) {
            top: 50%;
            left: 50%;
            @size: 40% 46%;
            transform: translateX(-50%);
            background: @var(--color);
          }
          @nth(7) {
            @size: 0;
            left: 50%;
            bottom: 4%;
            transform: translateX(-50%);
            border-style: solid;
            border-width: 0 8vmin 75vmin;
            border-color: transparent transparent @var(--color-1) transparent;
          }
          @nth(8, 9) {
            @size: 0;
            border-style: solid;
            border-width: 0 7vmin 35vmin;
            border-color: transparent transparent @var(--color-1) transparent;
          }
          @nth(8) {
            left: 57%;
            bottom: 32%;
            transform: rotate(50deg);
          }
          @nth(9) {
            right: 57%;
            bottom: 16%;
            transform: rotate(-50deg);
          }
        );
      }
      @match(i > 27 && i < 34) {
        z-index: 10;
        @size: 1.4vmin;
        transform: translate(@m2(@r(±400%))) rotate(@r(360deg));
        background: #fff;
      }
    );
    --2: (
      :doodle {
        flex: none;
        @grid: 1x42;
        background: #FFa788;
        overflow: hidden;
      }
      @place-cell: center;
      ::before, ::after { transition: inherit; }
      @match (i >= 4) {
        transition: 0.5s ease all;
      }
      @nth(1) {
        @size: 80%;
        background: #545150;
        border-radius: 100%;

        ::after {
          content: "";
          @size: 100% 100%;
          @place-cell: center;
          background: #f2e7e1;
          clip-path: @shape(
            points: 360;
            r: 0.85 + cos(50t)*.015;
          )
        }
      }
      @nth(2, 3) {
        position: absolute;
        @size: 10% 10%;
        background: #545150;

        ::before, ::after {
          content: "";
          @size: 100% 100%;
          background: #545150;
          border-radius: 20%;
        }

        ::before {
          @place-cell: 0% 50%;
          transform: skew(-20deg);
        }

        ::after {
          @place-cell: 100% 50%;
          transform: skew(20deg);
        }
      }
      @nth(2) {
        @place-cell: 21% 21%;
        transform: rotate(-45deg);
      }
      @nth(3) {
        @place-cell: 79% 79%;
        transform: rotate(135deg);
      }
      @match(i > 3 && i < 23) {
        @size: 2vmin 1vmin;
        background: #fff;
        transform: translate(@m2(@r(±7vmin))) rotate(@r(360deg));
        border-radius: 100%;
      }
      @nth(24, 25, 26) {
        z-index: 1;
        @size: 12% 6%;
        --color-1: @p(#d5c7b8, #b1a79e);
        --color-2: @P;
        @place-cell: @pd(32% 32%, 42% 26%, 26% 42%);
        transform: rotate(@r(360deg));

        ::before {
          content: "";
          @size: 0;
          @place-cell: center -100%;
          transform: translateX(-50%);
          border-style: solid;
          border-width: 0 0.65vmin 5vmin;
          border-color: transparent transparent @var(--color-1) transparent;
          clip-path: inset(50% 0 0 0);
        }

        ::after {
          content: "";
          position: absolute;
          @size: 100% 100%;
          border-radius: 50% 50% 0 0/100% 100% 0 0;
          background: @var(--color-2);
        }
      }
      @match(i > 26 && i < 30) {
        @size: calc(3.2vmin * 1);
        transform: @pd(
          translate(@r(2vmin, 3vmin), @r(6vmin, 7.5vmin)) rotate(@r(360deg)),
          translate(@r(3vmin, 5vmin), @r(4vmin, 6vmin)) rotate(@r(360deg)),
          translate(@r(5vmin, 7vmin), @r(2vmin, 3vmin)) rotate(@r(360deg)),
        );
        background-image: @doodle(
          @grid: 1x6 / 100% 100%;;
          @size: 10% 20%;
          position: absolute;
          top: 29%;
          left: 45%;
          background-color: #d5f2d6;
          border-radius: 100%;
          transform: rotate(calc(60deg * (@i + 1))) translate3d(0%, -40%, 0);
          transform-origin: 50% 100%;
        );
        background-color: #74c58d;
        border: 0.22vmin solid #006c61;
        border-radius: 100%;
      }
      @match(i > 29 && i < 36) {
        position: absolute;
        top: calc(70% - (@i - 30) * 2.3%);
        left: calc(30% + (@i - 30) * 2.3%);
        @size: 0.6vmin 7vmin;
        background: @pd(#2e996e, #75c58d);
        transform: rotate(@r(-40, -50)deg) translateY(@r(±20%));
      }
      @match(i > 35 && i < 42) {
        position: absolute;
        top: calc(30% + (@i - 36) * 2.3%);
        left: calc(70% - (@i - 36) * 2.3%);
        @size: 0.6vmin 7vmin;
        background: @pd(#ffa788, #ff4b00);
        transform: rotate(@r(-40, -50)deg) translateY(@r(±20%));
      }
      @nth(42) {
        z-index: 1;
        @size: 11vmin;
        transform: rotate(@r(180deg));
        filter: drop-shadow(0 0 1vmin #00000050);

        ::before {
          content: "";
          @size: 100%;
          @place-cell: center;
          background: #fff;
          clip-path: @shape(
            points: 360;
            r: .8 + cos(@p(2,3,4,5)t)*.03;
          );
        }

        ::after {
          content: "";
          @size: @r(28,32)%;
          @place-cell: center;
          background: #ffd850;
          border-radius: 100%;
          transform: translate(@m2(@r(±10%)));
        }
      }
    );
    --3: (
      :doodle {
        flex: none;
        @grid: 1x9;
        background: #ffb700;
        overflow: hidden;
      }
      @place-cell: center;
      ::before, ::after { transition: inherit; }
      @match (i >= 2) {
        z-index: @p(2, 3, 4);
        transition: 0.5s ease all;
      }
      @nth(1) {
        @size: 82%;
        background: radial-gradient(circle at 50% 50%, #fff calc(58% - 0.1vmin), #E386B3 calc(58% - 0.1vmin + 1px), #E386B3 calc(58% + 0.1vmin), #fff calc(58% + 0.1vmin + 1px));
        border-radius: 100%;
        clip-path: @shape(
          points: 360;
          r: 0.95 + cos(@p(10,11,12,13,14)t)*.015;
        );
        transition: 0.5s ease clip-path;
      }
      @nth(2, 3) {
        @size: 45% 2.5vmin;
        @place-cell: 50% @pd(20, 30)%;
        transform: translate(@r(±20%), @r(±10%)) rotate(@r(±25)deg);

        ::before {
          content: "";
          @size: 100%;
          background: linear-gradient(transparent calc(50% - 0.1vmin), #000 calc(50% - 0.1vmin + 1px), #000 calc(50% + 0.1vmin), transparent calc(50% + 0.1vmin + 1px));
        }

        ::after {
          content: "";
          @size: 10vmin 100%;
          position: absolute;
          top: 50%;
          left: 50%;
          transform: translate(-50%, -50%);
          background: @doodle(
            @gr.........完整代码请登录后点击上方下载按钮下载查看

网友评论0