svg实现就职贺卡点开悬浮动画效果代码

代码语言:html

所属分类:悬停

代码描述:svg实现就职贺卡点开悬浮动画效果代码

代码标签: 贺卡 点开 悬浮 动画 效果

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


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

<head>

  <meta charset="UTF-8">
  

  
  
<style>
@import url("https://fonts.googleapis.com/css2?family=Fredoka+One&display=swap");
* {
  box-sizing: border-box;
}
:root {
  --bg: #2a3d51;
  --body: #cddffe;
  --stripes: #012665;
  --flame-1: #eb9947;
  --flame-2: #fae39e;
  --paper: #bad9f7;
  --paper-2: #e8f2fc;
  --paper-3: #eb6347;
  --card: #f5f9ff;
  --insert: #f1f2f4;
  --bottom-frosting: #f5b1a3;
  --mid-frosting: #a3f5f5;
  --top-frosting: #ccf5a3;
  --balloon-3: 10;
  --balloon-2: 180;
  --balloon-1: 90;
  --size: 35vmin;
  --height: var(--size);
  --width: calc(var(--size) * 1.4);
  --read: 0;
  --transition: 0.2s;
}
body {
  background: var(--bg);
  min-height: 100vh;
  perspective: 1000px;
  transform-style: preserve-3d;
  overflow: hidden;
}
input {
  opacity: 0;
  position: fixed;
  right: 100%;
}
label {
  height: 100vh;
  width: 100vw;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 2;
  transform-style: preserve-3d;
  transform: translate3d(0, 0, 100px);
}
:checked ~ .scene {
  --read: 1;
}
:checked ~ .scene .hide-back {
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
:checked ~ .scene .cake__candle {
  transform: translate(0, 0);
}
.stamp {
  height: 8vmin;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate3d(-50%, -50%, 1px);
  filter: saturate(0.5);
}
.barcode {
  height: 6vmin;
  width: 8vmin;
  position: absolute;
  bottom: 2vmin;
  right: 2vmin;
  transform: translate3d(0, 0, 1px);
  --l: #808080;
  background: repeating-linear-gradient(90deg, var(--l) 0 1%, transparent 1% 2%, var(--l) 2% 4%, transparent 4% 5%, var(--l) 5% 10%);
}
.scene {
  display: flex;
  align-items: center;
  justify-content: center;
  transform: rotateY(calc(var(--x, 0) * 1deg)) rotateX(calc(var(--y, 0) * 1deg));
  height: 100vh;
  width: 100vw;
  transform-style: preserve-3d;
}
.card {
  height: calc(var(--height));
  position: relative;
  width: var(--width);
  transform-style: preserve-3d;
  transform: translate(0, calc(var(--read, 0) * 25%)) rotateX(calc(var(--read, 0) * 90deg));
  transition: transform var(--transition);
}
.card__confetti {
  --size: calc(var(--s) * 1vmin);
  height: var(--size);
  width: var(--size);
  position: absolute;
  top: 0%;
  left: 50%;
  transition: transform calc(var(--read) * var(--transition)) calc(var(--read) * var(--transition)), opacity calc(var(--read) * var(--transition)) calc((var(--read) * var(--transition)) * 2);
  transform: scale(var(--read)) translate(-50%, 10%) rotate(calc(var(--r) * 1deg)) rotateX(calc(var(--a) * 1deg)) skew(calc(var(--sk) * 1deg)) translate(0, calc(var(--height) * (var(--read, 0) * 1.5)));
  opacity: calc(1 - var(--read));
}
.card__confetti:after {
  background: hsl(var(--hue), 80%, 80%);
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  transition: transform calc(var(--read) * var(--transition)) calc(var(--read) * var(--transition));
  transform: rotateX(calc((var(--rx) * var(--read)) * 1deg)) rotateY(calc((var(--ry) * var(--read)) * 1deg));
}
.card__content {
  transform-style: preserve-3d;
  height: 100%;
  width: 100%;
}
.card__content--bottom:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background: var(--insert);
  -webkit-clip-path: polygon(0 0, 15% 0, 15% 30%, 85% 30%, 85% 0, 100% 0, 100% 100%, 0 100%);
  clip-path: polygon(0 0, 15% 0, 15% 30%, 85% 30%, 85% 0, 100% 0, 100% 100%, 0 100%);
}
.card__content--top:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background: var(--insert);
  -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 85% 100%, 85% 70%, 78% 70%, 78% 46%, 72.4% 46%, 72.4% 26.8%, 27.6% 26.8%, 27.6% 46%, 22% 46%, 22% 70%, 15% 70%, 15% 100%, 0 100%);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 85% 100%, 85% 70%, 78% 70%, 78% 46%, 72.4% 46%, 72.4% 26.8%, 27.6% 26.8%, 27.6% 46%, 22% 46%, 22% 70%, 15% 70%, 15% 100%, 0 100%);
}
.card__message {
  position: absolute;
  padding: 1rem;
  font-family: sans-serif;
  bottom: 0;
  left: 50%;
  transform: translate(-50%, 0);
}
.card__part {
  height: var(--h, 100%);
  width: var(--w, 100%);
  position: absolute;
  top: 0%;
  left: 50%;
  transform: translate(-50%, 0);
  transform-style: preserve-3d;
}
.card__inner {
  --h: 96%;
  --w: 95%;
  transform: translate3d(-50%, 0, calc(var(--height) * 0));
}
.card__sleeve {
  height: 100%;
  width: 100%;
}
.message {
  font-family: "Fredoka One", cursive;
  color: #1a1a1a;
  display: flex;
  flex-direction: column;
  position: absolute;
  top: 50%;
  left: 20%;
  transform: translate3d(0, -20%, 0);
  margin: 0;
  font-size: 4.5vmin;
}
.card__message {
  font-family: "Fredoka One", cursive;
  color: #1a1a1a;
  font-size: 4vmin;
  white-space: nowrap;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, 0);
}
.flip {
  transform-style: preserve-3d;
}
.flip__piece {
  height: 100%;
  position: absolute;
  width: 100%;
  transform-origin: 50% 0;
  transform-style: preserve-3d;
  transition: transform var(--transition);
}
.flip__piece--front {
  transform: rotateX(calc(var(--front) * 1deg));
}
.flip__piece--back {
  transform: rotateX(calc(var(--rear) * 1deg));
}
.card__inner {
  --rear: calc(-1.75 + (var(--read, 0) * 2));
  --front: calc(1.75 + (var(--read, 0) * 88));
}
.card__outer {
  --rear: calc(-2 + (var(--read, 0) * 2));
  --front: calc(2 + (var(--read, 0) * 88));
}
.card__content-container {
  transform-style: preserve-3d;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
  position: absolute;
}
.card__content-container--inner-top {
  transform: rotate(180deg) translate3d(0, 0, 0);
}
.card__content-container--inner-bottom {
  transform: translate3d(0, 0, 0);
}
.cover__content {
  height: 100%;
  width: 100%;
  background: var(--card);
  position: absolute;
  font-size: 2vmin;
  transform-style: preserve-3d;
}
.cover__content--front,
.cover__content--rear {
  transform: translate3d(0, 0, 1px);
}
.front-cover__front,
.rear-cover__front {
  background: var(--card);
}
.front-cover__front:after,
.rear-cover__front:after {
  content: '';
  position: absolute;
  top: 0%;
  left: 50%;
  transform: translate3d(-50%, 0, 0px);
  background: var(--paper-3);
  height: 95%;
  width: 95%;
}
.rear-cover__front:after {
  transform: translate(-50%, 0, 2px);
}
.cake__section {
  position: absolute;
  transform-style: preserve-3d;
  transition: var(--transition);
}
.cake__section--top {
  height: 80%;
  width: 80%;
  left: 50%;
  bottom: 0;
}
.cake__section--top-top {
  transform: translate(-50%, 0) rotateX(calc(var(--read, 0) * 90deg)) translate3d(0, -100%, calc(var(--read, 0) * 0px)) rotateX(calc(var(--read, 0) * -90deg));
  transform-origin: 50% 100%;
  background: var(--paper);
}
.cake__section--top-front {
  background: var(--paper-2);
  transform-origin: 50% 100%;
  transform: translate(-50%, -100%) rotateX(calc(var(--read, 0) * 90deg));
}
.cake__section--mid {
  height: 80%;
  width: 80%;
  left: 50%;
}
.cake__section--mid-front {
  bottom: 0;
  transform-origin: 50% 0;
  transform: translate3d(-50%, 0, 0) rotateX(calc((180 - (var(--read, 0) * -90)) * 1deg));
  background: var(--paper-2);
}
.cake__section--mid-top {
  background: transparent;
  bottom: 0;
  transform-origin: 50% 100%;
  transform: translate(-50%, 0) rotateX(calc(var(--read, 0) * 90deg)) translate3d(0, -100%, calc(var(--read, 0) * 0px)) rotateX(calc(var(--read, 0) * -90deg));
}
.cake__section--mid-top:before {
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  -webkit-clip-path: polygon(0 0, 10% 0, 10% 80%, 90% 80%, 90% 0, 100% 0, 100% 100%, 0 100%);
  clip-path: polygon(0 0, 10% 0, 10% 80%, 90% 80%, 90% 0, 100% 0, 100% 100%, 0 100%);
  transform: rotate(180deg);
  background: var(--paper);
}
.cake__section--bottom {
  height: 30%;
  width: 70%;
  left: 50%;
  transition: var(--transition);
}
.cake__section--bottom-top {
  background: transparent;
  transform-origin: 50% 100%;
  bottom: 0;
  transform: translate(-50%, -100%) rotateX(calc(var(--read, 0) * -90deg));
}
.cake__section--bottom-top:before {
  content: '';
  position: .........完整代码请登录后点击上方下载按钮下载查看

网友评论0