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

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش ساخت یک گالری تصویر با استفاده از جاوا اسکریپت: راهنمای گام به گام
3م آبان 1403

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

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

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

مطالعه بیشتر
آموزش Responsive Design با استفاده از Media Queries: طراحی واکنش‌گرا برای تمامی دستگاه‌ها
10م شهریور 1402

آموزش Responsive Design با استفاده از Media Queries: طراحی واکنش‌گرا برای تمامی دستگاه‌ها

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

بررسی کتابخانه‌های محبوب جاوا اسکریپت: آشنایی با Lodash و Moment.js - مزایا و کاربردها

مطالعه بیشتر
آموزش جامع توابع بازگشتی (Recursion) و کاربردهای آن در جاوا اسکریپت: مثال‌ها و مفاهیم
29م مهر 1403

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

مطالعه بیشتر
آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب
18م شهریور 1402

آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب

مطالعه بیشتر
آموزش اصول کار با WebSockets و ارتباطات بلادرنگ در وب: راهنمای کامل
5م آبان 1403

آموزش اصول کار با WebSockets و ارتباطات بلادرنگ در وب: راهنمای کامل

مطالعه بیشتر
آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای
12م آبان 1403

آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای

مطالعه بیشتر
استفاده از Viewports و Viewport Units در CSS: طراحی واکنش‌گرا با vw، vh، vmin و vmax
16م آبان 1403

استفاده از Viewports و Viewport Units در CSS: طراحی واکنش‌گرا با vw، vh، vmin و vmax

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

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

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

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

مطالعه بیشتر
استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل
16م آبان 1403

استفاده از clip-path در CSS برای برش‌های زیبا و جذاب: راهنمای کامل

مطالعه بیشتر

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