آموزش رایگان Vue.js

استفاده از CSS Scoped و استایل‌دهی به کامپوننت‌ها در Vue.js | آموزش کاربردی

23م آذر 1404 محراب حسن زاده
استفاده از CSS Scoped و استایل‌دهی به کامپوننت‌ها در Vue.js | آموزش کاربردی

در Vue.js، کامپوننت‌ها بخش‌های مجزا و قابل استفاده مجددی از برنامه هستند که می‌توانند HTML، CSS و JavaScript خاص خود را داشته باشند. برای جلوگیری از تداخل استایل‌ها بین کامپوننت‌ها، Vue ویژگی‌ای به نام CSS Scoped ارائه می‌دهد. با استفاده از این ویژگی می‌توان استایل‌های CSS را به یک کامپوننت خاص محدود کرد. در این مقاله، به بررسی ویژگی CSS Scoped و روش‌های مختلف استایل‌دهی به کامپوننت‌ها در Vue.js می‌پردازیم.


مفهوم CSS Scoped در Vue.js

CSS Scoped به شما این امکان را می‌دهد که استایل‌های CSS را فقط به کامپوننت مربوطه محدود کنید. این ویژگی از اضافه شدن استایل‌های یک کامپوننت به سایر کامپوننت‌ها جلوگیری می‌کند و تضمین می‌کند که هر کامپوننت تنها با استایل‌های خود رندر شود.


نحوه استفاده از CSS Scoped

برای محدود کردن استایل‌های CSS به یک کامپوننت، کافی است که ویژگی scoped را به تگ < style > اضافه کنید. این کار باعث می‌شود که Vue به صورت خودکار یک شناسه یکتا به کلاس‌ها و استایل‌ها اضافه کند و آن‌ها را به کامپوننت محدود کند.

مثال استفاده از CSS Scoped در یک کامپوننت:




< template >
  < div class = " my-component " >
    < h1 > Hello from Scoped CSS < / h1 >
  < / div >
< / template >




export default {
  name : " MyComponent "
} ;




.my-component {
  color: blue;
}

h1 {
  font-size: 24px;
}


در این مثال:

  • استایل‌هایی که داخل تگ < style scoped > قرار گرفته‌اند، تنها به عناصر داخل این کامپوننت (یعنی MyComponent) اعمال می‌شوند.

  • استایل‌های my-component و h1 بر سایر کامپوننت‌ها تأثیری نخواهند گذاشت.


مزایای استفاده از CSS Scoped

  • جلوگیری از تداخل استایل‌ها: با محدود کردن استایل‌ها به یک کامپوننت خاص، نیازی نیست نگران تداخل استایل‌ها در پروژه باشید.

  • نگهداری و خوانایی بیشتر: هر کامپوننت استایل‌های خاص خود را دارد و پروژه‌ای ساختارمند و قابل نگهداری‌تر ایجاد می‌کند.

  • مقیاس‌پذیری: به راحتی می‌توانید کامپوننت‌ها را به سایر بخش‌های پروژه اضافه کنید بدون نگرانی از تداخل استایل‌ها.


محدودیت‌های CSS Scoped

در حالی که CSS Scoped ابزار قدرتمندی است، اما محدودیت‌هایی نیز دارد:

  • تأثیر روی کامپوننت‌های فرزند: استایل‌های Scoped به صورت پیش‌فرض به کامپوننت‌های فرزند اعمال نمی‌شوند. اگر نیاز دارید که استایل‌ها به فرزندان کامپوننت نیز اعمال شوند، باید از ترکیب CSS Scoped با انتخابگرهای CSS مانند > استفاده کنید.

  • عدم پشتیبانی از global: استایل‌های Scoped به صورت پیش‌فرض به کلاس‌ها یا عناصر عمومی اعمال نمی‌شوند. برای افزودن استایل‌های عمومی به کامپوننت، باید از استایل‌های global استفاده کنید.

مثال برای تأثیر روی کامپوننت‌های فرزند با انتخابگرهای CSS:




< template >
  < div class = " parent-component " >
    < div class = " child-component " > This is a child component < / div >
  < / div >
< / template >




.parent-component > .child-component {
  color: green;
}


در این مثال، استایل تنها به child-component در داخل parent-component اعمال می‌شود و بر سایر عناصر تأثیری ندارد.


استفاده از CSS Modules برای استایل‌دهی به کامپوننت‌ها

Vue.js همچنین از CSS Modules پشتیبانی می‌کند که روشی برای نوشتن کلاس‌های یکتا و محدود به کامپوننت است. CSS Modules با تولید کلاس‌های یکتا از تداخل استایل‌ها جلوگیری می‌کند.

مثال استفاده از CSS Modules در Vue:




< template >
  < div :class = " $style.myComponent " >
    Styled with CSS Modules
  < / div >
< / template >




.myComponent {
  color: red;
  font-weight: bold;
}


در اینجا:

  • $style.myComponent کلاسی یکتا تولید می‌کند که تنها به این کامپوننت اعمال می‌شود.

  • Vue.js به صورت خودکار نام کلاس را به شکلی یکتا تنظیم می‌کند تا از تداخل استایل‌ها جلوگیری شود.


استفاده از استایل‌های جهانی در کنار Scoped CSS

گاهی نیاز است که استایل‌هایی به صورت عمومی در کل پروژه اعمال شوند. برای این کار، می‌توانید بخشی از کد CSS را به عنوان استایل جهانی تعریف کنید.

