css+js实现sony psp游戏机手柄效果代码
代码语言:html
所属分类:布局界面
代码描述:css+js实现sony psp游戏机手柄效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> @font-face { font-family: BioRhyme; src: url("//repo.bfw.wiki/bfwrepo/font/biorhyme.woff") format("woff"); font-display: swap; } @font-face { font-family: Plation; src: url("//repo.bfw.wiki/bfwrepo/font/plation.woff2") format("woff2"), url("//repo.bfw.wiki/bfwrepo/font/plation.woff") format("woff"); font-display: swap; } @font-face { font-family: "BTSEPS2"; src: url("//repo.bfw.wiki/bfwrepo/font/btseps2.woff2") format("woff2"), url("//repo.bfw.wiki/bfwrepo/font/btseps2.woff") format("woff"); font-display: swap; } body { background: #223; margin: 0; } .container { display: flex; justify-content: center; margin-top: 9em; } .created { background: url(//repo.bfw.wiki/bfwrepo/image/62bd155f1c952.png), linear-gradient(to bottom, #884ced, #ec1cce); background-size: 75px 75px, cover; background-repeat: no-repeat; position: absolute; top: 0; right: 0; width: 250px; height: 75px; display: flex; flex-direction: column; align-items: center; padding-left: 2em; } .created span, .created h2, .created p, .created a { font-family: Montserrat; margin: 0; } .created a, .created p, .created span { color: #fff; } .created h2 { font-weight: 700; transform: translate(0, -4px); } .created a { -webkit-text-decoration-color: rgba(255,255,255,0.4); text-decoration-color: rgba(255,255,255,0.4); } .created a:hover { color: #e6e82a; } </style> </head> <body > <div class="container"> <console-psp></console-psp> </div> <script > class PSPRoundButton extends HTMLElement { constructor() { super(); this.attachShadow({ mode: "open" }); } static get styles() { return (/* css */` :host { } span { border-top: 1px solid #222; border-left: 1px solid #333; border-radius: 40%; padding: 1px 6px; } `); } connectedCallback() { this.text = this.getAttribute("text"); this.render(); } render() { this.shadowRoot.innerHTML = /* html */` <style>${PSPRoundButton.styles}</style> <span>${this.text}</span> `; }} customElements.define("psp-round-button", PSPRoundButton); class PSPLeftContents extends HTMLElement { constructor() { super(); this.attachShadow({ mode: "open" }); } static get styles() { return (/* css */` :host { display: flex; flex-direction: column; width: 90%; height: 100%; transform: translateX(-5%); } .logo { font-family: "Plation"; font-size: 50px; display: flex; transform: translate(-5px, -5px) scale(0.35); } .p { color: #ccc; transform: skewY(20deg) translateZ(40px) translateX(-4px) translateY(-7px); position: relative; font-size: 60px; perspective: 2000px; z-index: 10; } .s { position: absolute; z-index: 5; width: 58px; font-size: 70px; perspective: 1000px; transform: translateX(10px) skewX(381deg) skewY(355deg) rotateX(65deg) rotateY(12deg) rotateZ(308deg) translateX(0) translateY(-26px) translateZ(-2px) scaleX(1.5) scaleY(1); } psp-cross { transform: translate(0, -15px) } `); } connectedCallback() { this.render(); } render() { this.shadowRoot.innerHTML = /* html */` <style>${PSPLeftContents.styles}</style> <div class="logo"> <span class="p">P</span> <span class="s">S</span> </div> <psp-cross></psp-cross> <psp-pad></psp-pad> `; }} customElements.define("psp-left-contents", PSPLeftContents); class PSPButtons extends HTMLElement { constructor() { super(); this.attachShadow({ mode: "open" }); } static get styles() { return (/* css */` :host { width: 100%; height: 100px; display: block; } .container { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); place-items: center; position: relative; height: 100%; opacity: 0.6; } .button { width: 25px; height: 25px; background: var(--frame-color); border-radius: 50%; border-top: 1px solid #fff; border-left: 1px solid #fff; border-right: 1px solid #222; border-bottom: 1px solid #222; display: flex; justify-content:center; align-items: center; } .square { font-size: 20px; padding-bottom: 5px; box-sizing: border-box; } .cross { font-size: 12px; } .circle { font-size: 12px; line-height: 40%; } .main-circle { --size: 70%; position: absolute; width: var(--size); height: var(--size); border: 1px solid #fff; border-radius: 50%; border-left: 1px solid #333; border-bottom: 1px solid #333; z-index: -1; } `); } connectedCallback() { this.render(); } render() { this.shadowRoot.innerHTML = /* html */` <style>${PSPButtons.styles}</style> <div class="container"> <div class="empty"></div> <div class="triangle button">△</div> <div class="empty"></div> <div class="square button">□</div> <div class="empty"></div> <div class="circle button">◯</div> <div class="empty"></div> <div class="cross button">✕</div> <div class="empty"></div> <div class="main-circle"></div> </div>`; }} customElements.define("psp-buttons", PSPButtons); class PSPCross extends HTMLElement { constructor() { super(); this.attachShadow({ mode: "open" }); } static get styles() { return (/* css */` :host { width: 90%; height: 90px; display: flex; justify-content: center; align-items: center; } .container { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); place-items: center; position: relative; height: 100%; } .button { width: 30px; height: 25px; background: var(--frame-color); display: flex; justify-content:center; a.........完整代码请登录后点击上方下载按钮下载查看
网友评论0