شبه کلاس‌ها در CSS | مفهوم Pseudo

شبه کلاس‌ها در CSS

در این جلسه از آموزش رایگان HTML و CSS به سراغ مفهوم شبه کلاس‌ها در CSS می‌رویم. شبه کلاس که به انگلیسی به آن Pseudo کلاس گفته می‌شود، مفهوم پیچیده‌ای نیست اما در طراحی صفحات وب بسیار کاربردی است. پس در این جلسه هم همراه ادمین‌سایت باشید تا این مفهوم را به طور کامل بررسی کنیم.

مفهوم شبه کلاس‌ در CSS

در جلسات قبلی گفتیم که می‌توانیم برای عناصر، کلاس تعریف کنیم و به کمک یک (.) آنها را در CSS با نام کلاس انتخاب کنیم. برای مثال box. تمامی عناصری که دارای کلاس box‌ هستند را انتخاب می‌کند.

مفهوم شبه کلاس مانند کلاس نیست که بخواهیم برای هر عنصر آن را تعریف کنیم. شبه کلاس‌ها در CSS کمک می‌کنند حالت خاصی از یک عنصر را انتخاب کنیم. یا یک عنصر را در وضعیت مشخصی انتخاب کنیم.

برای مثال فرض کنید در یک لیست می‌خواهیم عناصر لیست را انتخاب کنیم. به کمک li می‌توانیم تمامی عناصر لیست را انتخاب کنیم، اما اگر فقط هدف ما انتخاب اولین عضو لیست باشد چه؟ آنگاه از شبه کلاس استفاده می‌کنیم:

li:first-child {
    background: red;
}

شبه کلاس first-child: فقط li ای را انتخاب می‌کند که عضو اول است. اگر از دو نقطه ابتدای آن متعجب شده‌اید بهتر است به سراغ بررسی ساختار و نحو آنها برویم.

نحو (Syntax) شبه کلاس‌ها در CSS

selector:pseudo-class {
  property: value;
}

کافیست ابتدا یک عنصر را با هر روشی که می‌دانید انتخاب کنید بعد به کمک علامت : از یک شبه‌کلاس برای مشخص کردن حالت خاص آن عنصر کمک بگیرید. منظورم از حالت خاص یکی از موارد زیر است:

  • انتخاب یک عنصر که موس روی آن قرار گرفته
  • انتخاب لینکی که توسط کاربر کلیک شده
  • انتخاب فرزند چندم از یک والد
  • و….


مهمترین Pseudo کلاس‌ها

اگر تا به اینجا کمی سردرگم هستید و فکر می‌کنید چیزی متوجه نشده‌اید کاملاً طبیعی است!! چند بخش بعدی موضوع را به خوبی برایتان جا می‌اندازد!

شبه کلاس برای حرکت موس

می‌خواهیم زمانی که کاربر موس را روس عنصر خاصی قرار داد، آن عنصر یک استایل جدید داشته باشد. برای نمونه کد زیر باعث می‌شود رنگ پس‌زمینه تگ a بعد از قرار گرفتن موس، رنگ آن به آبی تیره‌تر تغییر ‌کند.

a:hover {
  background-color: #138496;
}

برای مشاهده نتیجه موس خود را روی دکمه مقابل قرار دهید.

شبه کلاس hover


مشخص کردن اولین عنصر والد

div span:first-child {
    color: blue;
}

عضو اول عضو دوم عضو سوم

همانطور که مشاهده می‌کنید، عضو اول انتخاب و رنگ دلخواه به آن داده شد.


سایر شبه کلاس‌ها

دوستان عزیز می‌توانید هریک از شبکه‌ کلاس‌های زیر را در CSS آزمایش کنید تا با مفهوم دقیق‌تر آن آشنا شوید.

شبه کلاسنمونهکاربرد
activea:activeانتخاب لینک فعال (لحظه کلیک موس روی لینک)
linka:linkانتخاب لینک‌هایی که هنوز کلیک نشده‌اند.
visiteda:visitedانتخاب لینک‌هایی که از روی آنها کلیک شده (دیده شده)
emptyp:emptyانتخاب عنصری که هیچ فرزندی ندارد.
last-childli:last-childانتخاب فرزند آخر یک تگ
()not( p )not:انتخاب نکردن این عنصر، در مثال انتخاب همه عناصر جز p
()nth-childp:nth-child(2n)انتخاب فرزندان مشخص یک تگ، در مثال فرزندان زوج
first-of-typep:first-of-typeانتخاب اولین عنصر نوع خاص در والد، نمونه:انتخاب اولین p در والد
last-of-typep:last-of-typeانتخاب آخرین عنصر نوع خاص در والد، مثال: انتخاب آخرین p والد
checkedinput:checkedانتخاب عنصری که تیک خورده (در جلسه فرم‌ها به آن می‌پردازیم)
focusinput:focusانتخاب فیلدی که موس روی آن فوکوس کرده (جلسه فرم‌ها)

تمرین: برای اینکه مطمئن شوید که مطالب فوق را به خوبی آموخته‌اید، به سوال زیر پاسخ دهید.
در جدول بالا بعضی از سطرها رنگ شده‌اند. در CSS این سطرها چگونه انتخاب شده‌اند؟ در کامنت نام شبه‌کلاس مربوطه را بنویسید.