مثال استفاده از استایل‌های جهانی:




/* استایل‌های Scoped */
.my-component {
  color: blue;
}




/* استایل‌های عمومی */
body {
  font-family: Arial, sans-serif;
  background-color: #f0f0f0;
}


در این مثال، استایل‌های عمومی بدون scoped تعریف شده‌اند و بر کل پروژه اثرگذار خواهند بود، در حالی که استایل‌های scoped تنها به کامپوننت محدود شده‌اند.


استفاده از متغیرهای CSS برای استایل‌دهی پویا

متغیرهای CSS می‌توانند برای تنظیم استایل‌های پویا در Vue.js استفاده شوند. این کار به شما اجازه می‌دهد تا رنگ‌ها، فونت‌ها و سایر ویژگی‌ها را به طور متمرکز کنترل کنید.

مثال استفاده از متغیرهای CSS در کامپوننت:




< template >
  < div class = " my-component " >
    < p > This text uses CSS variables < / p >
  < / div >
< / template >




:root {
  --main-color: #3498db;
  --font-size: 16px;
}

.my-component {
  color: var(--main-color);
  font-size: var(--font-size);
}


در اینجا، متغیرهای --main-color و --font-size برای استایل‌دهی به کامپوننت استفاده می‌شوند و می‌توانند به راحتی در سایر کامپوننت‌ها نیز استفاده شوند.


استفاده از Preprocessorها برای استایل‌دهی پیشرفته

در Vue.js می‌توانید از Preprocessorهایی مانند SCSS، SASS و LESS استفاده کنید تا استایل‌های پیشرفته‌تر و سازماندهی شده‌تری داشته باشید. این Preprocessorها امکانات بیشتری مانند متغیرها، توابع و تو در تویی (Nesting) را فراهم می‌کنند.

مثال استفاده از SCSS در Vue:




< template >
  < div class = " my-component " >
    < p > Styled with SCSS < / p >
  < / div >
< / template >




$main-color: #2ecc71;

.my-component {
  color: $main-color;

  p {
    font-size: 18px;
    font-weight: bold;
  }
}


در این مثال، متغیر $main-color تعریف شده و سپس در استایل‌دهی به کامپوننت استفاده شده است.


نتیجه‌گیری

با استفاده از CSS Scoped، CSS Modules و سایر تکنیک‌های استایل‌دهی مانند Preprocessorها و متغیرهای CSS، می‌توانید استایل‌های بهینه و سازمان‌یافته‌ای برای کامپوننت‌های Vue.js خود ایجاد کنید. این قابلیت‌ها باعث می‌شوند که کد شما مقیاس‌پذیرتر، خواناتر و بدون تداخل در سایر بخش‌ها باشد. با استفاده صحیح از این تکنیک‌ها، می‌توانید به پروژه‌های خود نظم و پایداری بیشتری بدهید.

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

مدیریت فرم‌ها و ورودی‌ها در Vue.js | آموزش Form Handling با مثال کاربردی
22م آذر 1404

مدیریت فرم‌ها و ورودی‌ها در Vue.js | آموزش Form Handling با مثال کاربردی

مطالعه بیشتر
آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد
24م آذر 1404

آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد

مطالعه بیشتر
آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها
5م شهریور 1402

آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایل‌دهی حرفه‌ای به متن‌ها

مطالعه بیشتر
استفاده از display در CSS: تغییر نحوه نمایش عناصر - راهنمای جامع
9م آبان 1403

استفاده از display در CSS: تغییر نحوه نمایش عناصر - راهنمای جامع

مطالعه بیشتر
آشنایی با انواع انتخاب‌گرها و تغییر پس‌زمینه با CSS: راهنمای جامع
4م شهریور 1402

آشنایی با انواع انتخاب‌گرها و تغییر پس‌زمینه با CSS: راهنمای جامع

مطالعه بیشتر
کاربرد تگ‌های meta، title و keywords در سئو: راهنمای جامع بهینه‌سازی وب‌سایت
25م مرداد 1402

کاربرد تگ‌های meta، title و keywords در سئو: راهنمای جامع بهینه‌سازی وب‌سایت

مطالعه بیشتر
آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها
12م آبان 1403

آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها

مطالعه بیشتر
مقدمه‌ای بر CSS و نحوه اضافه کردن آن به HTML: راهنمای ساده و کامل برای مبتدیان
4م شهریور 1402

مقدمه‌ای بر CSS و نحوه اضافه کردن آن به HTML: راهنمای ساده و کامل برای مبتدیان

مطالعه بیشتر
آموزش کامل کار با آرایه‌ها و اشیاء در جاوا اسکریپت: ایجاد، دستکاری و پیمایش
2م شهریور 1403

آموزش کامل کار با آرایه‌ها و اشیاء در جاوا اسکریپت: ایجاد، دستکاری و پیمایش

مطالعه بیشتر
آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی
29م مرداد 1402

آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی

مطالعه بیشتر
معرفی React.js و بررسی مزایای آن برای توسعه وب و اپلیکیشن
28م شهریور 1402

معرفی React.js و بررسی مزایای آن برای توسعه وب و اپلیکیشن

مطالعه بیشتر
آموزش ایجاد تگ‌های صفحه‌بندی در HTML و CSS: طراحی و استایل‌دهی pagination
29م مرداد 1402

آموزش ایجاد تگ‌های صفحه‌بندی در HTML و CSS: طراحی و استایل‌دهی pagination

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد