نقشهکشی سایت: تعریف سطرها و ستونهای گرید

نقشهکشی سایت: تعریف سطرها و ستونهای گرید
ساخت شبکه با CSS Grid: ستونها و سطرها! 📐
سلام دوستان عزیز! توی جلسه قبل با مفهوم کلی CSS Grid و تفاوتش با Flexbox آشنا شدیم. حالا وقتشه که عمیقتر بشیم و ببینیم چطور میتونیم یه شبکه (Grid) واقعی بسازیم. دو تا از اصلیترین خصوصیتهایی که برای تعریف ساختار شبکه روی Grid Container استفاده میشن، grid-template-columns
و grid-template-rows
هستن. با اینها، ما مشخص میکنیم که گرید ما چند تا ستون و چند تا سطر داشته باشه و اندازهی هر کدوم چقدر باشه. بزن بریم که یاد بگیریم چطور این شبکه رو بسازیم! 🏗️
1. `grid-template-columns`: تعریف ستونهای شبکه! Column Masters! 🏗️
این خصوصیت تعیین میکنه که شبکهی شما چند ستون خواهد داشت و اندازهی هر ستون چقدره. مقادیری که میتونید اینجا استفاده کنید خیلی متنوع هستن:
- واحد طول ثابت: مثل
px
،em
،rem
. (مثال:grid-template-columns: 100px 200px;
یعنی دو ستون داریم، اولی 100 پیکسل و دومی 200 پیکسل.) - درصد (%): اندازهی ستون بر اساس عرض کل Grid Container. (مثال:
grid-template-columns: 50% 50%;
یعنی دو ستون مساوی.) - کلمه کلیدی `auto`: اندازه ستون بر اساس محتوای داخل آیتمها تنظیم میشه.
- کلمه کلیدی `fr` (fractional unit): این واحد خیلی کاربردیه! فضاهای خالی رو به نسبتهای مساوی تقسیم میکنه. (مثال:
grid-template-columns: 1fr 2fr;
یعنی ستون دوم دو برابر ستون اول فضا میگیره.) - تابع `repeat()`: برای تعریف الگوهای تکراری. (مثال:
grid-template-columns: repeat(3, 1fr);
یعنی سه ستون با اندازهی مساوی.) - تابع `minmax()`: حداقل و حداکثر اندازه برای ستون. (مثال:
grid-template-columns: 100px minmax(200px, 1fr);
یعنی ستون اول 100 پیکسل، ستون دوم حداقل 200 پیکسل ولی میتونه تا 1fr رشد کنه.)
.grid-container-cols {
display: grid;
/* تعریف 3 ستون */
grid-template-columns: 100px 1fr 2fr; /* ستون اول ثابت، بقیه فضا رو تقسیم میکنن */
gap: 10px; /* فاصله بین ستونها و سطرها */
background-color: #80deea;
padding: 10px;
margin-bottom: 20px;
}
.grid-container-repeat {
display: grid;
grid-template-columns: repeat(4, 1fr); /* 4 ستون با عرض مساوی */
gap: 10px;
background-color: #4dd0e1;
padding: 10px;
margin-bottom: 20px;
}
.grid-container-auto {
display: grid;
grid-template-columns: auto 1fr auto; /* اولی و سومی بر اساس محتوا، وسطی بقیه رو میگیره */
gap: 10px;
background-color: #26c6da;
padding: 10px;
margin-bottom: 20px;
}
.grid-item {
background-color: #0097a7;
color: white;
padding: 20px;
text-align: center;
border-radius: 5px;
}
استفاده از واحد `fr` واقعاً کار رو برای ایجاد Layoutهای واکنشگرا و منعطف خیلی راحت میکنه.
2. `grid-template-rows`: تعریف سطرهای شبکه! Row Masters! 🏠
این خصوصیت دقیقاً مثل grid-template-columns
عمل میکنه، اما برای سطرها! تعیین میکنه که شبکهی شما چند سطر خواهد داشت و ارتفاع هر سطر چقدره. مقادیرش هم مشابه هستن:
- واحد طول ثابت: مثل
px
،em
. - درصد (%): بر اساس ارتفاع کل Grid Container (اگر ارتفاع مشخصی داشته باشه).
- کلمه کلیدی `auto`: ارتفاع سطر بر اساس محتوای داخل آیتمها تنظیم میشه.
- کلمه کلیدی `fr`: فضاهای عمودی باقیمانده رو تقسیم میکنه.
- تابع `repeat()`: برای سطرها هم قابل استفاده است.
- تابع `minmax()`: حداقل و حداکثر ارتفاع برای سطر.
.grid-container-rows {
display: grid;
/* تعریف 2 ستون و 3 سطر */
grid-template-columns: 1fr 1fr; /* دو ستون مساوی */
grid-template-rows: 80px auto 1fr; /* سطر اول 80px، دوم بر اساس محتوا، سوم بقیه ارتفاع رو میگیره */
gap: 15px;
height: 400px; /* ارتفاع کل کانتینر مهمه وقتی از fr برای سطرها استفاده میکنیم */
background-color: #80cbc4;
padding: 15px;
margin-bottom: 20px;
}
.grid-container-rows-repeat {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 ستون مساوی */
grid-template-rows: repeat(2, min-content auto); /* دو سطر: اولی حداقل ارتفاع محتوا، دومی بر اساس محتوا */
gap: 15px;
background-color: #4db6ac;
padding: 15px;
margin-bottom: 20px;
}
.grid-item {
background-color: #00796b;
color: white;
padding: 20px;
text-align: center;
border-radius: 5px;
}
وقتی از `fr` برای سطرها استفاده میکنیم، حتماً باید برای Grid Container یه ارتفاع مشخص (مثلاً
height
یاmin-height
) تعریف کنیم تا Grid بدونه چقدر فضا رو باید تقسیم کنه.
3. تابع `repeat()` و `auto-fit`/`auto-fill` : کوتاهنویسی هوشمندانه! 🤖
برای اینکه کدنویسی خلاصهتر بشه، میتونیم از تابع repeat()
استفاده کنیم. همچنین، ترکیب repeat()
با auto-fit
یا auto-fill
و واحد `px` یا `minmax()`، ابزار فوقالعادهای برای ساخت گریدهای ریسپانسیو ایجاد میکنه.
- `auto-fit`: ستونهایی که جا نمیشن، کوچک میشن و فضای خالی بین ستونهای موجود تقسیم میشه.
- `auto-fill`: ستونهایی که جا نمیشن، فضای خالی رو میگیرن ولی اگه تعداد زیادی ستون با عرض کم تعریف کنیم، فضاهای خالی ایجاد میشه.
.responsive-grid-columns {
display: grid;
/* 3 ستون داریم: اولی 1fr، دومی و سومی حداقل 150px باشن ولی اگه جا نبود کوچیک شن */
grid-template-columns: 1fr repeat(2, minmax(150px, auto));
gap: 10px;
background-color: #26a69a;
padding: 10px;
margin-bottom: 20px;
}
.responsive-grid-auto-fit {
display: grid;
/* سعی کن هر تعداد ستون با حداقل عرض 200px ایجاد کنی، و بقیه فضا رو بینشون تقسیم کن */
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 10px;
background-color: #00796b;
padding: 10px;
margin-bottom: 20px;
}
.grid-item {
background-color: #00695c;
color: white;
padding: 20px;
text-align: center;
border-radius: 5px;
}
ترکیب `repeat(auto-fit, minmax(min, max))` یکی از قویترین روشها برای ساخت گریدهایی هست که به طور خودکار تعداد ستونهاشون رو بر اساس عرض صفحه تنظیم میکنن.
با استفاده از grid-template-columns
و grid-template-rows
، شما کنترل کاملی بر روی ساختار ستونها و سطرها در گرید خودتون دارید. این دو خصوصیت، پایه و اساس هر طرحبندی CSS Grid هستن. حسابی تمرینشون کنید تا مسلط بشید! موفق باشید! 🌟
مقالات مرتبط
آخرین مقالات
کدهای تمیز: با متغیرها، CSS را هوشمند کنید! 💡
متغیرهای CSS (Custom Properties): کد تمیزتر، مدیریت راحتتر! 🎨 سلام به همگی! توی پروژههای CSS، خیلی وقتا پیش میاد که یه رنگ، یه فونت، یا یه فاصله رو بارها و بارها توی جاهای مختلف استفاده میکنیم. مثلاً رنگ اصلی سایتمون...
ساخت انیمیشنهای حرفهای با @keyframes (گام به گام)
CSS Animations: خلق انیمیشنهای پیچیده با @keyframes! 🎬 سلام به همگی! تا الان با Transitionها آشنا شدیم که تغییرات بین دو حالت رو نرم میکنن. اما اگه بخوایم انیمیشنهای پیچیدهتر، چند مرحلهای، یا حتی انیمیشنهایی که مدام تکرار میشن رو...
دگرگونی سایت با CSS: چرخش، تغییر اندازه و جابجایی
CSS Transforms: جابجایی، چرخش، تغییر اندازه و کج کردن عناصر! 🤸♀️ سلام دوستان! تا اینجا با انیمیشنهای نرم و پیوسته (Transitions) آشنا شدیم. اما گاهی وقتها نیاز داریم که عناصر HTML رو جابجا کنیم، بچرخونیم، اندازهشون رو عوض کنیم یا...
انتقالهای نرم: عناصر خود را متحرک کنید!
CSS Transitions: جادوی حرکت نرم و روان! ✨ سلام به همه! تا حالا شده یه سایت رو ببینید که با هاور کردن روی یه دکمه، رنگش نرم و قشنگ عوض میشه؟ یا با تغییر اندازه یه عنصر، انیمیشن ظریفی رو...