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