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

در ادامه، با این روش‌ها مرحله‌به‌مرحله آشنا می‌شویم و برای هر روش، یک مثال ساده ارائه می‌دهیم تا بهتر درک کنید که چطور از آن‌ها در پروژه‌های خود استفاده کنید.

استایل دهی با استایل های Inline

در این روش، استایل‌ها مستقیماً درون تگ‌های JSX نوشته می‌شوند. برای این کار، از ویژگی style استفاده می‌کنیم و یک شیء جاوااسکریپت به آن نسبت می‌دهیم.

function App() {
  return (
    <div>
      <h1 style={{ color: 'blue', fontSize: '24px' }}>Hello PNLdev!</h1>
      <button style={{ backgroundColor: 'green', color: 'white', padding: '10px' }}>
        Click Here
      </button>
    </div>
  );
}

export default App;

نکته:  برای نوشتن استایل در JSX، از یک شیء جاوااسکریپت استفاده می‌شود که داخل دو آکولاد {{}} قرار می‌گیرد؛ آکولاد اول مربوط به جاوااسکریپت در JSX و دومی مربوط به خود شیء است.

نکته:  در استایل‌دهی JSX، از نام‌های camelCase مثل backgroundColor به جای نام‌های CSS معمولی مثل background-color استفاده می‌شود.

استایل‌دهی با CSS خارجی

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

مثلاً فرض کنید فایلی به نام styles.css داریم با محتوای زیر:

.title {
  color: blue;
  font-size: 24px;
}

.button {
  background-color: green;
  color: white;
  padding: 10px;
}

حالا توی کامپوننت ری‌اکت، به این شکل از اون استفاده می‌کنیم:

import React from 'react';
import './styles.css'; // وارد کردن فایل CSS

function App() {
  return (
    <div>
      <h1 className="title">Hello PNLdev!</h1>
      <button className="button">Click Here</button>
    </div>
  );
}

export default App;

نکته: در JSX باید از className به‌جای class استفاده کنیم چون class در جاوااسکریپت یک کلمه رزرو شده است.

استایل دهی با CSS Modules

CSS Modules یک روش پیشرفته برای استایل‌دهی محلی در ری‌اکت است. با این روش، استایل‌های هر کامپوننت به خودش محدود می‌شن و روی سایر کامپوننت‌ها تأثیری نمی‌ذارن؛ این یعنی دیگه خبری از تداخل بین کلاس‌ها نیست.

فرض کنید فایلی داریم به نام style.module.css با این محتوا:

.title {
  color: red;
  font-size: 20px;
}

و حالا این فایل رو توی کامپوننت‌مون این‌طور استفاده می‌کنیم:

import React from 'react';
import styles from './style.module.css'; // وارد کردن استایل به صورت شیء

function App() {
  return (
    <div>
      <h1 className={styles.title}>Hello PNLdev!</h1>
    </div>
  );
}

export default App;

نکته: برای اینکه ری‌اکت متوجه بشه فایل CSS شما یک ماژول هست، باید حتماً نام فایل با .module.css تمام بشه.

نکته: فایل استایل به‌صورت یک شیء جاوااسکریپت وارد می‌شه (مثلاً styles) و برای دسترسی به کلاس‌ها باید از styles.className استفاده کنید.

خلاصه درس

در این درس آموختید که چگونه به کامپوننت‌ها در ری‌اکت ظاهر مناسب بدهید. روش‌هایی که بررسی کردیم:

  • CSS خارجی: با تعریف کلاس‌ها در فایل‌های جداگانه و استفاده از className در JSX، می‌توان ظاهر را از منطق جدا کرد.
  • استایل‌دهی Inline: زمانی مفید است که بخواهید به‌صورت سریع یا داینامیک، ظاهر را در خود JSX تعیین کنید.
  • CSS Modules: روشی مدرن برای اعمال استایل محلی، بدون نگرانی از تداخل با دیگر کامپوننت‌ها.

تمرین


مشاهده پاسخ
توسعه دهندگان
نیما عراقی