纯css实现2张图片点击过度动画效果代码

代码语言:html

所属分类:动画

代码描述:纯css实现2张图片点击过度动画效果代码,无js代码参与。

代码标签: css 图片 点击 过度 动画

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


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

<head>

  <meta charset="UTF-8">
  

  
  
  
  
<style>
.grid {
	--size: 80vmin;
	
  display: grid;
  width: var(--size);
  aspect-ratio: 1;
	grid-template-columns: repeat(var(--n), 1fr);
	cursor: pointer;
}
.cell {
	--abs-i: max(var(--ki,0) - var(--i),var(--i) - var(--ki,0));
	--abs-j: max(var(--kj,0) - var(--j),var(--j) - var(--kj,0));
	--rel-i: calc(var(--abs-i)/var(--n));
	--rel-j: calc(var(--abs-j)/var(--n));
	--sum: calc(var(--rel-i)*var(--rel-i) + var(--rel-j)*var(--rel-j));
	--sqr: var(--sum);
	display: grid;
	transform-style: preserve-3d;
	animation: m1 .4s calc(var(--sqr)*.6s) both;
}
.cell:before,
.cell:after {
	content: "";
	grid-area: 1/1;
	background: var(--img1)
		calc(var(--i)/var(--n)*100%) calc(var(--j)/var(--n)*100%)/var(--size) var(--size);
	backface-visibility: hidden;
}
.cell:after {
	background-image: var(--img2);
	transform: rotateY(180deg);
}
input:checked + label .cell {
	animation-name: m2;
}
@keyframes m1 {
  0% {transform: perspective(300px) scale(1.05) rotateY(0deg)}
  to {transform: perspective(300px) scale(1.05) rotateY(180deg)}
}
@keyframes m2 {
  0% {transform: perspective(300px) scale(1.05) rotateY(180deg)}
  to {transform: perspective(300px) scale(1.05) rotateY(0deg)}
}


@supports (z-index: sqrt(4)) {
	.cell {
		--sqr: sqrt(var(--sum));
	}
}


body { 
  margin: 0;
  min-height: 100vh;
  display: grid;
  place-content: center;
	background: #c4eeff;
}
input {
	display: none;
}
</style>



</head>

<body  >
  <style>.grid:has(.cell[style*="--i: 0"]:hover) { --ki: 0 }
  .grid:has(.cell[style*="--j: 0"]:hover) { --kj: 0 }.grid:has(.cell[style*="--i: 1"]:hover) { --ki: 1 }
  .grid:has(.cell[style*="--j: 1"]:hover) { --kj: 1 }.grid:has(.cell[style*="--i: 2"]:hover) { --ki: 2 }
  .grid:has(.cell[style*="--j: 2"]:hover) { --kj: 2 }.grid:has(.cell[style*="--i: 3"]:hover) { --ki: 3 }
  .grid:has(.cell[style*="--j: 3"]:hover) { --kj: 3 }.grid:has(.cell[style*="--i: 4"]:hover) { --ki: 4 }
  .grid:has(.cell[style*="--j: 4"]:hover) { --kj: 4 }.grid:has(.cell[style*="--i: 5"]:hover) { --ki: 5 }
  .grid:has(.cell[style*="--j: 5"]:hover) { --kj: 5 }.grid:has(.cell[style*="--i: 6"]:hover) { --ki: 6 }
  .grid:has(.cell[style*="--j: 6"]:hover) { --kj: 6 }.grid:has(.cell[style*="--i: 7"]:hover) { --ki: 7 }
  .grid:has(.cell[style*="--j: 7"]:hover) { --kj: 7 }.grid:has(.cell[style*="--i: 8"]:hover) { --ki: 8 }
  .grid:has(.cell[style*="--j: 8"]:hover) { --kj: 8 }.grid:has(.cell[style*="--i: 9"]:hover) { --ki: 9 }
  .grid:has(.cell[style*="--j: 9"]:hover) { --kj: 9 }.grid:has(.cell[style*="--i: 10"]:hover) { --ki: 10 }
  .grid:has(.cell[style*="--j: 10"]:hover) { --kj: 10 }.grid:has(.cell[style*="--i: 11"]:hover) { --ki: 11 }
  .grid:has(.cell[style*="--j: 11"]:hover) { --kj: 11 }.grid:has(.cell[style*="--i: 12"]:hover) { --ki: 12 }
  .grid:has(.cell[style*="--j: 12"]:hover) { --kj: 12 }.grid:has(.cell[style*="--i: 13"]:hover) { --ki: 13 }
  .grid:has(.cell[style*="--j: 13"]:hover) { --kj: 13 }
