پیشنمایش زنده
کد HTML
<div class="win95-card">
<div class="card-titlebar">
<span class="card-title-text">Media Player</span>
<div class="card-controls">
<button class="card-btn card-btn-min"></button>
<button class="card-btn card-btn-max"></button>
<button class="card-btn card-btn-close"></button>
</div>
</div>
<div class="card-menubar">
<span class="menu-item">File</span>
<span class="menu-item">Play</span>
<span class="menu-item">Options</span>
</div>
<div class="card-body">
<div class="player-display">
<span class="track-name">Track_01.wav</span>
<span class="track-time">00:42 / 03:17</span>
</div>
<div class="player-progress">
<div class="progress-fill"></div>
<div class="progress-thumb"></div>
</div>
<div class="player-controls">
<button class="ctrl-btn ctrl-prev"></button>
<button class="ctrl-btn ctrl-play"></button>
<button class="ctrl-btn ctrl-stop"></button>
<button class="ctrl-btn ctrl-next"></button>
</div>
</div>
<div class="card-statusbar">
<span class="status-text">Playing</span>
<span class="status-vol">Vol: 75%</span>
</div>
</div>
کد CSS
.win95-card {
--card-bg: #c0c0c0;
--card-border-light: #ffffff;
--card-border-dark: #808080;
--card-border-darker: #404040;
--card-titlebar: linear-gradient(90deg, #000080, #1084d0);
--card-title-text: #ffffff;
--card-text: #000000;
--card-display-bg: #000000;
--card-display-text: #00ff00;
font-family: "Segoe UI", Tahoma, sans-serif;
font-size: 1em;
width: 18em;
background: var(--card-bg);
border: 0.0625em solid;
border-color: var(--card-border-light) var(--card-border-darker)
var(--card-border-darker) var(--card-border-light);
box-shadow:
inset 0.0625em 0.0625em 0 var(--card-border-light),
inset -0.0625em -0.0625em 0 var(--card-border-dark);
}
.card-titlebar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0.25em 0.25em 0.25em 0.5em;
background: var(--card-titlebar);
color: var(--card-title-text);
}
.card-title-text {
font-size: 0.8125em;
font-weight: 700;
letter-spacing: 0.01em;
}
.card-controls {
display: flex;
gap: 0.125em;
}
.card-btn {
width: 1em;
height: 0.875em;
background: var(--card-bg);
border: 0.0625em solid;
border-color: var(--card-border-light) var(--card-border-darker)
var(--card-border-darker) var(--card-border-light);
cursor: pointer;
position: relative;
padding: 0;
outline: none;
}
.card-btn:active {
border-color: var(--card-border-darker) var(--card-border-light)
var(--card-border-light) var(--card-border-darker);
}
.card-btn:focus {
outline: 0.0625em dotted var(--card-text);
outline-offset: -0.1875em;
}
.card-btn-min::after {
content: "";
position: absolute;
bottom: 0.125em;
left: 50%;
transform: translateX(-50%);
width: 0.375em;
height: 0.125em;
background: var(--card-text);
}
.card-btn-max::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 0.4375em;
height: 0.375em;
border: 0.0625em solid var(--card-text);
border-top-width: 0.125em;
background: transparent;
}
.card-btn-close::before,
.card-btn-close::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
width: 0.5em;
height: 0.0625em;
background: var(--card-text);
}
.card-btn-close::before {
transform: translate(-50%, -50%) rotate(45deg);
}
.card-btn-close::after {
transform: translate(-50%, -50%) rotate(-45deg);
}
.card-menubar {
display: flex;
gap: 0.125em;
padding: 0.25em 0.375em;
border-bottom: 0.0625em solid var(--card-border-dark);
}
.menu-item {
font-size: 0.75em;
padding: 0.125em 0.5em;
color: var(--card-text);
cursor: pointer;
}
.menu-item:hover {
background: #000080;
color: #ffffff;
}
.card-body {
padding: 0.75em;
}
.player-display {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.5em;
margin-bottom: 0.5em;
background: var(--card-display-bg);
border: 0.0625em solid;
border-color: var(--card-border-dark) var(--card-border-light)
var(--card-border-light) var(--card-border-dark);
box-shadow: inset 0.0625em 0.0625em 0 var(--card-border-darker);
}
.track-name {
font-size: 0.6875em;
font-family: monospace;
color: var(--card-display-text);
animation: blink-text 1s step-end infinite;
}
@keyframes blink-text {
50% {
opacity: 0.7;
}
}
.track-time {
font-size: 0.625em;
font-family: monospace;
color: var(--card-display-text);
}
.player-progress {
position: relative;
height: 0.75em;
margin-bottom: 0.625em;
background: var(--card-bg);
border: 0.0625em solid;
border-color: var(--card-border-dark) var(--card-border-light)
var(--card-border-light) var(--card-border-dark);
box-shadow: inset 0.0625em 0.0625em 0 var(--card-border-darker);
}
.progress-fill {
width: 21%;
height: 100%;
background: #000080;
}
.progress-thumb {
position: absolute;
top: -0.0625em;
left: 21%;
width: 0.5em;
height: 0.875em;
background: var(--card-bg);
border: 0.0625em solid;
border-color: var(--card-border-light) var(--card-border-darker)
var(--card-border-darker) var(--card-border-light);
transform: translateX(-50%);
}
.player-controls {
display: flex;
justify-content: center;
gap: 0.25em;
}
.ctrl-btn {
width: 2em;
height: 1.5em;
background: var(--card-bg);
border: 0.125em solid;
border-color: var(--card-border-light) var(--card-border-darker)
var(--card-border-darker) var(--card-border-light);
cursor: pointer;
position: relative;
outline: none;
}
.ctrl-btn:hover {
background: #d4d4d4;
}
.ctrl-btn:active {
border-color: var(--card-border-darker) var(--card-border-light)
var(--card-border-light) var(--card-border-darker);
}
.ctrl-btn:focus {
outline: 0.0625em dotted var(--card-text);
outline-offset: -0.25em;
}
.ctrl-prev::before {
content: "";
position: absolute;
top: 50%;
left: 40%;
border: 0.25em solid transparent;
border-right: 0.3125em solid var(--card-text);
transform: translate(-50%, -50%);
}
.ctrl-prev::after {
content: "";
position: absolute;
top: 50%;
left: 30%;
width: 0.125em;
height: 0.5em;
background: var(--card-text);
transform: translate(-50%, -50%);
}
.ctrl-play::before {
content: "";
position: absolute;
top: 50%;
left: 55%;
border: 0.3125em solid transparent;
border-left: 0.375em solid var(--card-text);
transform: translate(-50%, -50%);
}
.ctrl-stop::before {
content: "";
position: absolute;
top: 50%;
left: 50%;
width: 0.5em;
height: 0.5em;
background: var(--card-text);
transform: translate(-50%, -50%);
}
.ctrl-next::before {
content: "";
position: absolute;
top: 50%;
left: 60%;
border: 0.25em solid transparent;
border-left: 0.3125em solid var(--card-text);
transform: translate(-50%, -50%);
}
.ctrl-next::after {
content: "";
position: absolute;
top: 50%;
left: 70%;
width: 0.125em;
height: 0.5em;
background: var(--card-text);
transform: translate(-50%, -50%);
}
.card-statusbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0.25em 0.375em;
background: var(--card-bg);
border-top: 0.0625em solid var(--card-border-light);
box-shadow: inset 0 0.0625em 0 var(--card-border-dark);
}
.status-text {
font-size: 0.6875em;
color: var(--card-text);
padding: 0.125em 0.25em;
border: 0.0625em solid;
border-color: var(--card-border-dark) var(--card-border-light)
var(--card-border-light) var(--card-border-dark);
flex: 1;
}
.status-vol {
font-size: 0.625em;
padding: 0.125em 0.375em;
margin-left: 0.25em;
background: var(--card-bg);
border: 0.0625em solid;
border-color: var(--card-border-dark) var(--card-border-light)
var(--card-border-light) var(--card-border-dark);
color: var(--card-text);
}