پیشنمایش زنده
کد HTML
<div class="vscode-card">
<div class="window-bar">
<div class="window-buttons">
<span class="btn close"></span>
<span class="btn minimize"></span>
<span class="btn maximize"></span>
</div>
<div class="window-title">card.html - Visual Studio Code</div>
</div>
<div class="tab-bar">
<div class="tab active">card.html</div>
<div class="tab">styles.css</div>
</div>
<div class="editor-container">
<div class="sidebar">
<div class="icon"></div>
</div>
<div class="editor">
<div class="line-numbers">
<span>1</span><span>2</span><span>3</span><span>4</span><span>5</span>
<span>6</span><span>7</span><span>8</span><span>9</span><span>10</span>
<span>11</span><span>12</span><span>13</span><span>14</span
><span>15</span>
</div>
<div class="code-content">
<pre><code><div class="vscode-card">
<div class="window-bar">
<div class="window-buttons">
<span class="btn close"></span>
<span class="btn minimize"></span>
<span class="btn maximize"></span>
</div>
<div class="window-title">
card.html - Visual Studio Code
</div>
</div>
<div class="tab-bar">
<div class="tab active">card.html</div>
<div class="tab">styles.css</div>
</div>
<div class="editor-container">...</code></pre>
</div>
</div>
</div>
<div class="status-bar">
<span class="status-item">Ln 15, Col 1</span>
<span class="status-item">Spaces: 2</span>
<span class="status-item">UTF-8</span>
</div>
</div>
کد CSS
.vscode-card {
max-width: 300px;
height: 380px;
background: #1e1e1e;
border-radius: 8px;
box-shadow:
0 8px 25px rgba(0, 0, 0, 0.6),
inset 0 0 5px rgba(0, 255, 0, 0.05);
border: 1px solid #333;
overflow: hidden;
position: relative;
font-family: "Consolas", "Courier New", monospace;
transition: transform 0.3s cubic-bezier(0.65, -0.5, 0.35, 1.5);
}
.vscode-card:hover {
transform: translateY(-3px);
}
.window-bar {
height: 30px;
background: #3c3c3c;
display: flex;
align-items: center;
padding: 0 8px;
border-bottom: 1px solid #2a2a2a;
}
.window-buttons {
display: flex;
gap: 6px;
}
.btn {
width: 10px;
height: 10px;
border-radius: 50%;
background: #555;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);
transition: transform 0.2s ease;
}
.btn:hover {
transform: scale(1.15);
}
.close {
background: #ff605c;
}
.minimize {
background: #ffbd44;
}
.maximize {
background: #00ca4e;
}
.window-title {
color: #cccccc;
font-size: 12px;
margin-left: 10px;
opacity: 0.9;
}
.tab-bar {
height: 35px;
background: #252526;
display: flex;
border-bottom: 1px solid #1a1a1a;
}
.tab {
padding: 8px 15px;
color: #999;
font-size: 12px;
cursor: default;
border-right: 1px solid #1a1a1a;
transition:
background 0.2s ease,
color 0.2s ease;
}
.tab.active {
color: #00ff00;
background: #1e1e1e;
text-shadow: 0 0 5px rgba(0, 255, 0, 0.4);
}
.tab:hover:not(.active) {
background: #2d2d2d;
color: #ccc;
}
.editor-container {
display: flex;
height: calc(100% - 95px);
}
.sidebar {
width: 40px;
background: #333;
border-right: 1px solid #252526;
display: flex;
align-items: center;
justify-content: center;
}
.icon {
width: 20px;
height: 20px;
background: linear-gradient(135deg, #00ff00, #00cc00);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
animation: iconPulse 2s infinite ease-in-out;
}
@keyframes iconPulse {
0% {
transform: scale(1);
}
50% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
.editor {
flex: 1;
display: flex;
background: #1e1e1e;
padding: 10px;
}
.line-numbers {
width: 35px;
color: #858585;
font-size: 12px;
text-align: right;
padding-right: 8px;
border-right: 1px solid #2a2a2a;
user-select: none;
}
.line-numbers span {
display: block;
line-height: 16px;
transition: color 0.2s ease;
}
.vscode-card:hover .line-numbers span {
color: #a0a0a0;
}
.code-content {
flex: 1;
padding-left: 10px;
overflow: hidden;
}
.code-content pre {
margin: 0;
}
.code-content code {
color: #00ff00;
font-size: 12px;
line-height: 16px;
text-shadow: 0 0 3px rgba(0, 255, 0, 0.3);
white-space: pre-wrap;
animation: codeGlow 3s infinite alternate;
}
@keyframes codeGlow {
0% {
text-shadow: 0 0 3px rgba(0, 255, 0, 0.3);
}
100% {
text-shadow: 0 0 6px rgba(0, 255, 0, 0.5);
}
}
.status-bar {
height: 30px;
background: #007acc;
display: flex;
justify-content: flex-end;
align-items: center;
padding: 0 10px;
border-top: 1px solid #005f99;
}
.status-item {
color: #fff;
font-size: 11px;
margin-left: 15px;
opacity: 0.9;
}
.vscode-card::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(
to bottom,
rgba(0, 255, 0, 0.03),
transparent 50%
);
animation: scanline 4s infinite linear;
pointer-events: none;
opacity: 0.5;
}
@keyframes scanline {
0% {
transform: translateY(-100%);
}
100% {
transform: translateY(100%);
}
}
.vscode-card::after {
content: "";
position: absolute;
inset: 0;
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYV2NkIA5k+/fvfwYGBgY6BgYGADY0BBNnJ8mHAAAAAElFTkSuQmCC")
repeat;
opacity: 0.02;
pointer-events: none;
}