div+css布局实现五子棋盘绘制和下棋动画效果代码
代码语言:html
所属分类:动画
代码描述:div+css布局实现五子棋盘绘制和下棋动画效果代码
代码标签: div css 布局 五子棋 盘 绘制 下棋 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
:root {
--color-go-board-outer-shadow: rgba(26, 27, 1, 0.9);
--color-background-top-right: #cde2eb;
--color-background-bottom-left: #8a97a0;
--go-board-light-direction: -150deg;
--go-board-outer-shadow-x: -15px;
--go-board-outer-shadow-y: 10px;
--go-board-outer-shadow-blur: 15px;
--go-board-outer-shadow-spread: 5px;
--go-board-outer-shadow: var(--go-board-outer-shadow-x) var(--go-board-outer-shadow-y) var(--go-board-outer-shadow-blur) var(--go-board-outer-shadow-spread) var(--color-go-board-outer-shadow);
}
*, *::before, *::after {
box-sizing: border-box;
}
html {
width: 100vw;
height: 100svh;
}
body {
height: 100%;
width: 100%;
margin: 0 0;
display: flex;
justify-content: center;
align-items: center;
position: relative;
}
input {
appearance: none;
display: block;
margin: 0 0;
padding: 0 0;
display: none;
}
.floor {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
z-index: 0;
}
.floor__shadow {
width: 100%;
height: 100%;
position: absolute;
z-index: 0;
background: linear-gradient(var(--go-board-light-direction), transparent 20%, rgba(0, 0, 0, 0.4) 80%);
}
.tatami__mat {
width: 100%;
height: 100%;
position: absolute;
z-index: 0;
display: grid;
grid-template-columns: 1fr 2fr 1fr;
grid-template-rows: 1fr 2.5fr 1fr;
}
.tatami__mat__piece {
--color-tatami-mat-edge: #2e3d1f;
--color-tatami-mat-edge--divider: #191e14;
--color-reseda-green-1: #788e69;
--color-reseda-green-2: #596b44;
--color-pakistan-green: #284116;
--color-ecru: #d1b88c;
--color-drab-dark-brown: #534619;
--color-smoky-black: rgba(31, 21, 3, 0.9);
--tatami-mat-divider-size: 2px;
--tatami-mat-edge-size: 15px;
--tatami-mar-edge-blur: 2px; /*to fix*/
--tatami-mat-direction-pattern-1: 90deg;
--tatami-mat-direction-pattern-2: 0deg;
--vertical-rod-width: calc(25% / 3);
--back-vertical-rod-width: calc(25% / 3);
--horizontal-rod-width: calc(50% / 4);
--blend-size: 1px;
--blend-factor: 2.5;
--beige-rod-blend-factor: 1.5;
--shadow-blend-factor: 3;
background:
/*front vertical*/
linear-gradient(90deg,
transparent calc(var(--vertical-rod-width) * 3),
var(--color-reseda-green-1) calc(var(--vertical-rod-width) * 3),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 4 - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) calc(var(--back-vertical-rod-width) * 4),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 4),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 5 - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) calc(var(--back-vertical-rod-width) * 5),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 5),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 6 - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) calc(var(--back-vertical-rod-width) * 6),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 6),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 7 - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) calc(var(--back-vertical-rod-width) * 7),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 7),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 8 - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) calc(var(--back-vertical-rod-width) * 8),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 8),
var(--color-reseda-green-1) calc(var(--back-vertical-rod-width) * 9),
transparent calc(var(--back-vertical-rod-width) * 9)),
/*shadow*/
linear-gradient(90deg,
transparent calc(var(--vertical-rod-width) * 3 - var(--blend-size) * var(--shadow-blend-factor)),
var(--color-smoky-black) calc(var(--vertical-rod-width) * 3),
var(--color-smoky-black) calc(var(--vertical-rod-width) * 9),
transparent calc(var(--vertical-rod-width) * 9 + var(--blend-size) * var(--shadow-blend-factor))),
/*horizontal*/
linear-gradient(0deg,
var(--color-pakistan-green),
var(--color-reseda-green-2) var(--blend-size),
var(--color-reseda-green-2) calc(var(--horizontal-rod-width) - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) var(--horizontal-rod-width),
var(--color-reseda-green-2) calc(var(--horizontal-rod-width) + var(--blend-size)),
var(--color-reseda-green-2) calc(var(--horizontal-rod-width) * 2 - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) calc(var(--horizontal-rod-width) * 2),
var(--color-reseda-green-2) calc(var(--horizontal-rod-width) * 2 + var(--blend-size)),
var(--color-reseda-green-2) calc(var(--horizontal-rod-width) * 3 - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) calc(var(--horizontal-rod-width) * 3),
var(--color-reseda-green-2) calc(var(--horizontal-rod-width) * 3 + var(--blend-size)),
var(--color-reseda-green-2) calc(var(--horizontal-rod-width) * 4 - var(--blend-size) * var(--blend-factor)),
var(--color-pakistan-green) calc(var(--horizontal-rod-width) * 4),
transparent calc(var(--horizontal-rod-width) * 4 + var(--blend-size))),
/*back vertical*/
linear-gradient(90deg,
var(--color-drab-dark-brown),
var(--color-ecru) calc(var(--blend-size) * var(--beige-rod-blend-factor)),
var(--color-ecru) calc(var(--back-vertical-rod-width) - var(--blend-size) * var(--beige-rod-blend-factor)),
var(--color-drab-dark-brown) calc(var(--back-vertical-rod-width)),
var(--color-ecru) calc(var(--back-vertical-rod-width)),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 2 - var(--blend-size) * var(--beige-rod-blend-factor)),
var(--color-drab-dark-brown) calc(var(--back-vertical-rod-width) * 2),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 2),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 3 - var(--blend-size) * var(--beige-rod-blend-factor)),
var(--color-drab-dark-brown) calc(var(--back-vertical-rod-width) * 3),
transparent calc(var(--back-vertical-rod-width) * 3),
transparent calc(var(--back-vertical-rod-width) * 9 - var(--blend-size) * var(--beige-rod-blend-factor)),
var(--color-drab-dark-brown) calc(var(--back-vertical-rod-width) * 9),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 9),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 10 - var(--blend-size) * var(--beige-rod-blend-factor)),
var(--color-drab-dark-brown) calc(var(--back-vertical-rod-width) * 10),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 10),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 11 - var(--blend-size) * var(--beige-rod-blend-factor)),
var(--color-drab-dark-brown) calc(var(--back-vertical-rod-width) * 11),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 11),
var(--color-ecru) calc(var(--back-vertical-rod-width) * 12 - var(--blend-size) * var(--beige-rod-blend-factor)),
var(--color-drab-dark-brown) calc(var(--back-vertical-rod-width) * 12));
background-size: 1.5rem 1.5rem;
box-shadow: 0px 0px var(--tatami-mar-edge-blur) var(--tatami-mat-edge-size) var(--color-tatami-mat-edge) inset;
}
.tatami__mat__piece--column--1 {
grid-column: 1 / 1;
grid-row: 1 / 4;
border-right: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
}
.tatami__mat__piece--column--2--row--1 {
grid-column: 2 / 2;
grid-row: 1 / 1;
border: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
border-top: none;
}
.tatami__mat__piece--reverse--mat {
--tatami-mat-direction-pattern-1: 0deg;
--tatami-mat-direction-pattern-2: 90deg;
}
.tatami__mat__piece--column--2--row--2 {
grid-column: 2 / 2;
grid-row: 2 / 2;
border: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
padding: 3rem;
display: flex;
justify-content: center;
align-items: center;
}
.tatami__mat__piece__container {
--go-board-line-animation-duration: 0.35s;
--go-board-line-horizontal-9-delay: 50ms;
--go-board-line-vertical-J-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-horizontal-9-delay));
--go-board-line-horizontal-1-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-J-delay));
--go-board-line-vertical-A-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-horizontal-1-delay));
--go-board-line-vertical-B-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-A-delay));;
--go-board-line-vertical-C-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-B-delay));;
--go-board-line-vertical-D-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-C-delay));;
--go-board-line-vertical-E-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-D-delay));;
--go-board-line-vertical-F-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-E-delay));;
--go-board-line-vertical-G-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-F-delay));;
--go-board-line-vertical-H-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-G-delay));;
--go-board-line-horizontal-2-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-vertical-H-delay));;
--go-board-line-horizontal-3-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-horizontal-2-delay));;
--go-board-line-horizontal-4-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-horizontal-3-delay));;
--go-board-line-horizontal-5-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-horizontal-4-delay));;
--go-board-line-horizontal-6-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-horizontal-5-delay));;
--go-board-line-horizontal-7-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-horizontal-6-delay));;
--go-board-line-horizontal-8-delay: calc(var(--go-board-line-animation-duration) + var(--go-board-line-horizontal-7-delay));;
--go-board-stone-delay: 1s;
--go-board-stone-F6-delay: calc(var(--go-board-line-horizontal-8-delay) + var(--go-board-stone-delay));
--go-board-stone-F5-delay: calc(var(--go-board-stone-F6-delay) + var(--go-board-stone-delay));
--go-board-stone-E5-delay: calc(var(--go-board-stone-F5-delay) + var(--go-board-stone-delay));
--go-board-stone-E6-delay: calc(var(--go-board-stone-E5-delay) + var(--go-board-stone-delay));
--go-board-stone-E4-delay: calc(var(--go-board-stone-E6-delay) + var(--go-board-stone-delay));
--go-board-stone-E7-delay: calc(var(--go-board-stone-E4-delay) + var(--go-board-stone-delay));
--go-board-stone-G5-delay: calc(var(--go-board-stone-E7-delay) + var(--go-board-stone-delay));
--go-board-stone-F4-delay: calc(var(--go-board-stone-G5-delay) + var(--go-board-stone-delay));
--go-board-stone-F3-delay: calc(var(--go-board-stone-F4-delay) + var(--go-board-stone-delay));
--go-board-stone-G4-delay: calc(var(--go-board-stone-F3-delay) + var(--go-board-stone-delay));
--go-board-stone-H4-delay: calc(var(--go-board-stone-G4-delay) + var(--go-board-stone-delay));
--go-board-stone-G3-delay: calc(var(--go-board-stone-H4-delay) + var(--go-board-stone-delay));
--go-board-stone-G2-delay: calc(var(--go-board-stone-G3-delay) + var(--go-board-stone-delay));
--go-board-stone-H3-delay: calc(var(--go-board-stone-G2-delay) + var(--go-board-stone-delay));
--go-board-stone-J3-delay: calc(var(--go-board-stone-H3-delay) + var(--go-board-stone-delay));
--go-board-stone-H2-delay: calc(var(--go-board-stone-J3-delay) + var(--go-board-stone-delay));
--go-board-stone-H1-delay: calc(var(--go-board-stone-H2-delay) + var(--go-board-stone-delay));
--go-board-stone-J2-delay: calc(var(--go-board-stone-H1-delay) + var(--go-board-stone-delay));
--go-board-stone-J1-delay: calc(var(--go-board-stone-J2-delay) + var(--go-board-stone-delay));
width: 100%;
display: flex;
justify-content: center;
align-items: center;
/*position: relative; */ /*if turned on the shadow will only work for a portion of the middle mat, so it would need to be placed under the floor*/
}
.tatami__mat__piece--column--2--row--3 {
grid-column: 2 / 2;
grid-row: 3 / 3;
border: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
border-bottom: none;
}
.tatami__mat__piece--column--3 {
grid-column: 3 / 3;
grid-row: 1 / 4;
border-left: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
}
@media (width < 1100px) {
.tatami__mat {
grid-template-columns: 1fr;
grid-template-rows: 0.8fr 2.5fr 0.8fr;
}
.tatami__mat__piece--column--1, .tatami__mat__piece--column--3 {
display: none;
}
.tatami__mat__piece--column--2--row--1 {
grid-column: 1 / 1;
grid-row: 1 / 1;
border-bottom: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
}
.tatami__mat__piece--column--2--row--2 {
grid-column: 1 / 1;
grid-row: 2 / 2;
border-top: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
border-bottom: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
}
.tatami__mat__piece--column--2--row--3 {
grid-column: 1 / 1;
grid-row: 3 / 3;
border-top: var(--tatami-mat-divider-size) solid var(--color-tatami-mat-edge--divider);
}
}
.go__board__stones__container {
width: 100%;
height: 100%;
position: absolute;
border-radius: inherit;
}
@keyframes place-stone {
0% { visibility: hidden; }
100% { visibility: visible; }
}
.go__board__stone {
--go-board-stone-width: var(--go-board-line-distance);
width: var(--go-board-stone-width);
aspect-ratio: 1;
border-radius: 50%;
position: absolute;
background: radial-gradient(circle at 90% 10%, var(--color-go-board-stone-light) 30%, var(--color-go-board-stone-dark) 80%);
z-index: 2;
visibility: hidden;
animation-name: place-stone;
animation-duration: 0s;
animation-fill-mode: forwards;
animation-timing-function: linear;
}
.go__board__stone--shadow {
--go-board-stone-outer-shadow: #72623f;
width: var(--go-board-stone-width);
aspect-ratio: 1;
border-radius: 50%;
position: absolute;
box-shadow: -2px 2px 5px 0px var(--go-board-stone-outer-shadow);
z-index: 0;
}
.go__board__stone--white {
--color-go-board-stone-light: #d1d1d1;
--color-go-board-stone-dark: #b0b0b3;
}
.go__board__stone--black {
--color-go-board-stone-light: #34302f;
--color-go-board-stone-dark: #201d1c;
}
.go__board__stone--line--vertical--E {
left: calc(var(--go-board-line-distance) * 4 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--vertical--F {
left: calc(var(--go-board-line-distance) * 5 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--vertical--G {
left: calc(var(--go-board-line-distance) * 6 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--vertical--H {
left: calc(var(--go-board-line-distance) * 7 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--vertical--J {
left: calc(var(--go-board-line-distance) * 8 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--horizontal--1 {
bottom: calc(-1 * var(--go-board-stone-width) / 2);
}
.go__board__stone--line--horizontal--2 {
bottom: calc(var(--go-board-line-distance) - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--horizontal--3 {
bottom: calc(var(--go-board-line-distance) * 2 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--horizontal--4 {
bottom: calc(var(--go-board-line-distance) * 3 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--horizontal--5 {
bottom: calc(var(--go-board-line-distance) * 4 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--horizontal--6 {
bottom: calc(var(--go-board-line-distance) * 5 - var(--go-board-stone-width) / 2);
}
.go__board__stone--line--horizontal--7 {
bottom: calc(var(--go-board-line-distance) * 6 - var(--go-board-stone-width) / 2);
}
.go__board__stone--F6 {
animation-delay: var(--go-board-stone-F6-delay);
}
.go__board__stone--F5 {
animation-delay: var(--go-board-stone-F5-.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0