فرصت مطالعه ندارید؟ چکیده این مطلب را همینجا گوش دهید:
استفاده از تصاویر سنگین و حجیم برای پسزمینهی وبسایتها مدتهاست که منسوخ شده و سرعت بارگذاری صفحات را بهشدت کاهش میدهد. طراحان حرفهای فرانتاند ترجیح میدهند برای تزئین وبسایت از کدهای خالص سیاساس (CSS) استفاده کنند که هم کیفیت فوقالعاده بالایی دارد و هم حجم آن در حد چند بایت است. در این مقاله قصد داریم یک پروژهی جذاب و کاملاً کاربردی را بررسی کنیم که به عنوان یک گالری و ابزار زنده برای ساخت، مشاهده و کپی کردن الگوهای هندسی و گرادیانتهای خیرهکننده عمل میکند. این ابزار به شما کمک میکند بدون وابستگی به فایلهای گرافیکی خارجی، ظاهری مدرن و چشمنواز به پروژههای وب خود ببخشید.
| نوع ابزار | پروژهی تکفایلی فرانتاند (HTML, CSS, JS) |
|---|---|
| میزان هزینه | ۱۰۰٪ رایگان و متنباز |
| تکنولوژیهای مصرفی | HTML5, CSS3 (Linear/Radial Gradients, CSS Patterns), Vanilla JavaScript |
| نیاز به ثبتنام یا کارت بانکی | ندارد |
| وضعیت دسترسی از ایران | کاملاً آزاد و بدون محدودیت (accessible) |
چرا پسزمینههای CSS جایگزین بهتری برای تصاویر هستند؟
بارگذاری سریع صفحه یکی از فاکتورهای حیاتی در سئو و تجربه کاربری است. وقتی از تصاویر پیکسلی برای پسزمینه استفاده میکنید، کاربران با اینترنت ضعیفتر یا دستگاههای موبایل ممکن است با تاخیر در نمایش عناصر مواجه شوند. در مقابل، مرورگرها کدهای CSS را مستقیماً رندر میکنند. این یعنی پسزمینههای مبتنی بر کد، در هر ابعادی (از نمایشگرهای کوچک موبایل تا مانیتورهای فوق عریض 4K) کاملاً شفاف، بدون افت کیفیت و با سرعت بارگذاری آنی نمایش داده میشوند.
حتی گاهی اوقات توسعهدهندگان وب در کنار کدهای ظاهری، به پاکسازی و بهینهسازی کدهای ساختاری خود نیز نیاز پیدا میکنند که در صورت علاقهمندی به این مباحث، مطالعهی راهنمای پاکسازی کد HTML با HTML Purifier خالی از لطف نخواهد بود. ابزاری که امروز معرفی و پیادهسازی میکنیم، دقیقا بر پایهی همین رویکرد بهینهسازی و سبکی ساخته شده است.
معرفی کد کامل ابزار گالری و سفارشیساز پسزمینه
برای استفاده از این ابزار، کافی است کد زیر را در یک فایل متنی کپی کرده و آن را با پسوند .html (مثلاً backgrounds.html) ذخیره کنید. سپس آن را توسط هر مرورگر وب دلخواهی باز کنید تا گالری تعاملی پیش روی شما قرار گیرد. این فایل کاملاً خودکفاست و نیازی به اتصال به اینترنت یا نصب پکیجهای اضافی ندارد.
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>گالری الگوها و گرادیانتهای CSS - ابزار رایگان</title>
<style>
:root {
--bg-color: #0f172a;
--card-bg: #1e293b;
--text-color: #f8fafc;
--accent-color: #38bdf8;
--border-color: #334155;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: system-ui, -apple-system, sans-serif;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
padding: 2rem 1rem;
line-height: 1.6;
}
header {
text-align: center;
margin-bottom: 2.5rem;
}
header h1 {
font-size: 2rem;
margin-bottom: 0.5rem;
color: var(--accent-color);
}
header p {
color: #94a3b8;
}
.container {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.card {
background-color: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: 12px;
overflow: hidden;
display: flex;
flex-direction: column;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
.preview-box {
height: 180px;
width: 100%;
position: relative;
}
.card-body {
padding: 1.25rem;
display: flex;
flex-direction: column;
gap: 1rem;
flex-grow: 1;
}
.card-title {
font-size: 1.1rem;
font-weight: bold;
}
textarea {
width: 100%;
height: 80px;
background: #0f172a;
color: #38bdf8;
border: 1px solid var(--border-color);
border-radius: 6px;
padding: 0.5rem;
font-family: monospace;
font-size: 0.85rem;
resize: none;
}
button {
background-color: var(--accent-color);
color: #0f172a;
border: none;
border-radius: 6px;
padding: 0.6rem 1rem;
font-weight: bold;
cursor: pointer;
transition: opacity 0.2s;
}
button:hover {
opacity: 0.9;
}
.toast {
position: fixed;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
background-color: #22c55e;
color: white;
padding: 0.75rem 1.5rem;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
display: none;
z-index: 1000;
}
</style>
</head>
<body>
<header>
<گالری پسزمینههای استاتیک و الگوهای CSS
>
<p>با کپی کردن کدهای زیر، پسزمینهای سبک و زیبا به وبسایت خود اضافه کنید.</p>
</header>
<div class="container" id="galleryContainer"></div>
<div class="toast" id="toastMessage">کد CSS با موفقیت کپی شد!</div>
<script>
const patterns = [
{
name: "گرادیانت مش ناک اوت",
css: "background-image: linear-gradient(135deg, #667eea 0%, #764ba2 100%);"
},
{
name: "شبکهی نقطهای مدرن",
css: "background-color: #111827; background-image: radial-gradient(#374151 1px, transparent 1px); background-size: 20px 20px;"
},
{
name: "راهراه مورب کلاسیک",
css: "background: repeating-linear-gradient(45deg, #1e293b, #1e293b 10px, #0f172a 10px, #0f172a 20px);"
},
{
name: "گرادیانت طلوع آفتاب",
css: "background-image: linear-gradient(to right, #fa709a 0%, #fee140 100%);"
},
{
name: "الگوی چهارخانه ظریف",
css: "background-color: #0f172a; background-image: linear-gradient(45deg, #1e293b 25%, transparent 25%), linear-gradient(-45deg, #1e293b 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #1e293b 75%), linear-gradient(-45deg, transparent 75%, #1e293b 75%); background-size: 40px 40px; background-position: 0 0, 0 20px, 20px -20px, -20px 0px;"
},
{
name: "گرادیانت عمیق کهکشانی",
css: "background-image: linear-gradient(to top, #30cfd0 0%, #330867 100%);"
}
];
const container = document.getElementById('galleryContainer');
const toast = document.getElementById('toastMessage');
function showToast() {
toast.style.display = 'block';
setTimeout(() => {
toast.style.display = 'none';
}, 2000);
}
patterns.forEach((item, index) => {
const card = document.createElement('div');
card.className = 'card';
card.innerHTML = `
<div class="preview-box" style="${item.css}"></div>
<div class="card-body">
<div class="card-title">${item.name}</div>
<textarea readonly>${item.css}</textarea>
<button onclick="copyCode(${index})">کپی کد CSS</button>
</div>
`;
container.appendChild(card);
});
function copyCode(index) {
const codeToCopy = patterns[index].css;
navigator.clipboard.writeText(codeToCopy).then(() => {
showToast();
});
}
</script>
</body>
</html>
بررسی بخشهای مختلف کد و نحوهی عملکرد آن
این فایل بر پایهی یک ساختار مدرن طراحی شده است که در ادامه اجزای آن را کالبدشکافی میکنیم:
- تگهای استایل (CSS Variables & Reset): در بخش ابتدایی کدهای استایل، متغیرهای سراسری (CSS Variables) برای مدیریت یکپارچهی رنگها تعریف شدهاند تا هماهنگی بصری تیرهرنگ (Dark Theme) حفظ شود. همچنین گرید واکنشگرا (Responsive Grid) با استفاده از ویژگی
grid-template-columnsبهگونهای تنظیم شده که در تمام اندازههای صفحه، کارتها به شکل مرتب کنار هم قرار گیرند. - آرایهی دادهها در جاوااسکریپت: آرایهی
patternsشامل نام الگو و دستورات سیاساس مربوطه است. شما میتوانید به سادگی الگوهای جدید خود را به این آرایه اضافه کنید تا به صورت خودکار به گالری افزوده شوند. - تولید پویای کارتها (Dynamic DOM Generation): حلقهی
forEachدر جاوااسکریپت به ازای هر الگو، یک کارتِ گرافیکی شامل کادر پیشنمایش، کادر متنی حاوی کد و دکمهی کپی میسازد. - سیستم کپی خودکار (Clipboard API): تابع
copyCodeبا استفاده از امکانات مدرن مرورگرها، کد مربوطه را بیدرنگ به حافظهی موقت (Clipboard) سیستم منتقل میکند و یک پیام موفقیت (Toast) به کاربر نمایش میدهد.
نکات مهم و اشتباهات رایج در پیادهسازی پترنهای CSS
هنگامی که از این الگوها در پروژههای واقعی وب استفاده میکنید، رعایت چند نکتهی کوچک میتواند از بروز مشکلات ظاهری جلوگیری کند:
- تداخل اندازهگیری (Background Size): در پترنهای تکرار شونده (مانند نقطهها یا چهارخانهها)، تنظیم دقیق خصوصیت
background-sizeحیاتی است. اگر این مقدار فراموش شود، الگو به درستی تکرار نخواهد شد. - کنتراست رنگ متن: از آنجا که این الگوها به عنوان پسزمینه (Background) به کار میروند، حتماً مطمئن شوید که رنگ متن روی آنها خوانایی کافی دارد. استفاده از سایه متن (Text Shadow) یا کادربندی محتوا در چنین شرایطی پیشنهاد میشود.
- سازگاری با مرورگرها: تمامی کدهای بهکاررفته در این پلتفرم از استانداردهای مدرن W3C پیروی میکنند و روی تمامی مرورگرهای امروزی (کروم، فایرفاکس، اج و سافاری) بدون نیاز به پیشوند سازگاری (Vendor Prefixes) به طور کامل اجرا میشوند.
پرسشهای متداول
آیا استفاده از این الگوهای CSS تاثیری روی سرعت لود سایت دارد؟
خیر، برعکس. از آنجا که هیچ فایل تصویری از سرور دانلود نمیشود، مرورگر با پردازش مقادیر ریاضی و کدهای سبک CSS، پسزمینه را در کسری از ثانیه رندر میکند که به بهبود سرعت سایت کمک شایانی میکند.
چطور میتوانم رنگهای موجود در الگوها را تغییر دهم؟
شما میتوانید مقادیر رنگی (هگز یا RGB) موجود در کدهای کپی شده را به دلخواه تغییر دهید. برای مثال در گرادیانتها کدهای رنگی اول و دوم را با رنگهای سازگار با هویت برند خود جایگزین کنید.
آیا این ابزار نیازمند اتصال به اینترنت یا کتابخانههای جانبی است؟
خیر، این ابزار کاملاً استاتیک است و به صورت خالص با HTML، CSS و جاوااسکریپت وانیلا نوشته شده است. هیچ وابستگی خارجی یا کتابخانهی سنگینی (مثل بوتاسترپ یا جیکوئری) در آن وجود ندارد.
جمعبندی
استفاده از پسزمینههای مبتنی بر کد سیاساس یکی از بهترین روشها برای سبک نگه داشتن حجم صفحات وب و در عین حال افزایش جذابیت بصری آنهاست. پروژهای که در این مقاله بررسی کردیم، به شما این امکان را میدهد که به راحتی پترنها و گرادیانتهای مدرن را مدیریت کرده و با یک کلیک آنها را در پروژههای فرانتاند خود به کار بگیرید. با پیادهسازی این الگوها، هم در مصرف پهنای باند صرفهجویی میکنید و هم مدرنترین جلوههای گرافیکی را به کاربران خود هدیه میدهید.