دیدگاه کاربران

  • taha
    taha
    3 سال پیش

    سلام برای اینکه هروقت روی یک عنصر کلیک شد اتریبیوت ها عمل کنن باید چه شبه کلاسی استفاده کرد؟
    نه مثل active که فقط همون لحظه کلیک عمل میکنه

    • علی سلطانی
      علی سلطانی
      3 سال پیش

      سلام وقت بخیر
      اگه درست منظور شما رو متوجه شده باشم، شبه کلاس focus باید کار شمارو راه بندازه
      موفق باشید

  • الهام
    الهام
    4 سال پیش

    خیلی مختصر و مفید

  • پرستو احمدی
    پرستو احمدی
    4 سال پیش

    tr:nth-child(2n+1){background-color:red}

    • مریم جعفرپور
      مریم جعفرپور
      4 سال پیش

      درسته برای رنگ دادن به پس زمینه‌ی سطرهای فرد

  • حسین
    حسین
    5 سال پیش

    سلام. خواستم بگم من اول میام توی تگ استایل در قسمت هد، سلکتور a رو برای یک لینک استایل میدم. اما مثلا بعدش که میخوام از شبه کلاس استفاده کنم اون سلکتور هیچ کاری انجام نمیده.

    وقتی سلکتور a رو مینویسم رنگش سبز میشه. اما وقتی شبه کلاس لینک رو می نویسم کلا رنگش قرمز میشه. وقتی میام زیرش شبه کلاس ویزیتد رو مینویسم کلا رنگش میشه نارنجی. انگار نه انگار قبلیا وجود داشتن.

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      سلام احتمالا به این علته که شما فقط یک لینک قرار دادید و چون روی اون لینک کلیک کردید رنگ کلیک شده رو مشاهده میکنید. حداقل ۳ تگ a در html بذارید و فقط هربار روی یک لینک کلیک کنید تا نتیجه رو مشاهده کنید.

  • Sama
    Sama
    5 سال پیش

    tr:nth-child(3n){ background-color:gray}

  • علی
    علی
    5 سال پیش

    واقعا یکی از خلاصه ترین و مفید ترین آموزش ها بوده که مطالعه کردم..ممنون

  • احمدرضا
    احمدرضا
    5 سال پیش

    سلام جواب سوال چی هستش؟

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      جواب سوال رو شما باید بدید 🙂

  • میثم
    میثم
    5 سال پیش

    شبه کلاس مربوطه:
    ()nth-child
    است

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      بله درسته. نحوه‌ی انتخاب سطرهای زوج و سطرهای فرد چطوریه؟ اینم می‌گفتید 🙂

  • مهدی
    مهدی
    5 سال پیش

    سلام خسته نباشید من با استفاده از همین آموزش یک لینک را با استفاده از قابلیت hover به آن رنگ قرمز درست کردم و یک آیدی هم به لینک دادم و در آن آیدی به آن لینک رنگ سبز دادم اما فقط آیدی اعمال شد من برای ساخت یک لینکی که سبز است و وقتی موس روی آن می رود این کار را کردم اما متاسفانه به چیزی که می خواستم نرسیدم،لطفا منو در این باره راهنمایی کنید که چطور می تونم این کا رو بکنم…

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      سلام کار خیلی سختی نیستش. برای تغییر رنگ یک لینک با ایدی مثلا link1:


      #link1{
      color:green;
      }
      #link1:hover {
      color:red;
      }

  • علی یکتا
    علی یکتا
    5 سال پیش

    ممنون که سریع و خوب پاسخگو هستید

  • علی یکتا
    علی یکتا
    5 سال پیش

    و یک سوال دیگه که ایا ممکن شبه کلاس جایی بغیر از تگ هد قرار بدیم یعنی داخل خود کد در قسمت بادی و اینکه چطور

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      در استایل‌هایی که در فایل خارجی نوشته می‌شن هم امکان پذیره.

  • علی یکتا
    علی یکتا
    5 سال پیش

    سلام و خسته نباشید و ممنون از آموزش های خوبتون من تمام دروسرا دنبال و تمرین میکنم
    یک سوال وقتی شبه کلاس اکتیو روی لینک میزارم اعمال میشه بعد از لحظه کلیک . اما وقتی مثلا نمیخوام کلیک روی ان لینک بمونه لینک به حالت قبلیش بر نمیگرده ممنون میشم راهنمایی کنید
    ویک سوال مهم تر که این آموزش ها مبتدی میباشد آموزش های پیشرفته تری هم دارین جون من اینارو کامل تمرین کردم

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      سلام وقت بخیر
      خب وقتی کلیک میشه استایل مورد نظر روی لینک اعمال میشه دیگه. بعد از رفرش صفحه استایل از یین میره.
      میتونید از آموزش ویدیویی html css استفاده کنید که سطح مبتدی تا پیشرفته رو شامل شده

  • MR.
    MR.
    5 سال پیش

    با سلام شبه کلاس ()nth-child چگونه باید استفاده شود؟
    در مثالهایی که زدید تنها کدی که” : “قبل از خودش نداره همین ()nth-child است.
    ایا اشتباه نوشتاری شماست یا طرز استفاده این شبه کلاس مانند بقیه گذاشتن دو نقطه جلوی عنصر و نوشتن شبه کلاس نیست؟

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      دوست عزیز تمام شبه کدهای مذکور نیاز به : دارند.

  • حسین
    حسین
    5 سال پیش

    سلام بسیار عالی
    ولی نمونه کد قرار ندادید
    چطور باید شبه کلاس را به مثلا یه باکس div بشناسونم هر کاری میکنم تغیرات اعمال نمیشه
    زمانی که موس رو روی باک قرار میدم هیچ تغییری نمیکنه

    • مریم جعفرپور
      مریم جعفرپور
      5 سال پیش

      سلام دوست عزیز. این چند کدی که قرار داده شده دقیقا نمونه کد هستند دیگه! به بخش ‘شبه کلاس برای حرکت موس’ توجه کنید یه نمونه در این قسمت قرار گرفته.
      شما برای اجرا باید ابتدا کدهای html رو بنویسید و css همونطور که در جلسات ابتدایی گفته شد در تگ style در جای مناسب بذارید تا اجرا بشن.