آموزش رایگان 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 خود ایجاد کنید. این قابلیت‌ها باعث می‌شوند که کد شما مقیاس‌پذیرتر، خواناتر و بدون تداخل در سایر بخش‌ها باشد. با استفاده صحیح از این تکنیک‌ها، می‌توانید به پروژه‌های خود نظم و پایداری بیشتری بدهید.

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش Pseudo-classes در CSS: تغییر استایل عناصر با hover، focus و nth-child
10م شهریور 1402

آموزش Pseudo-classes در CSS: تغییر استایل عناصر با hover، focus و nth-child

مطالعه بیشتر
مدیریت خطاها و استفاده از try...catch در جاوا اسکریپت: راهنمای کامل و مثال‌ها
28م مهر 1403

مدیریت خطاها و استفاده از try...catch در جاوا اسکریپت: راهنمای کامل و مثال‌ها

مطالعه بیشتر
آموزش Event Handling و v-on در Vue.js | مدیریت رویدادها با مثال کاربردی
22م آذر 1404

آموزش Event Handling و v-on در Vue.js | مدیریت رویدادها با مثال کاربردی

مطالعه بیشتر
پارامترها و بازگشت از توابع در جاوا اسکریپت: نحوه تعریف و مدیریت خروجی‌ها
2م بهمن 1402

پارامترها و بازگشت از توابع در جاوا اسکریپت: نحوه تعریف و مدیریت خروجی‌ها

مطالعه بیشتر
JSX و رندرینگ مؤثر در React.js: بهینه‌سازی کامپوننت‌ها و بهبود عملکرد
28م شهریور 1402

JSX و رندرینگ مؤثر در React.js: بهینه‌سازی کامپوننت‌ها و بهبود عملکرد

مطالعه بیشتر
راهنمای کامل جداول HTML: آموزش ساخت و بهینه‌سازی سئو
21م مرداد 1402

راهنمای کامل جداول HTML: آموزش ساخت و بهینه‌سازی سئو

مطالعه بیشتر
آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها
28م مهر 1403

آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها

مطالعه بیشتر
کار با فیلترهای CSS: آموزش استفاده از blur، brightness و contrast برای افکت‌های تصویری جذاب
11م آبان 1403

کار با فیلترهای CSS: آموزش استفاده از blur، brightness و contrast برای افکت‌های تصویری جذاب

مطالعه بیشتر
آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای
18م شهریور 1402

آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای

مطالعه بیشتر
تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازه‌ها
9م آبان 1403

تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازه‌ها

مطالعه بیشتر
آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی
4م آبان 1403

آموزش ساخت ماشین حساب با جاوا اسکریپت: راهنمای کامل با مثال‌های کاربردی

مطالعه بیشتر
مدیریت رویدادها در جاوا اسکریپت: اضافه و حذف Event Listeners - آموزش جامع با مثال‌ها
2م آبان 1403

مدیریت رویدادها در جاوا اسکریپت: اضافه و حذف Event Listeners - آموزش جامع با مثال‌ها

مطالعه بیشتر

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