پیشنمایش زنده
کد HTML
<div class="card sunny">
<div class="sky">
<div class="sun-container">
<div class="sun-glow"></div>
<div class="sun-core"></div>
</div>
<svg class="landscape" viewBox="0 0 100 100" preserveAspectRatio="none">
<path
d="M0 80 L15 72 L30 78 L50 65 L75 75 L100 62 V100 H0 Z"
fill="#4d6d3d"
></path>
<path
d="M0 90 L25 84 L50 92 L80 86 L100 92 V100 H0 Z"
fill="#6a994e"
></path>
</svg>
</div>
<div class="content">
<div class="main-temp">
<svg viewBox="0 0 60 22" class="pixel-svg">
<path
d="M4 4 h8 v2 h-8 v-2
M10 6 h2 v4 h-2 v-4
M4 10 h8 v2 h-8 v-2
M4 12 h2 v4 h-2 v-4
M4 16 h8 v2 h-8 v-2"
fill="white"
></path>
<path
d="M14 4 h2 v6 h6 v-6 h2 v14 h-2 v-6 h-6 v-2 h-2 v-6"
fill="white"
></path>
<path
d="M30 4 h4 v2 h2 v4 h-2 v2 h-4 v-2 h-2 v-4 h2 v-2
M32 6 h2 v4 h-2 v-4"
fill="white"
></path>
</svg>
</div>
<div class="current-status">
<svg class="icon-weather" viewBox="0 0 20 20">
<path
d="M9 2 h2 v2 h-2 z M9 16 h2 v2 h-2 z M2 9 h2 v2 h-2 z M16 9 h2 v2 h-2 z"
fill="white"
></path>
<path d="M7 7 h6 v6 h-6 z" fill="white"></path>
<path
d="M4 4 h2 v2 h-2 z M14 4 h2 v2 h-2 z M4 14 h2 v2 h-2 z M14 14 h2 v2 h-2 z"
fill="white"
opacity="0.6"
></path>
</svg>
<span>Sunny Day</span>
</div>
<div class="forecast">
<div class="day-col">
<span class="day-label">WED</span>
<span class="day-val">18°</span>
</div>
<div class="day-col active">
<span class="day-label">THU</span>
<span class="day-val">19°</span>
</div>
<div class="day-col">
<span class="day-label">FRI</span>
<span class="day-val">18°</span>
</div>
</div>
</div>
<div class="scanlines"></div>
</div>
کد CSS
.card.sunny {
width: 280px;
height: 280px;
background: linear-gradient(180deg, #ffb347 0%, #ff8c42 100%);
border-radius: 36px;
position: relative;
overflow: hidden;
font-family: "Courier New", Courier, monospace;
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
user-select: none;
}
.card.sunny:hover {
transform: translateY(-8px);
box-shadow: 0 30px 60px rgba(0, 0, 0, 0.45);
}
.sky {
position: absolute;
inset: 0;
z-index: 1;
}
.sun-container {
position: absolute;
top: 35px;
right: 35px;
width: 50px;
height: 50px;
}
.sun-core {
width: 100%;
height: 100%;
background: #fff;
border-radius: 4px;
box-shadow:
0 0 25px #fff,
0 0 50px #ffea00;
z-index: 2;
position: relative;
}
.sun-glow {
position: absolute;
inset: -15px;
background: radial-gradient(
circle,
rgba(255, 255, 255, 0.4) 0%,
transparent 70%
);
animation: sunPulse 3s ease-in-out infinite;
}
@keyframes sunPulse {
0%,
100% {
transform: scale(1);
opacity: 0.5;
}
50% {
transform: scale(1.3);
opacity: 0.8;
}
}
.landscape {
position: absolute;
bottom: 0;
width: 100%;
height: 45%;
shape-rendering: crispEdges;
}
.content {
position: relative;
z-index: 10;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
color: white;
}
.main-temp {
padding: 35px 25px 0;
filter: drop-shadow(3px 3px 0px rgba(0, 0, 0, 0.1));
}
.pixel-svg {
width: 110px;
height: auto;
shape-rendering: crispEdges;
}
.current-status {
display: flex;
align-items: center;
gap: 12px;
padding: 0 30px;
margin-top: -20px;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 1.5px;
font-size: 13px;
text-shadow: 2px 2px 0px rgba(0, 0, 0, 0.15);
}
.icon-weather {
width: 22px;
height: 22px;
shape-rendering: crispEdges;
}
.forecast {
display: flex;
justify-content: space-between;
padding: 22px 30px;
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(12px) saturate(150%);
-webkit-backdrop-filter: blur(12px) saturate(150%);
border-top: 1px solid rgba(255, 255, 255, 0.3);
box-shadow: 0 -5px 15px rgba(0, 0, 0, 0.05);
border-radius: 0 0 35px 35px;
}
.day-col {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
opacity: 0.75;
}
.day-col.active {
opacity: 1;
text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
}
.day-label {
font-size: 10px;
font-weight: 800;
color: #fff;
}
.day-val {
font-size: 15px;
font-weight: bold;
}
.scanlines {
position: absolute;
inset: 0;
background: linear-gradient(
to bottom,
transparent 50%,
rgba(0, 0, 0, 0.04) 50%
);
background-size: 100% 4px;
pointer-events: none;
z-index: 20;
}