()not:

:not() یک pseudo-class نقیض می باشد که انتخابگری را به عنوان آرگومان می گیرد و نقیض آن انتخابگر را انتخاب می کند.

به وسیله این انتخابگر می توان در بین موارد انتخابی استثنا به وجود آورد. تکه کد زیر تمام آیتم های لیست را انتخاب می کند و به رنگ سبز در می آورد به جز آیتم هایی که کلاس bad دارند.


li:not(.bad) {
  color: green;
}

آرگومان های انتخابگر :not() به غیر از کلاس که در بالا نشان داده شد می توانند id, نام تگ, Pseudo-class ها (مثل first-child: و …) و همینطور انتخابگر ویژگی ها ( مثل [type="checkbox"] ) و همینطور انتخابگر سراسری (*) (انتخاب همه عناصر موجود در صفحه ) نیز باشند.

موارد زیر موارد صحیح استفاده از این انتخابگر هستند:


:not(a) {
  انتخاب تمام عناصر صفحه به غیر از عناصر لینک
}

p:not(:first-of-type) {
  انتخاب تمام عناصر پاراگراف به غیر از اولین پاراگراف
}

a:not([href = "http://mojtabaseyedi.com"]) {
  انتخاب تمام لینک های صفحه به غیر از لینکی که به آدرس سایت مجتبی سیدی می رود
}

input[type="text"]:not([disabled="disabled"]) {
  انتخاب تمام عناصر ورودی از نوع متنی به غیر از آن هایی که غیر فعال هستند
}

h1:not(#page-title) {
  انتخاب تمام عناصر عنوان اول در صفحه به غیر از آن یکی که شناسه نوشته شده را دارد
}

مواردی که نمی توان از این انتخابگر استفاده کرد زمانی است که به صورت تودرتو استفاده شود و یا آرگومانش انتخابگرهای pseudo-element ( مثل first-letter: , ::after: ) باشند.

در زیر چند نمونه از استفاده نادرست از این انتخابگر آورده شده است:


p:not(:not(.same)) {}

p:not(:not(:last-child)) {}

:not(::first-letter) {}

a:not(::after) {}

:not() همچنین می تواند به صورت زنجیره ای مورد استفاده قرار بگیرد. در مثال زیر در مرحله اول عناصر مقاله همه انتخاب می شوند به جز عنصری که دارای شناسه featured است, سپس عناصر باقی مانده اگر کلاس tutorial نداشته باشند انتخاب می شوند.


article:not(#featured):not(.tutorial) {
  
}

دموی زیر برای درک بهتر آماده شده است:

 

See the Pen :not() by Mojtaba Seyedi (@seyedi) on CodePen.


 

یکی از کاربردهای خوب این انتخابگر این است که به جای اینکه بنویسیم:


li {
  border-bottom: 1px solid red;
}

li:last-child {
  border-bottom: none;
}

 

می توانیم به این صورت عمل کنیم:

 


li:not(:last-child) {
  border-bottom: 1px solid red;
}

 

پشتیبانی مرورگرها

:not() در تمام مرورگرهای اصلی از قبیل کروم, فایرفاکس, سافاری, اپرا +9.5 , اینترنت اکسپلورر +9 و همینطور در سیستم عامل های اندروید و iOS نیز پشتیبانی می شود.

5 دیدگاه برای “()not:

  1. سلام عالیه خواهش میکنم تکنیک های بیشتری اموزش بدید یاد بدید که با css چجوری چیزهای باحال خلق کنیم یا فرم های مختلف فقط به معرفی ویژگی ها بسنده نکنید مرسی

  2. سلام.توی این مثال
    https://codepen.io/hoseyni/pen/XWWgBdE
    وقتی این :(ul > li:not(#vv مینویسم فقط li هایی که مستقیم فرزند ul اند پسشون زرد میشه
    و وقتی این : (ul > li :not(#vv رو مینویسم فقط li هایی که فرزند ol اند پسشون زردی میشه
    نمیفهمم چرا ؟مگه معنی تغییر میکنه ؟

  3. سلام
    ممنونم بابت مطالبت من یک سوالی دارم و خواهشاً نذار هی بیام ببینم و خبری از پاسخت نباشه
    من می‌خوام padding رو به همه اعمال کنم بجز روی یک تگ ولی هر کاری می‌کنم صفر می‌کنم و هرکاری نمیشه بجز صفر کردن تگ اصلی
    مثلاً
    من برای main امد و padding کلی گذاشتم و حالا می‌خوام روی هم اعمال شه بجز تگ img چیکار باید بکنم

سوال داری؟ برو به پنل پرسش و پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *