gsap实现横向悬浮边框发光文字卡片拖拽滚动效果代码
代码语言:html
所属分类:加载滚动
代码描述:gsap实现横向悬浮边框发光文字卡片拖拽滚动效果代码
代码标签: gsap 横向 悬浮 边框 发光 文字 卡片 拖拽 滚动
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@font-face {
font-family: "Geist Sans";
src: url("//repo.bfw.wiki/bfwrepo/font/GeistVF.ttf") format("truetype");
}
:root {
--card-size: clamp(350px, 40vw, 450px);
--card-ar: 2 / 1;
--x: calc(50vw * 1);
--y: calc((50vh - (var(--card-size) * 0.25)) * 1);
--spotlight: 50vmin;
--backdrop: black;
--radius: 14;
--border: 3;
--backup-border: hsl(0 0% 10% / 0.2);
--size: 200;
--bg-spot-opacity: 0.16;
--border-light-opacity: 1;
--border-spot-opacity: 0.75;
}
*,
*:after,
*:before {
box-sizing: border-box;
}
body {
display: grid;
place-items: center;
min-height: 100vh;
overflow: hidden;
background: hsl(0 0% 2%);
font-family: "Geist Sans", sans-serif;
font-weight: 80;
color: hsl(0 0% 100%);
}
article {
aspect-ratio: var(--card-ar);
border-radius: calc(var(--radius) * 1px);
display: grid;
gap: 1rem;
grid-template: 1fr 1fr 1fr / 1fr auto;
padding: 2rem;
position: relative;
width: var(--card-size);
}
article *::-moz-selection {
background: hsl(var(--hue) 80% 40%);
}
article *::selection {
background: hsl(var(--hue) 80% 40%);
}
/* Article layout */
article > div {
align-content: center;
display: grid;
font-size: 1.5rem;
gap: 0 3rem;
grid-column: 1 / -1;
grid-template: 1fr 1fr / auto 1fr;
}
article hr {
grid-column: 1 / -1;
-webkit-mask: linear-gradient(90deg, transparent, white 15% 85%, transparent);
mask: linear-gradient(90deg, transparent, white 15% 85%, transparent);
width: 100%;
}
article > div span {
font-size: 1.25rem;
font-weight: 20;
opacity: 0.65;
}
article svg {
grid-row: span 2;
width: 48px;
color: hsl(var(--hue) calc(var(--sat, 0) * 1%) 50%);
}
article > span:first-of-type {
font-weight: 40;
opacity: 0.65;
}
article > span:last-of-type {
font-weight: 60;
}
h2 {
font-size: 1.5rem;
font-weight: 80;
margin: 0;
}
ul {
display: flex;
gap: 4rem;
margin: 0;
-webkit-mask: linear-gradient(90deg, transparent, white, transparent);
mask: linear-gradient(90deg, transparent, white, transparent);
overflow: auto;
padding-block: 2rem;
padding-inline: calc(50vw - (var(--card-size) * 0.5));
-ms-scroll-snap-type: x mandatory;
scroll-snap-type: x mandatory;
width: 100%;
}
li {
display: grid;
place-items: center;
scroll-snap-align: center;
position: relative;
}
li::after {
--border-size: calc(var(--border) * 1px);
content: "";
position: absolute;
inset: 0;
background-image: radial-gradient(
calc(var(--spotlight) * 0.15) calc(var(--spotlight) * 0.15) at
calc(var(--px, 0) * 1px) calc(var(--py, 0) * 1px),
hsl(0 0% 100% / 1), transparent
);
background-color: var(--backdrop, transparent);
background-size: calc(100% + (2 * var(--border-size))) calc(100% + (2 * var(--border-size)));
background-position: 50% 50%;
background-attachment: fixed;
background-color: transparent;
border: var(--border-size) solid transparent;
border-radius: calc(var(--radius) * 1px);
-webkit-mask:
linear-gradient(transparent, transparent),
linear-gradient(white, white);
mask:
linear-gradient(transparent, transparent),
linear-gradient(white, white);
-webkit-mask-clip: padding-box, border-box;
mask-clip: padding-box, border-box;
-webkit-mask-composite: source-in, xor;
mask-composite: intersect;
}
section {
width: 100vw;
}
section::after,
section::before {
content: "";
position: fixed;
top: 50%;
left: 50%;
background: radial-gradient(hsl(var(--base, 0) 80% 50%), transparent);
filter: blur(100px);
width: calc(var(--card-size) * 1.5);
aspect-ratio: 1;
translate: -50% -50%;
border-radius: 50%;
opacity: 0.0875;
pointer-events: none;
z-index: -1;
}
section::after {
width: calc(var(--card-size) * 0.5);
opacity: 0.25;
z-index: 2;
translate: -50% -75%;
}
@supports (animation-timeline: scroll()) {
@property --base {
inherits: true;
syntax: '<number>';
initial-value: 0;
}
@-webkit-keyframes change-accent {
to {
--base: 320;
}
}
@keyframes change-accent {
to {
--base: 320;
}
}
@property --sat {
inherits: true;
syntax: '<number>';
initial-value: 0;
}
@-webkit-keyframes saturate {
.........完整代码请登录后点击上方下载按钮下载查看
网友评论0