সিএসএস সিলেক্টারে নির্দিষ্ট শ্রেণীর নাম কীভাবে বাদ দেওয়া যায়?


137

আমি পটভূমি-রঙ প্রয়োগ করতে যখন একজন ব্যবহারকারী মাউস হোভার উপাদান যার বর্গ নাম চেষ্টা করছি "reMode_hover"

কিন্তু আমি রং পরিবর্তন করতে না চান তাহলে উপাদান এছাড়াও রয়েছে"reMode_selected"

দ্রষ্টব্য: আমি কেবল জাভাস্ক্রিপ্ট নয় সিএসএস ব্যবহার করতে পারি কারণ আমি সীমিত পরিবেশের মধ্যে কাজ করছি।

স্পষ্ট করার জন্য, আমার লক্ষ্য হওভারের প্রথম উপাদানটিকে রঙ করা তবে দ্বিতীয় উপাদানটি নয়।

এইচটিএমএল

<a href="" title="Design" class="reMode_design  reMode_hover">
    <span>Design</span>
</a>

<a href="" title="Design" 
 class="reMode_design  reMode_hover reMode_selected">
    <span>Design</span>
</a>

প্রথম সংজ্ঞাটি কার্যকর হবে আশা করে আমি নীচে চেষ্টা করেছি তবে তা হয় না। আমি কি ভুল করছি?

সিএসএস

/* do not apply background-color so leave this empty */
.reMode_selected .reMode_hover:hover 
{
}

.reMode_hover:hover 
{
   background-color: #f0ac00;
}

উত্তর:


235

এক উপায় হ'ল একাধিক শ্রেণীর নির্বাচক (যে বংশধর নির্বাচক হিসাবে স্থান নেই):

.reMode_hover:not(.reMode_selected):hover 
{
   background-color: #f0ac00;
}
<a href="" title="Design" class="reMode_design  reMode_hover">
    <span>Design</span>
</a>

<a href="" title="Design" 
 class="reMode_design  reMode_hover reMode_selected">
    <span>Design</span>
</a>


3
এটি হওয়া উচিত নয়: .reMode_hover: না ('। reMode_selected'): হোভার আমার অভিজ্ঞতায় সেই উক্তিগুলি প্রয়োজনীয়।
মাকান তায়েবী

1
@ মকনতায়েবি আপনি নির্বাচককে চারপাশে উদ্ধৃতি সম্পর্কিত একটি চমৎকার বক্তব্য উত্থাপন করেছেন। টিএল; ডিআর: এগুলি ব্যবহার করা ভাল is স্ট্যাকওভারফ্লো . com/a/5578880/1772379পুরো ব্যাখ্যা ।
বেন জনসন

এটা কি এখন ও সেই ঘটনা? অন্যান্য ব্রাউজারগুলিতে এটি চেষ্টা করে দেখেনি, তবে ফায়ারফক্সের সর্বশেষ সংস্করণে যে আমি কাজ করছি, :notনির্বাচক কেবল তখনই কাজ করেছিলেন যখন আমি উদ্ধৃতিগুলি সরিয়েছি
অ্যালেক্স রুম্মেল

30

আধুনিক ব্রাউজারগুলিতে আপনি এটি করতে পারেন:

.reMode_hover:not(.reMode_selected):hover{}

সামঞ্জস্যতার তথ্যের জন্য http://caniuse.com/css-sel3 পরামর্শ নিন ।


12

পদ্ধতি 1

আপনার কোড সহ সমস্যা হল আপনি নির্বাচন করা হয় .remode_hoverএকটি হল যে বংশধর এর .remode_selected। সুতরাং আপনার কোডটি সঠিকভাবে কাজ করার প্রথম অংশটি সেই স্থানটি সরিয়ে দেওয়া

.reMode_selected.reMode_hover:hover

তারপরে, শৈলীটি কাজ না করার জন্য পেতে আপনাকে দ্বারা নির্ধারিত স্টাইলটি ওভাররাইড করতে হবে :hover। অন্য কথায়, আপনাকে background-colorসম্পত্তিটি পাল্টাতে হবে । সুতরাং চূড়ান্ত কোড হবে

.reMode_selected.reMode_hover:hover {
  background-color:inherit;
}
.reMode_hover:hover {
  background-color: #f0ac00;
}

বেহালা

পদ্ধতি 2

:not()অন্যদের দ্বারা বর্ণিত হিসাবে একটি বিকল্প পদ্ধতি ব্যবহার করা হবে । এটি বন্ধনীর অভ্যন্তরে বর্ণিত শ্রেণি বা সম্পত্তি না থাকা কোনও উপাদান ফেরত দেবে। এই ক্ষেত্রে, আপনি .remode_selectedসেখানে রাখা হবে। এটি এমন সমস্ত উপাদানকে লক্ষ্যবস্তু করবে যেগুলির কোনও শ্রেণি নেই.remode_selected

বেহালা

যাইহোক, আমি এই পদ্ধতির সুপারিশ করব না, কারণ এটি CSS3 এ চালু হয়েছিল, তাই ব্রাউজার সমর্থন আদর্শ নয়।

পদ্ধতি 3

তৃতীয় পদ্ধতিটি হ'ল jQuery ব্যবহার করা। আপনি .not()নির্বাচককে লক্ষ্য করতে পারেন , যা সিএসএসে ব্যবহারের অনুরূপ :not(), তবে আরও ভাল ব্রাউজার সমর্থন সহ support

বেহালা


4
আপনার "মেথড 3" অপসারণ করা উচিত যা jQuery এর উল্লেখ করে যেহেতু ওপি নির্দিষ্টভাবে সমাধানের জন্য "জাভাস্ক্রিপ্ট নয়" বলেছিল।
স্কটস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.