js+css实现带灵动岛的iphone-14切换效果代码
代码语言:html
所属分类:布局界面
代码描述:js+css实现带灵动岛的iphone-14切换效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> @charset "UTF-8"; @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400&display=swap"); :root { --size: max(5px, 1vmin); --height: 80em; --pad: 1.25em; --border-radius: 6.666em; --gutter: calc(var(--pad) * 2); --scene-pad: 5vmin; --bg-blur: 0.333em; --button-width: 0.333em; --notch-height: 3.33em; --notch-width: 33.3%; --notch-radius: calc(var(--border-radius) - calc(var(--pad) * 2)); --notch-duration: 0.333s; --ease: cubic-bezier(.666, 0, .4, 1); --ease-spring: cubic-bezier(.666, 0, .4, 1.2); --ease-out: cubic-bezier(.15,0,.333,1); --border-width: 0.4em; --deep-purple: 284; --gold: 22.5; --space-black: 215; --silver: 254; --c-h: var(--deep-purple); --c-s: 100%; --c-l: 50%; } @-webkit-keyframes appear { to { transform: scale3d(1, 1, 1); opacity: 1; } } @keyframes appear { to { transform: scale3d(1, 1, 1); opacity: 1; } } body { background: #00000a; } .scene { display: flex; flex-wrap: wrap; gap: 3em 0; align-items: center; align-content: center; justify-content: center; min-height: 100vh; font-family: Inter; font-size: var(--size); padding: var(--scene-pad); box-sizing: border-box; } .phone-con { flex-basis: 100%; display: flex; justify-content: center; } .phone { position: relative; z-index: 1; aspect-ratio: 37/76; background: black; height: var(--height); border-radius: var(--border-radius); box-shadow: 0 0 0.1em 0.25em hsl(var(--c-h), 20%, 25%), 0 0 0 var(--border-width) hsl(var(--c-h), 30%, 85%); box-sizing: border-box; opacity: 0; transform: scale3d(1.1, 1.1, 1); -webkit-animation: appear 1s var(--ease-out) forwards; animation: appear 1s var(--ease-out) forwards; webkit-backface-visibility: hidden; } .phone:before { content: ""; position: absolute; top: var(--border-radius); right: calc(var(--border-width) * -1); bottom: var(--border-radius); left: calc(var(--border-width) * -1); border: 0.5em solid hsl(var(--c-h), 20%, 30%); border-left-width: 0; border-right-width: 0; } .buttons { position: absolute; inset: calc(var(--border-width) * -1); pointer-events: none; } .buttons .left, .buttons .right { position: absolute; width: var(--button-width); display: flex; flex-direction: column; align-items: stretch; gap: 1.5em; } .buttons .left { right: 100%; top: calc(var(--border-radius) * 2); } .buttons .left .button:nth-child(1) { height: 3em; margin-bottom: 0.5em; } .buttons .right { left: 100%; transform: scale3d(-1, 1, 1); top: calc(var(--border-radius) * 3); } .buttons .right .button { height: 9.5em; } .buttons .button { background: hsl(var(--c-h), 20%, 95%); height: 6em; box-shadow: inset -0.15em 0 0.1em black, inset 0 0 0.1em hsl(var(--c-h), 30%, 90%), inset 0 0.2em 0.1em hsl(var(--c-h), 30%, 90%), inset 0 -0.2em 0.1em hsl(var(--c-h), 30%, 90%), inset -0.1em 0.333em 0.1em rgba(0, 0, 0, 0.5), inset -0.1em -0.333em 0.1em rgba(0, 0, 0, 0.5); border-top-left-radius: 0.2em; border-bottom-left-radius: 0.2em; } .screen-container { position: absolute; inset: 0; border-radius: var(--border-radius); border: var(--pad) solid black; display: flex; flex-direction: column; align-items: center; gap: calc(var(--pad) * 2); } .screen-container:before { content: ""; position: absolute; z-index: 2; background: white; width: 36.6%; bottom: calc(var(--pad) * 0.75); height: calc(var(--pad) * 0.5); border-radius: calc(var(--pad) * 0.25); filter: drop-shadow(0 0.1em 0.25em rgba(0, 0, 0, 0.1)); } .bg { position: absolute; inset: 0; background: black; border-radius: calc(var(--border-radius) - var(--pad)); overflow: hidden; transform: translateZ(0); } .bg > * { position: absolute; inset: 0; display: flex; flex-direction: column; opacity: 0; transition: opacity 1s var(--ease-out) 0.5s; background: black; } .bg .section { --g-h: var(--c-h); --g-s: var(--c-s); --g-l: var(--c-l); flex-grow: 1; position: relative; overflow: hidden; border-radius: calc(var(--border-radius) - var(--pad)); border-bottom-left-radius: 20em; border-bottom-right-radius: 20em; } .bg .section:before { content: ""; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(120% 110% at 50% 92.5%, hsla(0deg, 0%, 0%, 1) 33.3%, hsla(0deg, 0%, 0%, 0.738) 45.973%, hsla(0deg, 0%, 0%, 0.541) 55.978%, hsla(0deg, 0%, 0%, 0.382) 64.649%, hsla(0deg, 0%, 0%, 0.278) 70.9855%, hsla(0deg, 0%, 0%, 0.194) 76.655%, hsla(0deg, 0%, 0%, 0.126) 81.991%, hsla(0deg, 0%, 0%, 0.075) 86.7934%, hsla(0deg, 0%, 0%, 0.042) 90.7287%, hsla(0deg, 0%, 0%, 0.021) 93.997%, hsla(0deg, 0%, 0%, 0.008) 96.7984%, hsla(0deg, 0%, 0%, 0.002) 98.7994%, hsla(0deg, 0%, 0%, 0) 100%), radial-gradient(100% 66.6% at 110% var(--g-hue-adjust-2-y, 100%), hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 1) 33.3%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.738) 45.973%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.541) 55.978%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.382) 64.649%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.278) 70.9855%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.194) 76.655%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.126) 81.991%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.075) 86.7934%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.042) 90.7287%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.021) 93.997%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.008) 96.7984%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.002) 98.7994%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0) 100%), radial-gradient(100% 66.6% at -10% var(--g-hue-adjust-2-y, 100%), hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 1) 33.3%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.738) 45.973%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.541) 55.978%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.382) 64.649%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.278) 70.9855%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.194) 76.655%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.126) 81.991%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.075) 86.7934%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.042) 90.7287%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(--g-hue-adjust))), 100%, 50%, 0.021) 93.997%, hsla(calc(var(--g-h) - var(--g-hue-adjust-2, var(.........完整代码请登录后点击上方下载按钮下载查看
网友评论0