css实现三维书架拿书打开交互动画效果代码
代码语言:html
所属分类:动画
代码描述:css实现三维书架拿书打开交互动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Hind'>
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Lora'>
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Source+Sans+Pro'>
<style>
/* Block placement */
:root {
font-size: 20px;
}
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body, input {
font-family: "Hind", sans-serif;
font-size: 1em;
}
body {
background-color: #ccc;
height: 100vh;
margin: 0;
}
input {
position: absolute;
}
input[type=radio] {
top: -20px;
left: -20px;
}
input[type=radio]:checked ~ input[type=reset] {
visibility: visible;
}
input[type=reset] {
background-color: #c22;
border: 0;
border-radius: 0;
color: #fff;
padding: 0.5em 0.75em;
bottom: 5%;
left: 50%;
visibility: hidden;
transform: translateX(-50%);
transition: background-color 0.2s;
-webkit-appearance: none;
appearance: none;
}
input[type=reset]:hover, input[type=reset]:focus {
background-color: #ee4444;
}
input[type=reset]:active {
background-color: #aa0000;
}
.container {
animation: fadeIn 0.25s 0.25s linear forwards;
display: flex;
margin: auto;
opacity: 0;
overflow: hidden;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
perspective: 800px;
transform-style: preserve-3d;
}
.surface {
display: block;
width: 384px;
height: 224px;
margin: auto;
transform-style: preserve-3d;
transform: translateY(152px) rotateX(80deg) rotateZ(0deg);
transition: transform 0.25s;
will-change: transform;
}
.block {
display: none;
transform-style: preserve-3d;
position: absolute;
bottom: 0;
}
.block-inner div {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
position: absolute;
width: 16px;
height: 16px;
}
.block-inner {
position: relative;
width: 16px;
transition: transform 0.25s linear;
transform-style: preserve-3d;
transform: rotateX(-90deg) translateZ(16px);
}
.back {
transform: translateZ(-16px) rotateY(180deg);
}
.left {
transform-origin: center left;
transform: rotateY(270deg) translateX(-16px);
}
.right {
transform-origin: top right;
}
.right::after, .right div {
top: 0;
left: 0;
transform-origin: 0 50%;
transition: transform 0.25s 0.25s linear;
}
.right::after {
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
color: #fff;
font-size: 24px;
line-height: 24px;
text-align: center;
padding: 20% 5%;
position: absolute;
width: 100%;
height: 100%;
z-index: 2;
}
.right div {
width: 100%;
height: 100%;
}
.top, .bottom {
transform-origin: top center;
}
.spine, .right::after, .contents h1 {
font-family: "Lora", serif;
font-weight: bold;
-webkit-font-smoothing: antialiased;
}
.spine {
background: transparent;
color: #ccc;
font-size: 12px;
line-height: 12px;
top: 0;
left: 0;
transform: rotate(90deg) translate(12px, -50%);
white-space: nowrap;
width: 0;
height: 16px;
}
.cover {
background-color: #fff;
z-index: 1;
}
.contents {
font-size: 11.2px;
padding: 16px;
}
.contents h1 {
font-size: 2em;
}
.contents p {
font-family: "Source Sans Pro", serif;
}
.b1 {
display: block;
transform: translate3d(16px, -224px, 16px);
}
.b1 .block-inner > div {
background-color: #441e12;
}
.b1 .block-inner > div.top, .b1 .block-inner > div.bottom {
width: 352px;
height: 224px;
}
.b1 .block-inner > div.top {
transform: rotateX(-90deg) translateY(-208px);
}
.b1 .block-inner > div.bottom {
transform: rotateX(-90deg) translateY(-208px) translateZ(16px);
}
.b1 .block-inner > div.front::before, .b1 .block-inner > div.back::before, .b1 .block-inner > div.left::before, .b1 .block-inner > div.right::before {
background-color: #000;
content: "";
width: 100%;
height: 100%;
}
.b1 .block-inner > div.front, .b1 .block-inner > div.back {
width: 352px;
height: 16px;
}
.b1 .block-inner > div.front::before, .b1 .block-inner > div.back::before {
opacity: 0.2;
}
.b1 .block-inner > div.front {
transform: translateZ(208px);
}
.b1 .block-inner > div.left, .b1 .block-inner > div.right {
width: 224px;
height: 16px;
}
.b1 .block-inner > div.left::before, .b1 .block-inner > div.right::before {
opacity: 0.4;
}
.b1 .block-inner > div.right {
transform: rotateY(-270deg) translate3d(16px, 0, 128px);
transform-style: preserve-3d;
}
.b2 {
display: block;
transform: translate3d(0px, -224px, 288px);
}
.b2 .block-inner > div {
background-color: #441e12;
}
.b2 .block-inner > div.top, .b2 .block-inner > div.bottom {
width: 384px;
height: 16px;
}
.b2 .block-inner > div.top {
transform: rotateX(-90deg) translateY(0px);
}
.b2 .block-inner > div.bottom {
transform: rotateX(-90deg) translateY(0px) translateZ(288px);
}
.b2 .block-inner > div.front::before, .b2 .block-inner > div.back::before, .b2 .block-inner > div.left::before, .b2 .block-inner > div.right::before {
background-color: #000;
content: "";
width: 100%;
height: 100%;
}
.b2 .block-inner > div.front, .b2 .block-inner > div.back {
width: 384px;
height: 288px;
}
.b2 .block-inner > div.front::before, .b2 .block-inner > div.back::before {
opacity: 0.2;
}
.b2 .block-inner > div.front {
transform: translateZ(0px);
}
.b2 .block-inner > div.left, .b2 .block-inner > div.right {
width: 16px;
height: 288px;
}
.b2 .block-inner > div.left::before, .b2 .block-inner > div.right::before {
opacity: 0.4;
}
.b2 .block-inner > div.right {
transform: rotateY(-270deg) translate3d(16px, 0, 368px);
transform-style: preserve-3d;
}
.b3 {
display: block;
transform: translate3d(0px, -208px, 288px);
}
.b3 .block-inner > div {
background-color: #441e12;
}
.b3 .block-inner > div.top, .b3 .block-inner > div.bottom {
width: 16px;
height: 208px;
}
.b3 .block-inner > div.top {
transform: rotateX(-90deg) translateY(-192px);
}
.b3 .block-inner > div.bottom {
transform: rotateX(-90deg) translateY(-192px) translateZ(288px);
}
.b3 .block-inner > div.front::before, .b3 .block-inner > div.back::before, .b3 .block-inner > div.left::before, .b3 .block-inner > div.right::before {
background-color: #000;
content: "";
width: 100%;
height: 100%;
}
.b3 .block-inner > div.front, .b3 .block-inner > div.back {
width: 16px;
height: 288px;
}
.b3 .block-inner > div.front::before, .b3 .block-inner > div.back::before {
opacity: 0.2;
}
.b3 .block-inner > div.front {
transform: translateZ(192px);
}
.b3 .block-inner > div.left, .b3 .block-inner > div.right {
width: 208px;
height: 288px;
}
.b3 .block-inner > div.left::before, .b3 .block-inner > div.right::before {
opacity: 0.4;
}
.b3 .block-inner > div.right {
transform: rotateY(-270deg) translate3d(16px, 0, -192px);
transform-style: preserve-3d;
}
.b4 {
display: block;
transform: translate3d(368px, -208px, 288px);
}
.b4 .block-inner > div {
background-color: #441e12;
}
.b4 .block-inner > div.top, .b4 .block-inner > div.bottom {
width: 16px;
height: 208px;
}
.b4 .block-inner > div.top {
transform: rotateX(-90deg) translateY(-192px);
}
.b4 .block-inner > div.bottom {
transform: rotateX(-90deg) translateY(-192px) translateZ(288px);
}
.b4 .block-inner > div.front::before, .b4 .block-inner > div.back::before, .b4 .block-inner > div.left::before, .b4 .block-inner > div.right::before {
background-color: #000;
content: "";
width: 100%;
height: 100%;
}
.b4 .block-inner > div.front, .b4 .block-inner > div.back {
width: 16px;
height: 288px;
}
.b4 .block-inner > div.front::before, .b4 .block-inner > div.back::before {
opacity: 0.2;
}
.b4 .block-inner > div.front {
transform: translateZ(192px);
}
.b4 .block-inner > div.left, .b4 .block-inner > div.right {
width: 208px;
height: 288px;
}
.b4 .block-inner > div.left::before, .b4 .block-inner > div.right::before {
opacity: 0.4;
}
.b4 .block-inner > div.right {
transform: rotateY(-270deg) translate3d(16px, 0, -192px);
transform-style: preserve-3d;
}
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0