css实现一个21点纸牌游戏效果代码
代码语言:html
所属分类:游戏
代码描述:css实现一个21点纸牌游戏效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,700;1,400&display=swap'> <style> body { padding: 0; margin: 0; background-color: #327932; height: 100vh; overflow: hidden; font-family: "Open Sans", sans-serif; --card-size: 1vh; --card-width: calc(36 * var(--card-size)); --card-height: calc(54 * var(--card-size)); --card-base-x: calc(0.15 * var(--card-width)); --card-base-y: calc(0.15 * var(--card-width)); } @media (max-aspect-ratio: 1/1) { body { --card-size: 0.4vh; } } @property --warningPosition { intial-value: 100%; inherits: false; syntax: "<percentage>"; } @keyframes hideWarning { to { --warningPosition: 100%; } } #warning { font-weight: 300; position: absolute; --warningPosition: 0%; top: var(--warningPosition, 0); animation: 0s linear 0s 1 forwards running hideWarning; left: 0; width: 100vw; height: 100vh; background-color: #327932; z-index: 500; color: #fff; font-size: 3rem; display: flex; align-items: center; justify-content: center; } #warning p { padding: 1rem; } #warning a { color: #fff; transition: 0.125s all; } #warning a:hover { color: #02111d; } h2 { padding: 0; margin: 0; font-weight: 400; } form, .stage { position: absolute; top: 0; left: 0; width: 100%; height: 100vh; } .stage { z-index: 0; color: #fff; display: flex; flex-direction: row; } @media (max-aspect-ratio: 1/1) { .stage { flex-direction: column; } } .stage__body { --card-offset: 0; text-align: center; width: 50%; height: 100%; display: flex; flex-direction: column; } @media (max-aspect-ratio: 1/1) { .stage__body { width: 100%; height: 50%; } } .stage__body--dealer { --stage-center-x: calc( 75vw - ( var(--card-width) / 2 + (var(--card-offset) * var(--card-base-x) / 2) ) ); --stage-center-y: calc( 50vh - ( var(--card-height) / 2 + (var(--card-offset) * var(--card-base-y) / 2) ) ); order: 2; } @media (max-aspect-ratio: 1/1) { .stage__body--dealer { order: 1; --stage-center-x: calc( 50vw - ( var(--card-width) / 2 + (var(--card-offset) * var(--card-base-x) / 2) ) ); --stage-center-y: calc( 22vh - ( var(--card-height) / 2 + (var(--card-offset) * var(--card-base-y) / 2) ) ); } } .stage__body--player { --stage-center-x: calc( 25vw - ( var(--card-width) / 2 + (var(--card-offset) * var(--card-base-x) / 2) ) ); --stage-center-y: calc( 50vh - ( var(--card-height) / 2 + (var(--card-offset) * var(--card-base-y) / 2) ) ); order: 1; } @media (max-aspect-ratio: 1/1) { .stage__body--player { order: 2; --stage-center-x: calc( 50vw - ( var(--card-width) / 2 + (var(--card-offset) * var(--card-base-x) / 2) ) ); --stage-center-y: calc( 72vh - ( var(--card-height) / 2 + (var(--card-offset) * var(--card-base-y) / 2) ) ); } } .stage__labels { display: flex; padding: 1rem 0; opacity: 0; transition: 0.25s all; flex-direction: row; } @media (min-height: 480px) { .stage__labels { flex-direction: column; } } @media (max-aspect-ratio: 1/1) { .stage__labels.stage__labels--player { position: absolute; bottom: 0; width: 100%; } } .stage__labels--main { display: none; } @media (min-height: 480px) { .stage__labels--main { display: flex; justify-content: center; } } .stage__labels--total { text-align: left; width: 100%; display: flex; justify-content: center; } .stage__labels--total .sm { display: inline-block; margin-right: 0.25rem; } @media (min-height: 480px) { .stage__labels--total .sm { display: none; } } .stage__labels--total.user-total { counter-increment: userTotalCounter var(--user-total); } .stage__labels--total.user-total:after { font-weight: 600; padding-left: 0.5rem; content: counter(userTotalCounter); } .stage__labels--total.dealer-total { counter-increment: dealerTotalCounter var(--dealer-total); } .stage__labels--total.dealer-total:after { font-weight: 600; padding-left: 0.5rem; content: counter(dealerTotalCounter); } input, input:checked + .label-hit, #start:not(:checked) + label ~ label, #start:checked + label, #stand:checked ~ label { display: none; } label { position: absolute; z-index: 100; color: #fff; width: 10rem; display: inline-block; text-align: center; background-color: #02111d; font-size: 1.5rem; padding: 0.5rem 0; border-radius: 0.25rem; cursor: pointer; transition: all 0.125s; top: 50vh; left: 50vw; transform: translate(-50%, -50%); } label.label-hit { top: calc(50vh - 2rem); } label#label-stand { top: calc(50vh + 2rem); } @media (max-aspect-ratio: 1/1) { label.label-hit { top: 50%; left: calc(50vw - 6rem); } label#label-stand { top: 50%; left: calc(50vw + 6rem); } } label:hover { background-color: #052d4d; } .card { position: absolute; left: var(--stage-center-x); top: var(--stage-center-y); transition: 0.5s all; border: 1px solid #ccc; border-radius: 0.25rem; width: var(--card-width); height: var(--card-height); } .card[class^=card--u], .card[class*=" card--u"] { opacity: 0; } .card__face { background-image: url("https://assets.codepen.io/67732/card-faces.svg"); position: absolute; width: 100%; height: 100%; background-color: #fff; background-size: auto 400%; background-repeat: no-repeat; } .card:nth-child(1) { margin-left: calc(0 * var(--card-base-x)); margin-top: calc(0 * var(--card-base-y)); } .card:nth-child(2) { margin-left: calc(1 * var(--card-base-x)); margin-top: calc(1 * var(--card-base-y)); } .card:nth-child(3) { margin-left: calc(2 * var(--card-base-x)); margin-top: calc(2 * var(--card-base-y)); } .card:nth-child(4) { margin-left: calc(3 * var(--card-base-x)); margin-top: calc(3 * var(--card-base-y)); } .card:nth-child(5) { margin-left: calc(4 * var(--card-base-x)); margin-top: calc(4 * var(--card-base-y)); } @keyframes drawCard { 0% { opacity: 0; transform: translate(0, -100vh) rotateZ(10deg); } 1% { opacity: 1; } 50% { transform: translate(0, -100vh) rotateZ(10deg); } 100% { opacity: 1; transform: translateY(0, 0vh) rotateZ(0deg); } } @property --ua-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --ua-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes uaValue { from { --ua-offset: 1; } to { --ua-offset: 13; } } @keyframes uaSuitValue { from { --ua-suit: 0; } to { --ua-suit: 3; } } @property --ub-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --ub-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes ubValue { from { --ub-offset: 1; } to { --ub-offset: 13; } } @keyframes ubSuitValue { from { --ub-suit: 0; } to { --ub-suit: 3; } } @property --uc-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --uc-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes ucValue { from { --uc-offset: 1; } to { --uc-offset: 13; } } @keyframes ucSuitValue { from { --uc-suit: 0; } to { --uc-suit: 3; } } @property --ud-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --ud-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes udValue { from { --ud-offset: 1; } to { --ud-offset: 13; } } @keyframes udSuitValue { from { --ud-suit: 0; } to { --ud-suit: 3; } } @property --ue-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --ue-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes ueValue { from { --ue-offset: 1; } to { --ue-offset: 13; } } @keyframes ueSuitValue { from { --ue-suit: 0; } to { --ue-suit: 3; } } @property --da-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --da-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes daValue { from { --da-offset: 1; } to { --da-offset: 13; } } @keyframes daSuitValue { from { --da-suit: 0; } to { --da-suit: 3; } } @property --db-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --db-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes dbValue { from { --db-offset: 1; } to { --db-offset: 13; } } @keyframes dbSuitValue { from { --db-suit: 0; } to { --db-suit: 3; } } @property --dc-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --dc-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes dcValue { from { --dc-offset: 1; } to { --dc-offset: 13; } } @keyframes dcSuitValue { from { --dc-suit: 0; } to { --dc-suit: 3; } } @property --dd-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --dd-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes ddValue { from { --dd-offset: 1; } to { --dd-offset: 13; } } @keyframes ddSuitValue { from { --dd-suit: 0; } to { --dd-suit: 3; } } @property --de-offset { syntax: "<integer>"; initial-value: 1; inherits: true; } @property --de-suit { syntax: "<integer>"; initial-value: 0; inherits: true; } @keyframes deValue { from { --de-offset: 1; } to { --de-offset: 13; } } @keyframes deSuitValue { from { --de-suit: 0; } to { --de-suit: 3; } } @property --a-position-offset { syntax: "<integer>"; initial-value: -1; inherits: true; } @property --b-position-offset { syntax: "<integer>"; initial-value: -1; inherits: true; } @property --c-position-offset { syntax: "<integer>"; initial-value: -1; inherits: true; } @property --d-position-offset { syntax: "<integer>"; initial-value: -1; inherits: true; } @property --e-position-offset { syntax: "<integer>"; initial-value: -1; inherits: true; } form { /* --[p]-[n]-offset values 1 : Ace 2 - 10: Same 11 : J 12 : Q 13 : K */ --ua-offset: 1; --ua: min( 10, var(--ua-offset) ); --ua-is-ace: clamp( 0, 2 - var(--ua-offset), 1 ); --ub-offset: 1; --ub: min( 10, var(--ub-offset) ); --ub-is-ace: clamp( 0, 2 - var(--ub-offset), 1 ); --uc-offset: 1; --uc: min( 10, var(--uc-offset) ); --uc-is-ace: clamp( 0, 2 - var(--uc-offset), 1 ); --ud-offset: 1; --ud: min( 10, var(--ud-offset) ); --ud-is-ace: clamp( 0, 2 - var(--ud-offset), 1 ); --ue-offset: 1; --ue: min( 10, var(--ue-offset) ); --ue-is-ace: clamp( 0, 2 - var(--ue-offset), 1 ); --da-offset: 1; --da: min( 10, var(--da-offset) ); --da-is-ace: clamp( 0, 2 - var(--da-offset), 1 ); --db-offset: 1; --db: min( 10, var(--db-offset) ); --db-is-ace: clamp( 0, 2 - var(--db-offset), 1 ); --dc-offset: 1; --dc: min( 10, var(--dc-offset) ); --dc-is-ace: clamp( 0, 2 - var(--dc-offset), 1 ); --dd-offset: 1; --dd: min( 10, var(--dd-offset) ); --dd-is-ace: clamp( 0, 2 - var(--dd-offset), 1 ); --de-offset: 1; --de: min( 10, var(--de-offset) ); --de-is-ace: clamp( 0, 2 - var(--de-offset), 1 ); --ua-base-pre: calc( var(--ua) ); --ua-a-pre: calc( var(--ua-base-pre) + ( (10 * var(--ua-is-ace)) * clamp(0, calc(12 - var(--ua-base-pre)), 1) ) ); --ua-total: var( --ua-a-pre ); --uaub-base-pre: calc( var(--ua) + var(--ub) ); --uaub-a-pre: calc( var(--uaub-base-pre) + ( (10 * var(--ua-is-ace)) * clamp(0, calc(12 - var(--uaub-base-pre)), 1) ) ); --uaub-b-pre: calc( var(--uaub-a-pre) + ( (10 * var(--ub-is-ace)) * clamp(0, calc(12 - var(--uaub-a-pre)), 1) ) ); --uaub-total: var( --uaub-b-pre ); --uaubuc-base-pre: calc( var(--ua) + var(--ub) + var(--uc) ); --uaubuc-a-pre: calc( var(--uaubuc-base-pre) + ( (10 * var(--ua-is-ace)) * clamp(0, calc(12 - var(--uaubuc-base-pre)), 1) ) ); --uaubuc-b-pre: calc( var(--uaubuc-a-pre) + ( (10 * var(--ub-is-ace)) * clamp(0, calc(12 - var(--uaubuc-a-pre)), 1) ) ); --uaubuc-c-pre: calc( var(--uaubuc-b-pre) + ( (10 * var(--uc-is-ace)) * clamp(0, calc(12 - var(--uaubuc-b-pre)), 1) ) ); --uaubuc-total: var( --uaubuc-c-pre ); --uaubucud-base-pre: calc( var(--ua) + var(--ub) + var(--uc) + var(--ud) ); --uaubucud-a-pre: calc( var(--uaubucud-base-pre) + ( (10 * var(--ua-is-ace)) * clamp(0, calc(12 - var(--uaubucud-base-pre)), 1) ) ); --uaubucud-b-pre: calc( var(--uaubucud-a-pre) + ( (10 * var(--ub-is-ace)) * clamp(0, calc(12 - var(--uaubucud-a-pre)), 1) ) ); --uaubucud-c-pre: calc( var(--uaubucud-b-pre) + ( (10 * var(--uc-is-ace)) * clamp(0, calc(12 - var(--uaubucud-b-pre)), 1) ) ); --uaubucud-d-pre: calc( var(--uaubucud-c-pre) + ( (10 * var(--ud-is-ace)) * clamp(0, calc(12 - var(--uaubucud-c-pre)), 1) ) ); --uaubucud-total: var( --uaubucud-d-pre ); --uaubucudue-base-pre: calc( var(--ua) + var(--ub) + var(--uc) + var(--ud) + var(--ue) ); --uaubucudue-a-pre: calc( var(--uaubucudue-base-pre) + ( (10 * var(--ua-is-ace)) * clamp(0, calc(12 - var(--uaubucudue-base-pre)), 1) ) ); --uaubucudue-b-pre: calc( var(--uaubucudue-a-pre) + ( (10 * var(--ub-is-ace)) * clamp(0, calc(12 - var(--uaubucudue-a-pre)), 1) ) ); --uaubucudue-c-pre: calc( var(--uaubucudue-b-pre) + ( (10 * var(--uc-is-ace)) * clamp(0, calc(12 - var(--uaubucudue-b-pre)), 1) ) ); --uaubucudue-d-pre: calc( var(--uaubucudue-c-pre) + ( (10 * var(--ud-is-ace)) * clamp(0, calc(12 - var(--uaubucudue-c-pre)), 1) ) ); --uaubucudue-e-pre: calc( var(--uaubucudue-d-pre) + ( (10 * var(--ue-is-ace)) * clamp(0, calc(12 - var(--uaubucudue-d-pre)), 1) ) ); --uaubucudue-total: var( --uaubucudue-e-pre ); --da-base-pre: calc( var(--da) ); --da-a-pre: calc( var(--da-base-pre) + ( (10 * var(--ua-is-ace)) * clamp(0, calc(12 - var(--da-base-pre)), 1) ) ); --da-total: var( --da-a-pre ); --dadb-base-pre: calc( var(--da) + var(--db) ); --dadb-a-pre: calc( var(--dadb-base-pre) + ( (10 * var(--ua-is-ace)) * clamp(0, calc(12 - var(--dadb-base-pre)), 1) ) ); --dadb-b-pre: calc( var(--dadb-.........完整代码请登录后点击上方下载按钮下载查看
网友评论0