这是一款CSS水晶玻璃质感按钮。该该CSS按钮使用CSS的阴影和渐变属性,来制作非常逼真的水晶玻璃质感按钮效果,非常炫酷。
使用方法
HTML代码
<div class="glass-btn">Glassy</div>
CSS代码
* { box-sizing: border-box; } :root { --h: 33; --s: 90%; --l: 90%; font-family: 'Noto Sans', sans-serif; } .container { margin: 0; min-height: 50vh; display: grid; place-content: center; } .glass-btn { font-size: clamp(1.2rem, 5vw + 1rem, 2.5rem); width: 10em; height: 4em; border-radius: 0.5em; background-image: linear-gradient(#0003, #0000); box-shadow: 0 -0.125em 0.25em #0002, 0 0.25em 0.25em hsl(var(--h) var(--s) var(--l) / 0.5), 0 0 0 0.1em hsl(var(--h) var(--s) var(--l) / 0.5), 0 0.175em 0.3em hsl(var(--h) var(--s) var(--l) / 0.5) inset, 0 -0.025em 0.175em hsl(var(--h) var(--s) var(--l) / 0.4) inset, 0 -0.25em 1em 0.3em hsl(var(--h) var(--s) var(--l) / 0.3) inset, 0 0.6em 0 hsl(var(--h) var(--s) var(--l) / 0.3) inset, 0 2em 1em #0004; backdrop-filter: blur(0.15em); position: relative; display: grid; place-content: center; color: hsl(var(--h) var(--s) var(--l) / .7); text-shadow: 0.03em 0.03em #fff5, -0.03em -0.03em #0005; cursor: pointer; transition: 0.1s ease; padding-top: 0.2em; } .glass-btn:before { content: ''; position: absolute; top: 100%; width: 80%; left: 10%; height: 1.5em; background-image: radial-gradient(100% 100% at center, hsla(var(--h), var(--s), 80%, 0.25), hsla(var(--h), var(--s), 80%, 0) 50%); } .glass-btn:after { content: ''; inset: 0; top: 0.5em; position: absolute; background-image: linear-gradient(105deg, transparent 20%, hsl(var(--h) var(--s) var(--l) / .2) 20%, hsl(var(--h) var(--s) var(--l) / .2) 30%, transparent 30%, transparent 32%, hsl(var(--h) var(--s) var(--l) / .2) 5%, hsl(var(--h) var(--s) var(--l) / .2) 40%, transparent 0%); background-size: 400% 100%; background-position: 100% 0%; transition: .3s ease; } .glass-btn:active:after { background-position: -50% 0%; } .glass-btn:active { translate: .01em .25em; box-shadow: 0 -0.125em 0.25em #0002, 0 0.25em 0.25em hsl(var(--h) var(--s) var(--l) / 0.5), 0 0 0 0.1em hsl(var(--h) var(--s) var(--l) / 0.5), 0 0.175em 0.3em hsl(var(--h) var(--s) var(--l) / 0.8) inset, 0 -0.025em 0.175em hsl(var(--h) var(--s) var(--l) / 0.4) inset, 0 -0.25em 1em 0.3em hsl(var(--h) var(--s) var(--l) / 0.3) inset, 0 0.6em 0 hsl(var(--h) var(--s) var(--l) / 0.3) inset, 0 1em 0.5em #0004; backdrop-filter: blur(0.08em); } .glass-btn:active:before { height: 1em; }