پیشنمایش زنده
کد HTML
<div class="pro-watch-experience">
<div class="main-wrapper">
<input type="radio" name="face-toggle" id="face1" checked="" />
<input type="radio" name="face-toggle" id="face2" />
<input type="radio" name="face-toggle" id="face3" />
<input type="radio" name="face-toggle" id="face4" />
<input type="radio" name="face-toggle" id="face5" />
<div class="watch-assembly">
<div class="strap-piece strap-top"></div>
<div class="strap-piece strap-bottom"></div>
<div class="ultra-chassis">
<div class="crown-mechanism"></div>
<div class="side-utility-bar"></div>
<div class="action-trigger"></div>
<div class="sapphire-glass">
<div class="os-overlay">
<div class="system-time">9:41</div>
<div class="battery-status">
<div class="bat-percent">100%</div>
<div class="bat-icon"></div>
</div>
</div>
<div class="viewport-canvas">
<div class="ui-view face-modular-pro">
<div class="complication-top">
<div class="comp-pill">
<span class="icon">☀️</span>
<span class="val">22°</span>
</div>
<div class="comp-pill">
<span class="icon" style="color:#ff9500">🧭</span>
<span class="val">NW</span>
</div>
</div>
<div class="hero-time">
<div class="h-digits">09:41</div>
<div class="h-seconds">35</div>
</div>
<div class="complication-bottom">
<div class="wide-pill">
<div class="pill-info">
<span class="label">WORKOUT</span>
<span class="data">12.4 KM</span>
</div>
<div class="pill-gauge">
<div class="gauge-fill"></div>
</div>
</div>
</div>
</div>
<div class="ui-view face-activity-pro">
<div class="ring-stack">
<div class="ring-item" style="--c: #ff3b30; --p: 85%;">
<div class="ring-label">MOVE</div>
<div class="ring-stats">450 / 600 <small>KCAL</small></div>
</div>
<div class="ring-item" style="--c: #4cd964; --p: 110%;">
<div class="ring-label">EXERCISE</div>
<div class="ring-stats">32 / 30 <small>MIN</small></div>
</div>
<div class="ring-item" style="--c: #007aff; --p: 75%;">
<div class="ring-label">STAND</div>
<div class="ring-stats">10 / 12 <small>HRS</small></div>
</div>
</div>
</div>
<div class="ui-view face-vitals-pro">
<div class="vital-header">HEART RATE</div>
<div class="pulse-container">
<div class="pulse-wave"></div>
<div class="heart-icon">❤️</div>
</div>
<div class="vital-value">72</div>
<div class="vital-unit">BPM</div>
</div>
<div class="ui-view face-media-pro">
<div class="media-card">
<div class="media-art">🎧</div>
<div class="media-meta">
<div class="m-title">Starboy</div>
<div class="m-artist">The Weeknd</div>
</div>
<div class="media-controls">
<div class="ctrl">⏮</div>
<div class="ctrl-play"></div>
<div class="ctrl">⏭</div>
</div>
</div>
</div>
<div class="ui-view face-apps-pro">
<div class="app-honeycomb">
<div class="app-node">📞</div>
<div class="app-node" style="background:#4cd964">✉️</div>
<div class="app-node" style="background:#007aff">🎵</div>
<div class="app-node" style="background:#ff9500">🧭</div>
<div class="app-node" style="background:#5856d6">⚙️</div>
<div class="app-node" style="background:#ff3b30">❤️</div>
<div class="app-node" style="background:#ff9500">🏃</div>
<div class="app-node" style="background:#4cd964">📱</div>
<div class="app-node" style="background:#ffcc00">📸</div>
</div>
</div>
</div>
<div class="page-indicator">
<label for="face1" class="dot-btn b1"></label>
<label for="face2" class="dot-btn b2"></label>
<label for="face3" class="dot-btn b3"></label>
<label for="face4" class="dot-btn b4"></label>
<label for="face5" class="dot-btn b5"></label>
</div>
</div>
</div>
</div>
</div>
</div>
کد CSS
.pro-watch-experience .main-wrapper {
--bg-deep: #000000;
--titanium-raw: #8e8e93;
--titanium-dark: #1c1c1e;
--accent-orange: #ff4500;
--glass: rgba(255, 255, 255, 0.1);
--glass-border: rgba(255, 255, 255, 0.15);
--ease-out: cubic-bezier(0.23, 1, 0.32, 1);
margin: 0;
padding: 140px 140px;
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
background: radial-gradient(circle at center, #111, #000);
font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display",
"Helvetica Neue", sans-serif;
overflow: hidden;
user-select: none;
}
.pro-watch-experience input {
display: none;
}
.pro-watch-experience .watch-assembly {
position: relative;
width: 320px;
height: 380px;
}
.pro-watch-experience .strap-piece {
position: absolute;
left: 50%;
transform: translateX(-50%);
width: 150px;
height: 200px;
background: #111;
border-radius: 24px;
z-index: 1;
box-shadow:
inset 0 0 40px rgba(0, 0, 0, 0.8),
0 20px 40px rgba(0, 0, 0, 0.4);
}
.pro-watch-experience .strap-top {
top: -160px;
background: linear-gradient(180deg, #1a1a1a 0%, #2a2a2a 100%);
}
.pro-watch-experience .strap-bottom {
bottom: -160px;
background: linear-gradient(0deg, #1a1a1a 0%, #2a2a2a 100%);
}
.pro-watch-experience .ultra-chassis {
position: relative;
width: 100%;
height: 100%;
background: linear-gradient(135deg, #d1d1d6 0%, #8e8e93 50%, #48484a 100%);
border-radius: 68px;
z-index: 10;
padding: 10px;
box-sizing: border-box;
box-shadow:
0 40px 80px rgba(0, 0, 0, 0.6),
inset 0 2px 2px rgba(255, 255, 255, 0.5);
}
.pro-watch-experience .crown-mechanism {
position: absolute;
right: -8px;
top: 75px;
width: 22px;
height: 55px;
background: linear-gradient(to bottom, #8e8e93, #48484a, #8e8e93);
border-radius: 8px;
z-index: 15;
border-left: 2px solid #000;
}
.pro-watch-experience .crown-mechanism::after {
content: "";
position: absolute;
top: 50%;
left: 0;
right: 0;
height: 6px;
background: var(--accent-orange);
transform: translateY(-50%);
filter: blur(1px);
box-shadow: 0 0 10px var(--accent-orange);
}
.pro-watch-experience .action-trigger {
position: absolute;
left: -4px;
top: 130px;
width: 8px;
height: 90px;
background: var(--accent-orange);
border-radius: 6px;
z-index: 12;
border: 1.5px solid #000;
}
.pro-watch-experience .sapphire-glass {
width: 100%;
height: 100%;
background: #000;
border-radius: 58px;
overflow: hidden;
position: relative;
box-shadow: inset 0 0 30px rgba(0, 0, 0, 1);
}
.pro-watch-experience .os-overlay {
position: absolute;
top: 22px;
left: 0;
right: 0;
padding: 0 50px;
display: flex;
justify-content: space-between;
align-items: center;
z-index: 100;
font-weight: 700;
font-size: 11px;
color: #fff;
}
.pro-watch-experience .bat-percent {
font-size: 10px;
color: #4cd964;
margin-right: 4px;
}
.pro-watch-experience .viewport-canvas {
width: 500%;
height: 100%;
display: flex;
transition: transform 0.7s var(--ease-out);
}
.pro-watch-experience .ui-view {
width: 20%;
height: 100%;
padding: 55px 30px 40px;
box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
}
.pro-watch-experience .complication-top {
display: flex;
width: 100%;
justify-content: space-between;
margin-bottom: 25px;
}
.pro-watch-experience .comp-pill {
background: var(--glass);
border: 1px solid var(--glass-border);
padding: 6px 10px;
border-radius: 20px;
display: flex;
align-items: center;
gap: 5px;
backdrop-filter: blur(8px);
}
.pro-watch-experience .comp-pill .val {
font-size: 10px;
font-weight: 800;
color: #fff;
}
.pro-watch-experience .hero-time {
text-align: center;
}
.pro-watch-experience .h-digits {
font-family: "JetBrains Mono", monospace;
font-size: 76px;
font-weight: 800;
color: #fff;
line-height: 1;
letter-spacing: -3px;
}
.pro-watch-experience .h-seconds {
color: var(--accent-orange);
font-weight: 900;
font-size: 20px;
letter-spacing: 2px;
}
.pro-watch-experience .complication-bottom {
margin-top: auto;
width: 100%;
}
.pro-watch-experience .wide-pill {
background: var(--glass);
border: 1px solid var(--glass-border);
border-radius: 16px;
padding: 12px;
backdrop-filter: blur(10px);
}
.pro-watch-experience .pill-info {
display: flex;
justify-content: space-between;
margin-bottom: 6px;
}
.pro-watch-experience .pill-info .label {
font-size: 8px;
opacity: 0.6;
color: #fff;
font-weight: 800;
}
.pro-watch-experience .pill-info .data {
font-size: 11px;
color: #fff;
font-weight: 800;
}
.pro-watch-experience .pill-gauge {
height: 4px;
background: rgba(255, 255, 255, 0.1);
border-radius: 2px;
}
.pro-watch-experience .gauge-fill {
width: 72%;
height: 100%;
background: var(--accent-orange);
border-radius: 2px;
box-shadow: 0 0 10px var(--accent-orange);
}
.pro-watch-experience .ring-stack {
width: 100%;
display: flex;
flex-direction: column;
gap: 12px;
margin-top: 15px;
}
.pro-watch-experience .ring-item {
background: rgba(255, 255, 255, 0.05);
border-radius: 12px;
padding: 12px;
border-left: 4px solid var(--c);
}
.pro-watch-experience .ring-label {
font-size: 9px;
font-weight: 800;
color: var(--c);
margin-bottom: 2px;
}
.pro-watch-experience .ring-stats {
font-size: 14px;
font-weight: 800;
color: #fff;
}
.pro-watch-experience .ring-stats small {
font-size: 9px;
opacity: 0.5;
}
.pro-watch-experience .face-vitals-pro {
justify-content: center;
}
.pro-watch-experience .vital-header {
font-size: 10px;
font-weight: 800;
letter-spacing: 1px;
color: #ff3b30;
margin-bottom: 10px;
}
.pro-watch-experience .pulse-container {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 80px;
height: 80px;
}
.pro-watch-experience .heart-icon {
font-size: 40px;
z-index: 2;
animation: beat 0.8s infinite;
}
@keyframes beat {
0% {
transform: scale(1);
}
15% {
transform: scale(1.2);
}
30% {
transform: scale(1);
}
45% {
transform: scale(1.1);
}
60% {
transform: scale(1);
}
}
.pro-watch-experience .vital-value {
font-size: 60px;
font-weight: 800;
color: #fff;
font-family: "JetBrains Mono";
line-height: 1;
}
.pro-watch-experience .vital-unit {
font-size: 14px;
font-weight: 800;
opacity: 0.5;
color: #fff;
}
.pro-watch-experience .media-card {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.pro-watch-experience .media-art {
width: 110px;
height: 110px;
background: linear-gradient(135deg, #333, #111);
border-radius: 22px;
display: flex;
align-items: center;
justify-content: center;
font-size: 48px;
margin-bottom: 20px;
border: 1px solid var(--glass-border);
}
.pro-watch-experience .m-title {
font-size: 18px;
font-weight: 800;
color: #fff;
text-align: center;
}
.pro-watch-experience .m-artist {
font-size: 13px;
opacity: 0.5;
color: #fff;
text-align: center;
}
.pro-watch-experience .media-controls {
display: flex;
align-items: center;
gap: 30px;
margin-top: 25px;
font-size: 24px;
color: #fff;
}
.pro-watch-experience .ctrl-play {
width: 0;
height: 0;
border-top: 12px solid transparent;
border-bottom: 12px solid transparent;
border-left: 20px solid #fff;
margin-left: 5px;
}
.pro-watch-experience .app-honeycomb {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 15px;
padding-top: 40px;
}
.pro-watch-experience .app-node {
width: 52px;
height: 52px;
background: #1c1c1e;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
border: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3);
}
.pro-watch-experience .page-indicator {
position: absolute;
bottom: 22px;
left: 0;
right: 0;
display: flex;
justify-content: center;
gap: 8px;
z-index: 110;
}
.pro-watch-experience .dot-btn {
width: 6px;
height: 6px;
background: rgba(255, 255, 255, 0.3);
border-radius: 50%;
cursor: pointer;
transition: 0.3s;
}
.pro-watch-experience #face1:checked ~ .watch-assembly .viewport-canvas {
transform: translateX(0);
}
.pro-watch-experience #face2:checked ~ .watch-assembly .viewport-canvas {
transform: translateX(-20%);
}
.pro-watch-experience #face3:checked ~ .watch-assembly .viewport-canvas {
transform: translateX(-40%);
}
.pro-watch-experience #face4:checked ~ .watch-assembly .viewport-canvas {
transform: translateX(-60%);
}
.pro-watch-experience #face5:checked ~ .watch-assembly .viewport-canvas {
transform: translateX(-80%);
}
.pro-watch-experience #face1:checked ~ .watch-assembly .b1,
.pro-watch-experience #face2:checked ~ .watch-assembly .b2,
.pro-watch-experience #face3:checked ~ .watch-assembly .b3,
.pro-watch-experience #face4:checked ~ .watch-assembly .b4,
.pro-watch-experience #face5:checked ~ .watch-assembly .b5 {
background: #fff;
width: 16px;
border-radius: 4px;
}