</style>
<input type="checkbox" id="image"/>
<label class="grid" style="--n: 14;--img1: url(//repo.bfw.wiki/bfwrepo/image/62eb2737168b1.png);--img2: url(//repo.bfw.wiki/bfwrepo/image/631a6185e74e3.png)" for="image">
  <div class="cell" style="--i: 0;--j: 0;"></div>
  <div class="cell" style="--i: 1;--j: 0;"></div>
  <div class="cell" style="--i: 2;--j: 0;"></div>
  <div class="cell" style="--i: 3;--j: 0;"></div>
  <div class="cell" style="--i: 4;--j: 0;"></div>
  <div class="cell" style="--i: 5;--j: 0;"></div>
  <div class="cell" style="--i: 6;--j: 0;"></div>
  <div class="cell" style="--i: 7;--j: 0;"></div>
  <div class="cell" style="--i: 8;--j: 0;"></div>
  <div class="cell" style="--i: 9;--j: 0;"></div>
  <div class="cell" style="--i: 10;--j: 0;"></div>
  <div class="cell" style="--i: 11;--j: 0;"></div>
  <div class="cell" style="--i: 12;--j: 0;"></div>
  <div class="cell" style="--i: 13;--j: 0;"></div>
  <div class="cell" style="--i: 0;--j: 1;"></div>
  <div class="cell" style="--i: 1;--j: 1;"></div>
  <div class="cell" style="--i: 2;--j: 1;"></div>
  <div class="cell" style="--i: 3;--j: 1;"></div>
  <div class="cell" style="--i: 4;--j: 1;"></div>
  <div class="cell" style="--i: 5;--j: 1;"></div>
  <div class="cell" style="--i: 6;--j: 1;"></div>
  <div class="cell" style="--i: 7;--j: 1;"></div>
  <div class="cell" style="--i: 8;--j: 1;"></div>
  <div class="cell" style="--i: 9;--j: 1;"></div>
  <div class="cell" style="--i: 10;--j: 1;"></div>
  <div class="cell" style="--i: 11;--j: 1;"></div>
  <div class="cell" style="--i: 12;--j: 1;"></div>
  <div class="cell" style="--i: 13;--j: 1;"></div>
  <div class="cell" style="--i: 0;--j: 2;"></div>
  <div class="cell" style="--i: 1;--j: 2;"></div>
  <div class="cell" style="--i: 2;--j: 2;"></div>
  <div class="cell" style="--i: 3;--j: 2;"></div>
  <div class="cell" style="--i: 4;--j: 2;"></div>
  <div class="cell" style="--i: 5;--j: 2;"></div>
  <div class="cell" style="--i: 6;--j: 2;"></div>
  <div class="cell" style="--i: 7;--j: 2;"></div>
  <div class="cell" style="--i: 8;--j: 2;"></div>
  <div class="cell" style="--i: 9;--j: 2;"></div>
  <div class="cell" style="--i: 10;--j: 2;"></div>
  <div class="cell" style="--i: 11;--j: 2;"></div>
  <div class="cell" style="--i: 12;--j: 2;"></div>
  <div class="cell" style="--i: 13;--j: 2;"></div>
  <div class="cell" style="--i: 0;--j: 3;"></div>
  <div class="cell" style="--i: 1;--j: 3;"></div>
  <div class="cell" style="--i: 2;--j: 3;"></div>
  <div class="cell" style="--i: 3;--j: 3;"></div>
  <div class="cell" style="--i: 4;--j: 3;"></div>
  <div class="cell" style="--i: 5;--j: 3;"></div>
  <div class="cell" style="--i: 6;--j: 3;"></div>
  <div class="cell" style="--i: 7;--j: 3;"></div>
  <div class="cell" style="--i: 8;--j: 3;"></div>
  <div class="cell" style="--i: 9;--j: 3;"></div>
  <div class="cell" style="--i: 10;--j: 3;"></div>
  <div class="cell" style="--i: 11;--j: 3;"></div>
  <div class="cell" style="--i: 12;--j: 3;"></div>
  <div class="cell" style="--i: 13;--j: 3;"></div>
  <div class="cell" style="--i: 0;--j: 4;"></div>
  <div class="cell" style="--i: 1;--j: 4;"></div>
  <div class="cell" style="--i: 2;--j: 4;"></div>
  <div class="cell" style="--i: 3;--j: 4;"></div>
  <div class="cell" style="--i: 4;--j: 4;"></div>
  <div class="cell" style="--i: 5;--j: 4;"></div>
  <div class="cell" style="--i: 6;--j: 4;"></div>
  <div class="cell" style="--i: 7;--j: 4;"></div>
  <div class="cell" style="--i: 8;--j: 4;"></div>
  <div class="cell" style="--i: 9;--j: 4;"></div>
  <div class="cell" style="--i: 10;--j: 4;"></div>
  <div class="cell" style="--i: 11;--j: 4;"></div>
  <div class="cell" style="--i: 12;--j: 4;"></div>
  <div class="cell" style="--i: 13;--j: 4;"></div>
  <div class="cell" style="--i: 0;--j: 5;"></div>
  <div class="cell" style="--i: 1;--j: 5;"></div>
  <div class="cell" style="--i: 2;--j: 5;"></div>
  <div class="cell" style="--i: 3;--j: 5;"></div>
  <div class="cell" style="--i: 4;--j: 5;"></div>
  <div class="cell" style="--i: 5;--j: 5;"></div>
  <div class=".........完整代码请登录后点击上方下载按钮下载查看

网友评论0