ক্লাস সহ প্রথম উপাদানটির জন্য সিএসএস নির্বাচক


944

আমার কাছে ক্লাসের নাম সহ একগুচ্ছ উপাদান রয়েছে red, তবে class="red"নিম্নলিখিত সিএসএস বিধিটি ব্যবহার করে আমি প্রথম উপাদানটি নির্বাচন করে দেখতে পাচ্ছি না :

.red:first-child {
    border: 5px solid red;
}
<p class="red"></p>
<div class="red"></div>

এই নির্বাচকটিতে কী ভুল এবং আমি কীভাবে এটি সংশোধন করব?

মন্তব্যে ধন্যবাদ, আমি বুঝতে পেরেছি যে উপাদানটি নির্বাচিত হওয়ার জন্য তার পিতামাতার প্রথম সন্তান হতে হবে যা আমার ক্ষেত্রে নেই। আমার নিম্নলিখিত কাঠামো রয়েছে এবং মন্তব্যে উল্লিখিত এই বিধিটি ব্যর্থ হয়েছে:

.home .red:first-child {
    border: 1px solid red;
}
<div class="home">
    <span>blah</span>
    <p class="red">first</p>
    <p class="red">second</p>
    <p class="red">third</p>
    <p class="red">fourth</p>
</div>

আমি ক্লাস সহ প্রথম বাচ্চাকে কীভাবে টার্গেট করতে পারি red?


আমার উদাহরণে (পি, ডিভি) বিভিন্ন ধরণের উপাদানগুলির কারণে যারা বিভ্রান্ত হয়ে পড়েছেন তাদের জন্য এটি একই রকম কাজ করে না এবং কাজটি এখনও বিদ্যমান।
রজত

4
আমি মনে করি এটিই প্রথম: বাচ্চাদের বাছাইকারী নির্বাচিত হওয়া উচিত ছিল ...
ফেলিক্স ইভ

28
: প্রথম সন্তানের খুব ভাল নাম হবে না তখন। আপনার যদি একটি পুত্র এবং তারপরে একটি কন্যা থাকে তবে আপনি আপনার কন্যাকে আপনার প্রথমজাত বলবেন না। একইভাবে, প্রথম। হোম> .রেড .হোমের প্রথম সন্তান নয়, সুতরাং এটিকে বলা অনুচিত হবে।
বোল্টক্লক

না, এটি কীভাবে: প্রথম ধরণের কাজ করা উচিত ছিল
ইভান থম্পসন

যে @EvanThompson কীভাবে তা :first-of-type করে হবে।
টাইলার 13

উত্তর:


1422

লেখকরা কীভাবে :first-childকাজ করে সে সম্পর্কে ভুল বোঝাবুঝির এটি অন্যতম সুপরিচিত উদাহরণ । CSS 2 চালু , :first-childসিউডো-বর্গ প্রতিনিধিত্ব করে তার পিতা বা মাতা খুব প্রথম সন্তান । এটাই. একটি প্রচলিত ভুল ধারণা রয়েছে যে এটি যে কোনও শিশু উপাদানটিকে যৌগিক নির্বাচকদের দ্বারা নির্ধারিত শর্তগুলির সাথে প্রথম মিলিয়েছে। নির্বাচকরা যেভাবে কাজ করেন তার কারণে ( ব্যাখ্যাটির জন্য এখানে দেখুন ), এটি কেবল সত্য নয়।

নির্বাচক স্তর 3 একটি :first-of-typeছদ্ম-শ্রেণির সাথে পরিচয় করিয়ে দেয় , যা তার উপাদান ধরণের ভাইবোনদের মধ্যে প্রথম উপাদানকে উপস্থাপন করে। এই উত্তরটি চিত্রের সাথে ব্যাখ্যা করে :first-childএবং এর মধ্যে পার্থক্য রয়েছে :first-of-type। যাইহোক, হিসাবে হিসাবে :first-child, এটি অন্য কোন শর্ত বা বৈশিষ্ট্য তাকান না। এইচটিএমএলে, উপাদানটির নাম ট্যাগ নাম দ্বারা প্রতিনিধিত্ব করা হয়। প্রশ্নে, টাইপটি হ'ল p

দুর্ভাগ্যক্রমে, :first-of-classপ্রদত্ত শ্রেণীর প্রথম শিশু উপাদানটির সাথে মিলের জন্য অনুরূপ সিউডো-শ্রেণি নেই। এক কার্যসংক্রান্ত যে আপনাদের Verou এবং আমি নিয়ে এসেছেন এই জন্য (সম্পূর্ণই স্বাধীনভাবে যদিও) প্রথম আপনার পছন্দসই শৈলী প্রয়োগ হয় সব যে বর্গ সঙ্গে আপনার উপাদানের:

/* 
 * Select all .red children of .home, including the first one,
 * and give them a border.
 */
.home > .red {
    border: 1px solid red;
}

... তারপরে প্রথম শ্রেণীর পরে আসা শ্রেণীর সাথে উপাদানগুলির শৈলীর "পূর্বাবস্থাপন" করুন , ওভাররাইডিং নিয়মে সাধারণ ভাইবিলিং সংযুক্তকারী~ ব্যবহার করে :

/* 
 * Select all but the first .red child of .home,
 * and remove the border from the previous rule.
 */
.home > .red ~ .red {
    border: none;
}

এখন কেবল প্রথম উপাদানটির সাথে class="red"একটি সীমানা থাকবে।

বিধিগুলি কীভাবে প্রয়োগ করা হয় তার একটি চিত্র এখানে দেওয়া হয়েছে:

<div class="home">
  <span>blah</span>         <!-- [1] -->
  <p class="red">first</p>  <!-- [2] -->
  <p class="red">second</p> <!-- [3] -->
  <p class="red">third</p>  <!-- [3] -->
  <p class="red">fourth</p> <!-- [3] -->
</div>
  1. কোনও বিধি প্রয়োগ করা হয় না; কোনও সীমানা রেন্ডার করা হয় না।
    এই উপাদানটির ক্লাস নেই red, সুতরাং এটি এড়িয়ে গেছে।

  2. শুধুমাত্র প্রথম বিধি প্রয়োগ করা হয়; একটি লাল সীমানা রেন্ডার করা হয়।
    এই উপাদানটির redক্লাস redরয়েছে তবে এর পিতামাতার ক্লাসের সাথে কোনও উপাদান পূর্ববর্তী নয় । সুতরাং দ্বিতীয় বিধি প্রয়োগ করা হয় না, শুধুমাত্র প্রথমটি এবং উপাদানটি তার সীমানা বজায় রাখে।

  3. উভয় বিধি প্রয়োগ করা হয়; কোনও সীমানা রেন্ডার করা হয় না।
    এই উপাদানটির শ্রেণি রয়েছে red। এটি ক্লাসের সাথে কমপক্ষে অন্য একটি উপাদান দ্বারাও আগে রয়েছে red। সুতরাং উভয় বিধি প্রয়োগ করা হয়, এবং দ্বিতীয় borderবিবরণী প্রথমটিকে ওভাররাইড করে, যার ফলে এটি "পূর্বাবস্থায় ফেলা" থাকে, সুতরাং কথা বলা।

বোনাস হিসাবে, যদিও এটি নির্বাচক 3-এ প্রবর্তিত হয়েছিল, সাধারণ ভাইবিলিং কম্বিনেটর আসলে আই 7 and এবং আরও নতুন দ্বারা সমর্থিত, এর বিপরীতে :first-of-typeএবং :nth-of-type()যা কেবল আইই 9 দ্বারা সমর্থিত। আপনার যদি ভাল ব্রাউজার সমর্থন প্রয়োজন হয়, আপনি ভাগ্যবান।

প্রকৃতপক্ষে, এই কৌশলটি যে ভাইবোন সংযুক্তকারীটিই একমাত্র গুরুত্বপূর্ণ উপাদান, এবং এটির মধ্যে এমন আশ্চর্যজনক ব্রাউজার সমর্থন রয়েছে, এই কৌশলটি খুব বহুমুখী করে তোলে - আপনি শ্রেণি নির্বাচকদের পাশাপাশি অন্যান্য জিনিসগুলির দ্বারা উপাদানগুলিকে ফিল্টারিংয়ের জন্য এটি খাপ খাইয়ে নিতে পারেন:

  • আপনি এটি :first-of-typeক্লাস সিলেক্টরের পরিবর্তে কোনও টাইপ সিলেক্টর সরবরাহ করে (আবার, এখানে পরবর্তী বিভাগে এর ভুল ব্যবহারের বিষয়ে আরও বেশি) সরবরাহ করে আইই 7 এবং আই 8 তে কাজ করতে এটি ব্যবহার করতে পারেন :

    article > p {
        /* Apply styles to article > p:first-of-type, which may or may not be :first-child */
    }
    
    article > p ~ p {
        /* Undo the above styles for every subsequent article > p */
    }
    
  • আপনি ক্লাসের পরিবর্তে বৈশিষ্ট্য নির্বাচনকারী বা অন্য কোনও সাধারণ নির্বাচক দ্বারা ফিল্টার করতে পারেন ।

  • আপনি ছদ্ম-উপাদানগুলির সাথে ছদ্ম-উপাদানগুলির সাথে এই ওভাররাইডিং কৌশলটিও একত্রিত করতে পারেন যদিও ছদ্ম উপাদানগুলি প্রযুক্তিগতভাবে সহজ নির্বাচক নয়।

নোট করুন যে এটি কাজ করার জন্য আপনাকে আগে থেকেই জানতে হবে আপনার অন্যান্য ভাইবোন উপাদানগুলির জন্য ডিফল্ট শৈলীগুলি কী হবে তাই আপনি প্রথম নিয়মটিকে ওভাররাইড করতে পারেন। অতিরিক্তভাবে, যেহেতু এটিতে সিএসএসে ওভাররাইডিং বিধিগুলি জড়িত, আপনি সিলেক্টর এপিআই বা সেলেনিয়ামের সিএসএস লোকেটারগুলির সাথে ব্যবহারের জন্য কোনও একক নির্বাচকের সাথে একই জিনিসটি অর্জন করতে পারবেন না ।

এটি উল্লেখযোগ্য যে সিলেক্টর 4 স্বরলিপিটির (একটি মূলত একটি সম্পূর্ণ নতুন সিউডো-ক্লাস নামে পরিচিত ) একটি:nth-child() বর্ধনের সাথে পরিচয় করিয়ে :nth-match()দেয়, যা আপনাকে :nth-child(1 of .red)অনুমানের পরিবর্তে কিছু ব্যবহার করতে দেয় .red:first-of-class। তুলনামূলকভাবে সাম্প্রতিক প্রস্তাব হওয়ায় এটি উত্পাদন সাইটগুলিতে এখনও ব্যবহারযোগ্য হওয়ার জন্য পর্যাপ্ত আন্তঃযোগাযোগ্য বাস্তবায়ন নেই। আশা করি শিগগিরই এটি বদলে যাবে। এরই মধ্যে, আমি প্রস্তাবিত কর্মক্ষেত্রটি বেশিরভাগ ক্ষেত্রেই কাজ করা উচিত।

মনে রাখবেন যে এই উত্তরটি ধরে নিয়েছে যে প্রশ্নটি প্রতিটি প্রথম শিশু উপাদানকে সন্ধান করছে যা একটি নির্দিষ্ট বর্গ রয়েছে। পুরো ডকুমেন্ট জুড়ে একটি জটিল সিলেক্টরের নবম ম্যাচের জন্য ছদ্ম-শ্রেণি বা এমনকি জেনেরিক সিএসএস সমাধান নেই - কোনও সমাধান বিদ্যমান কিনা তা নথির কাঠামোর উপর নির্ভর করে। jQuery এর প্রদান করে :eq(), :first, :lastএবং এই কাজের জন্য আরো, কিন্তু নোট আবার যে তারা থেকে খুব ভিন্নভাবে কাজ :nth-child()এট । নির্বাচক এপিআই ব্যবহার করে আপনি হয় document.querySelector()প্রথম ম্যাচটি পেতে ব্যবহার করতে পারেন :

var first = document.querySelector('.home > .red');

বা document.querySelectorAll()কোনও নির্দিষ্ট ম্যাচ বাছাই করতে একটি সূচক দিয়ে ব্যবহার করুন :

var redElements = document.querySelectorAll('.home > .red');
var first = redElements[0];
var second = redElements[1];
// etc

যদিও ফিলিপ ডাবমিয়ারের.red:nth-of-type(1) মূল গৃহীত উত্তরের সমাধানটি কাজ করে (যা মূলত মার্টিন লিখেছিলেন কিন্তু সেই থেকে মুছে ফেলা হয়েছে), এটি আপনি যেভাবে প্রত্যাশা করেছিলেন তা আচরণ করে না।

উদাহরণস্বরূপ, আপনি যদি কেবলমাত্র pনিজের মূল মার্কআপটিতে এটি নির্বাচন করতে চান :

<p class="red"></p>
<div class="red"></div>

... তবে আপনি .red:first-of-type(সমতুল্য .red:nth-of-type(1)) ব্যবহার করতে পারবেন না , কারণ প্রতিটি উপাদানই এর প্রথম ধরণের ( pএবং divযথাক্রমে) এক, তাই উভয়ই নির্বাচক দ্বারা মিলে যাবে।

যখন কোনও নির্দিষ্ট শ্রেণির প্রথম উপাদানটিও এর ধরণের প্রথম হয় , ছদ্ম-শ্রেণি কাজ করবে তবে এটি কেবল কাকতালীয়ভাবে ঘটে । এই আচরণ ফিলিপের উত্তরে প্রদর্শিত হয়। এই উপাদানটির আগে আপনি একই ধরণের কোনও উপাদানে আটকে যাওয়ার মুহুর্তে নির্বাচক ব্যর্থ হয়ে যাবে। আপডেট করা মার্কআপ নেওয়া:

<div class="home">
  <span>blah</span>
  <p class="red">first</p>
  <p class="red">second</p>
  <p class="red">third</p>
  <p class="red">fourth</p>
</div>

এর সাথে একটি নিয়ম প্রয়োগ করা কার্যকর .red:first-of-typeহবে, তবে আপনি একবার pক্লাস ছাড়াই অন্য যুক্ত করলেন :

<div class="home">
  <span>blah</span>
  <p>dummy</p>
  <p class="red">first</p>
  <p class="red">second</p>
  <p class="red">third</p>
  <p class="red">fourth</p>
</div>

... নির্বাচক অবিলম্বে ব্যর্থ হবে, কারণ প্রথম .redউপাদানটি এখন দ্বিতীয় p উপাদান।


15
তো, অনুকরণ করার কোনও উপায় আছে :last-of-classকি? একটি শ্রেণীর শেষ উপাদানটি নির্বাচন করুন।
রকেট হাজমত

1
@ রকেট: এটি আমি দেখতে পাচ্ছি না :(
বোল্টক্লক

4
ভাইবোনের সাথে দুর্দান্ত কৌশল। একাধিক ভাইবাল সংযুক্তকারীগুলির সাথে এটির কাজটিও লক্ষণীয়
লেগোলাস

2
@ বল্টক্লক হ্যাঁ, দুঃখিত, আমি একটি সমাধানের জন্য এখানে এসেছি এবং আমি ওপি নির্দিষ্ট ক্ষেত্রে খুব একটা পাত্তা দিই নি। আমি আসলে বুঝতে পারি না কেন একটি নির্দিষ্ট ধরণের জন্য কেন general sibling selector ~কাজ করে :not(:first-of-*), আমি ধরে নিই যে এটি প্রতিটি মিলে যাওয়া উপাদানগুলিতে নিয়মটি প্রয়োগ করা উচিত, তবে 3 বা ততোধিক সম্ভাব্য ম্যাচ থাকলেও এটি শুধুমাত্র প্রথম ম্যাচের জন্য প্রয়োগ করা হয়।
জেরার্ড পুনরায় রান্না করুন

2
ক্যানিউজ অনুসারে :nth-child(1 of .foo)ইতিমধ্যে সাফারি 9.1+ এ এক্সটেনশনটি কার্যকর করা হয়েছে। (যদিও আমি চেক করি নি)
ড্যানিয়েল্ড

329

:first-childনির্বাচক দেয়ার উদ্দেশ্যে করা হচ্ছে, নাম বলেছেন মত, একটি পিতা বা মাতা ট্যাগের প্রথম সন্তান নির্বাচন করতে। বাচ্চাদের একই প্যারেন্ট ট্যাগে এম্বেড করতে হবে। আপনার সঠিক উদাহরণটি কাজ করবে (কেবল এখানে এটি চেষ্টা করেছেন ):

<body>
    <p class="red">first</p>
    <div class="red">second</div>
</body>

আপনি কি বিভিন্ন প্যারেন্ট ট্যাগগুলিতে আপনার ট্যাগগুলি বাসা বেঁধে রেখেছেন? আপনার ক্লাসের ট্যাগগুলি redকি পিতামাতার অধীনে প্রথম ট্যাগস?

এটিও লক্ষ করুন যে এটি পুরো ডকুমেন্টে কেবলমাত্র এই জাতীয় ট্যাগটিতেই প্রযোজ্য নয়, তবে প্রতিবারই নতুন পিতামাতার চারপাশে এটি আবৃত থাকে, যেমন:

<div>
    <p class="red">first</p>
    <div class="red">second</div>
</div>
<div>
    <p class="red">third</p>
    <div class="red">fourth</div>
</div>

firstএবং thirdতারপর লাল হবে।

হালনাগাদ:

আমি জানি না কেন শহীদ তার উত্তর মুছে ফেলেছিল, তবে তার সমাধান ছিল, :nth-of-typeনির্বাচক:

.red:nth-of-type(1)
{
    border:5px solid red;
} 
<div class="home">
    <span>blah</span>
    <p class="red">first</p>
    <p class="red">second</p>
    <p class="red">third</p>
    <p class="red">fourth</p>
</div>

মার্টিনের কাছে ক্রেডিট । উদাহরণস্বরূপ আরো infos এখানে । সচেতন থাকুন যে এটি সিএসএস 3 নির্বাচক, সুতরাং সমস্ত ব্রাউজারগুলি এটি স্বীকৃতি দেবে না (যেমন আই 8 বা ততোধিক বয়সী)।


এটি আমার ত্রুটি হতে পারে - যেমন আমি মার্টিনকে বলেছিলাম যে সিএসএস 3 নির্বাচক যেমন :nth-of-typeআইই এর বর্তমান সংস্করণে কিছু না কাজ করার সামান্য সমস্যায় ভুগছেন।
মার Örlygsson

25
আমি এটি পড়ে কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম। .red:nth-of-type(1)(ক) এর উপাদান ধরণের প্রথম সন্তান এবং (খ) "লাল" শ্রেণিযুক্ত যে কোনও উপাদান কঠোরভাবে নির্বাচন করবে। সুতরাং, উদাহরণস্বরূপ, প্রথম <p> এর "রেড" শ্রেণি না থাকলে এটি নির্বাচিত হবে না। বিকল্পভাবে যদি <span> এবং প্রথম <p> উভয়েরই "লাল" শ্রেণি থাকে, তবে তারা উভয়ই নির্বাচিত হতে পারে। jsfiddle.net/fvAxn
ডেভিড

7
@ ডান মুন্ডি: :first-of-typeসমান :nth-of-type(1), অবশ্যই এটি কাজ করে। এটি আমার উত্তরে বর্ণিত একই কারণে একইভাবে ব্যর্থও হতে পারে।
বোলটলক

4
@ ডেভিড আমি নিশ্চিত :nth-of-typeযে "টাইপ" বলার পরে "এলিমেন্ট / ট্যাগ" এর অর্থ হয়। সুতরাং এটি কেবল উপাদানটিকে বিবেচনা করে, শ্রেণির মতো জিনিসগুলি নয়।
gcampbell

2
@ জি ক্যাম্পবেল: হ্যাঁ, এর অর্থ হ'ল এটি এবং এর কারণেই এই উত্তরটি ত্রুটিযুক্ত। "টাইপ" শব্দটি বেছে নেওয়ার কারণটি এইচটিএমএল / এক্সএমএল সহ দম্পতি নির্বাচকদের নয়, যেহেতু সমস্ত ভাষায় উপাদানগুলিকে সংজ্ঞায়িত করে এমন "ট্যাগ" ধারণা নেই।
BoltClock

74

সঠিক উত্তরটি হ'ল:

.red:first-child, :not(.red) + .red { border:5px solid red }

প্রথম খণ্ড: যদি উপাদানটি তার পিতামাতার কাছে প্রথম হয় এবং "লাল" শ্রেণি থাকে তবে এটি সীমানা পাবে।
দ্বিতীয় খণ্ড: যদি ".red" উপাদানটি তার পিতামাতার কাছে প্রথমে না হয় তবে অবিলম্বে ".red" শ্রেণিবিহীন কোনও উপাদান অনুসরণ করে, এটিও বলা সীমান্তের সম্মানের অধিকারী হবে।

ফিডল নাকি তা হয়নি।

ফিলিপ ডাবমিয়ারের উত্তর, গৃহীত হওয়ার পরেও সঠিক নয় - সংযুক্ত ফিডাল দেখুন।
বোল্টক্লকের উত্তরটি কার্যকর হবে তবে অযথা শৈলীর সংজ্ঞা দেয় ও ওভাররাইট করে
(বিশেষত একটি বিষয় যেখানে এটি অন্যথায় আলাদা সীমানার অধিকারী হয় - আপনি অন্যটিকে সীমান্তে ঘোষণা করতে চান না: কিছুই নয়)

সম্পাদনা: আপনি যখন "লাল" নন-রেডকে বেশ কয়েকবার অনুসরণ করছেন সে ক্ষেত্রে প্রতিটি "প্রথম" লাল সীমানাটি পাবে। এটি রোধ করতে, বোল্টক্লকের উত্তরটি ব্যবহার করা দরকার। ঝাঁকুনি দেখুন


2
এই উত্তরটি ভুল নয়, নির্বাচক হয় দেওয়া মার্কআপ জন্য সঠিক, কিন্তু আমি ও বলছি উচিত যে অবস্থা সম্পাদন করা উল্লেখ কারণে আমি বলে যে একটি ওভাররাইড প্রয়োজনীয় অন্তত যখন আপনি মার্কআপ গঠন নিশ্চয়তা দিতে পারে না - কেবল একটি কারণ .redএকটি অনুসরণ :not(.red)করে এটি সর্বদা .redতার ভাইবোনদের মধ্যে প্রথম হয় না । এবং যদি সীমান্তটি উত্তরাধিকার সূত্রে প্রাপ্ত হওয়ার দরকার হয়, তবে এটি ওভাররাইড নিয়মের border: inheritপরিবর্তে ঘোষণার বিষয় border: none
BoltClock

3
এই সমাধানটি সেরা আইএমও কারণ আপনি সহজেই শেষ সন্তানের জন্য একই কাজ করতে পারেন।
আরপুন

@ এ 1 আরপুন আপনি শেষ সন্তানের জন্য কীভাবে এটি পরিবর্তন করবেন?
উইলেম

@ উইলেম কেবল এতে পরিবর্তন first-childকরুন last-child, তবে আমি পরীক্ষার পরে দেখছি যে এটি সর্বদা চালাকি করে না।
আরপুন

3
আমি দুঃখিত, তবে এটি "প্রথম শিশু উপাদান যার সাথে শ্রেণি .red" আছে তার সাথে এটি মেলে না, পরিবর্তে এটি "প্রথম উপাদানটির সাথে মেলে যদিও এর শ্রেণি রয়েছে। রেড এবং প্রথম। অ অরেড উপাদান পরে রেড উপাদান রয়েছে"। এই দুটি সমতুল্য নয়। ফিডল: jsfiddle.net/Vq8PB/166
গুঞ্চারস 4'15

19

আপনি ব্যবহার করতে পারেন first-of-typeবাnth-of-type(1)

.red {
  color: green;  
}

/* .red:nth-of-type(1) */
.red:first-of-type {
  color: red;  
}
<div class="home">
  <span>blah</span>
  <p class="red">first</p>
  <p class="red">second</p>
  <p class="red">third</p>
  <p class="red">fourth</p>
</div>


6
শ্রেণীর সাথে আপনার এবং প্রথম উপাদানটির <p></p>মধ্যে একটি থাকলে এটি কাজ করবে না । এই জেএসফিডেল দেখুনspanpred
ফ্রান্সিসকো রোমেরো

1
আমি এখন দেখেছি যে এটি তার উত্তরটির শেষ উদাহরণে পুনরায় উত্পাদিত একই আচরণের প্রতি আমি এখানে নির্দেশ করেছি। আমি যখন আপনার উদাহরণটি চেষ্টা করেছি এবং কিছুটা "খেলি", তখন আমি সেই আচরণটি লক্ষ্য করি এবং আমি ইঙ্গিত করতে চেয়েছিলাম যাতে ভবিষ্যতের পাঠকরা সচেতন হন।
ফ্রান্সিসকো রোমেরো

13

উপরের উত্তরগুলি খুব জটিল।

.class:first-of-type { }

এটি প্রথম ধরণের শ্রেণি নির্বাচন করবে। এমডিএন উত্স


4
আমি প্রথম-ধরণের কোনও রেফারেন্স খুঁজে পাই না, এবং প্রথম টাইপের কেবল ট্যাগ নামের ক্ষেত্রে প্রযোজ্য; আপনি কি নিশ্চিত যে এই উত্তরটি সঠিক?
ম্যাট ব্রোচ


7
এটি ক্লাস নিয়ে কাজ করে না। এইভাবে এটি কাজ করা উচিত , কারণ একটি শ্রেণীর নবম নির্বাচন করা ট্যাগের নবম নির্বাচনের চেয়ে বেশি কার্যকর হবে be তবে ': টাইপড ফার্স্ট' কেবল ট্যাগনামেই কাজ করেছে। যদি এটি ঠিক তখন ঘটে থাকে যে 'ফার্স্ট-ক্লাস' এবং 'ফার্স্ট-অফ-ট্যাগ' একই উপাদানটিকে বোঝায় যা তারা প্রায়শই করেন তবে নিজেকে বিভ্রান্ত করা সহজেই এইভাবে চিন্তা করে যে এটি কাজ করে; এবং তারপরে ভাবছেন যে আপনি যখন এমন কোনও মামলায় আসেন যা ভেঙে যায়।
ইভান থম্পসন

2
নিশ্চিত না কেন এটি নির্বাচিত উত্তর নয়। এটি ওপি যা যা চেয়েছিল ঠিক তা করে এবং পুরোপুরি কাজ করে। SMH।
বার্নেস্তো

1
@ বার্নেস্টো, আপনার যখন একই "টাইপ" এর একাধিক উপাদান রয়েছে এমন কোনও মামলা রয়েছে, তখন বলতে দিন <span>এবং কয়েকটির ক্লাস রয়েছে highlight.highlight:first-of-typeনির্বাচক প্রথম নির্বাচিত শ্রেণী সঙ্গে "প্রকার", এই উদাহরণে প্রথম উদাহরণস্বরূপ নির্বাচন করব <span>, এবং ক্লাসের প্রথমত highlight। স্প্যানের প্রথম উদাহরণটিতে শ্রেণীর হাইলাইট থাকলে কেবল স্টাইলটি বাস্তবায়িত হবে। ( কোডেপেন.আইও
এ্যান্ড্রুআলমিলার

9

আপনার নির্বাচককে মেলানোর জন্য, উপাদানটির অবশ্যই একটি শ্রেণীর নাম redথাকতে হবে এবং অবশ্যই এর পিতামাতার প্রথম সন্তান হতে হবে।

<div>
    <span class="red"> <!-- MATCH -->
</div>

<div>
    <span>Blah</span>
    <p class="red"> <!-- NO MATCH -->
</div>

<div>
    <span>Blah</span>
    <div><p class="red"></div> <!-- MATCH -->
</div>

এটি সঠিক এবং এটি আমার সমস্যা বলে মনে হচ্ছে তবে অন্য উপাদানগুলির দ্বারা পূর্ববর্তী কিনা তা নির্বিশেষে শ্রেণীর সাথে প্রথম উপাদান নির্বাচন করার কোনও উপায় আছে কি?
রজত

আপনি যদি মার্টিনসের জবাবের দিকে নজর রেখেছিলেন তবে আপনার এটি জিজ্ঞেস করার দরকার নেই :)
ফিলিপ ডাবমিয়ার

9

যেহেতু অন্যান্য উত্তরগুলি এতে কী সমস্যা রয়েছে তা কভার করে, আমি এটি অর্ধেক চেষ্টা করব, কীভাবে এটি ঠিক করব। দুর্ভাগ্যক্রমে, আমি জানি না যে আপনার এখানে সিএসএসের একমাত্র সমাধান রয়েছে, কমপক্ষে আমি ভাবতে পারি না । যদিও আরও কিছু অপশন রয়েছে ...

  1. firstআপনি যখন উপাদানটি তৈরি করেন তখন একটি শ্রেণিকে বরাদ্দ করুন :

    <p class="red first"></p>
    <div class="red"></div>

    সিএসএস:

    .first.red {
      border:5px solid red;
    }

    এই সিএসএস কেবলমাত্র এবং উভয় শ্রেণীর সাথেই উপাদানগুলির সাথে মেলে । firstred

  2. বিকল্পভাবে, জাভাস্ক্রিপ্টে একই করুন, উদাহরণস্বরূপ, উপরের মতো একই সিএসএস ব্যবহার করে আপনি কী jQuery এটি করতে ব্যবহার করবেন তা এখানে:

    $(".red:first").addClass("first");

আমি কিছুক্ষণ আগে একটি সিএসএস-কেবল সমাধান নিয়ে এসেছি ; আমি এটি একটি প্রচলিত উত্তর হিসাবে এখানে পুনরুত্পাদন।
BoltClock

1
যতক্ষণ না কিছুই আছে ততক্ষণ :first-of-classআমি প্রথম উপাদানটিতে একটি অতিরিক্ত শ্রেণি যুক্ত করার পরামর্শ দেব। আপাতত সবচেয়ে সহজ সমাধান বলে মনে হচ্ছে।
কাই নোক

7

আমি আমার প্রকল্পে এটি পেয়েছি।

div > .b ~ .b:not(:first-child) {
	background: none;
}
div > .b {
    background: red;
}
<div>
      <p class="a">The first paragraph.</p>
      <p class="a">The second paragraph.</p>
      <p class="b">The third paragraph.</p>
      <p class="b">The fourth paragraph.</p>
  </div>


5

আপনার আপডেট সমস্যা অনুযায়ী

<div class="home">
  <span>blah</span>
  <p class="red">first</p>
  <p class="red">second</p>
  <p class="red">third</p>
  <p class="red">fourth</p>
</div>

কেমন

.home span + .red{
      border:1px solid red;
    }

এটি শ্রেণীর হোম নির্বাচন করবে , তারপরে উপাদান স্প্যান এবং অবশেষে সমস্ত .red উপাদান যা স্প্যান উপাদানগুলির সাথে সাথে স্থাপন করা হবে।

তথ্যসূত্র: http://www.w3schools.com/cssref/css_selectors.asp


3

আপনি টাইপ (1) টাইপ ব্যবহার করতে পারেন তবে নিশ্চিত হয়ে নিন যে সাইটটি আই 7 ইত্যাদি সমর্থন করার দরকার নেই, যদি এটি ক্ষেত্রে বডি ক্লাস যুক্ত করতে jQuery ব্যবহার করে তবে আই 7 শরীরের বর্গের মাধ্যমে উপাদানটি খুঁজে বের করুন তারপর উপাদানটির নাম দিন, তারপরে যুক্ত করুন এটি নবম-সন্তানের স্টাইলিংয়ে।


3

আপনি নিজের কোডটি এটিকে কাজ করতে এই জাতীয় কিছুতে পরিবর্তন করতে পারেন

<div class="home">
  <span>blah</span>
  <p class="red">first</p>
  <p class="red">second</p>
  <p class="red">third</p>
  <p class="red">fourth</p>
</div>

এটি আপনার জন্য কাজ করে

.home span + .red{
      border:3px solid green;
    }

সে সম্পর্কে স্নুপকোডের একটি সিএসএস রেফারেন্স এখানে ।


3

আমি উল্লিখিত তালিকাটির জন্য একটি পটভূমি চিত্র পেতে সিএসএস নীচে ব্যবহার করছি

#footer .module:nth-of-type(1)>.menu>li:nth-of-type(1){
  background-position: center;
  background-image: url(http://monagentvoyagessuperprix.j3.voyagesendirect.com/images/stories/images_monagentvoyagessuperprix/layout/icon-home.png);
  background-repeat: no-repeat;
}
<footer id="footer">
  <div class="module">
    <ul class="menu ">
      <li class="level1 item308 active current"></li>
      <li> </li>
    </ul> 
  </div>
  <div class="module">
    <ul class="menu "><li></li>
      <li></li> 
    </ul>
  </div>
  <div class="module">
    <ul class="menu ">
      <li></li>
      <li></li>
    </ul>
  </div>
</footer>



2

কোনও কারণে উপরের উত্তরগুলির মধ্যে কোনওটিই পিতামাতার আসল প্রথম এবং একমাত্র প্রথম সন্তানের ক্ষেত্রে সম্বোধন করছে বলে মনে হয় না ।

#element_id > .class_name:first-child

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

<aside id="element_id">
  Content
  <div class="class_name">First content that need to be styled</div>
  <div class="class_name">
    Second content that don't need to be styled
    <div>
      <div>
        <div class="class_name">deep content - no style</div>
        <div class="class_name">deep content - no style</div>
        <div>
          <div class="class_name">deep content - no style</div>
        </div>
      </div>
    </div>
  </div>
</aside>

1
আপনার উত্তরটি ইতিমধ্যে এই প্রশ্নের শীর্ষ দুটি সর্বোচ্চ উত্তরের মধ্যে ইতিমধ্যে অন্তর্ভুক্ত রয়েছে এবং এতে কিছুই যুক্ত হয় না। এছাড়াও, আপনার :first-childসিউডো-শ্রেণীর ব্যবহার বিভ্রান্তিকর কারণ এটি যুক্ত করার .class_nameআগে এটির কাজ করার পদ্ধতি পরিবর্তন না করে এবং এটি কেবল ফিল্টার হিসাবে কাজ করে। যদি আপনার আগে ডিভ থাকে <div class="class_name">First content that need to be styled</div>তবে আপনার নির্বাচকটি মিলবে না কারণ এটি আসল প্রথম সন্তানের নয়।
j08691

আমি মনে করি না যে তথ্য প্রয়োজন এমন ব্যক্তির পক্ষে এটি সরাসরি straight এবং হ্যাঁ আপনি ক্ষেত্রে ঠিক বলেছেন। এটি আরও নির্দিষ্ট ক্ষেত্রে কাজ করে। এই কারণেই আমি ভেবেছিলাম এটি কার্যকর হতে পারে।
ইওভোর ইভানভ

এটি আমার প্রয়োজন ঠিক, সংক্ষিপ্ত এবং সংক্ষিপ্ত। আপনাকে @ ইয়ওয়ারিভানভ
কোয়ান্টেম

1

এই সহজ এবং কার্যকর চেষ্টা করুন

 .home > span + .red{
      border:1px solid red;
    }

-1

আমি বিশ্বাস করি যে +অবিলম্বে স্থাপন করা উপাদানগুলি নির্বাচনের জন্য আপেক্ষিক নির্বাচক ব্যবহার করা এখানে সর্বোত্তম কাজ করে (কিছু আগে যেমন প্রস্তাবিত হয়েছিল) works

এই ক্ষেত্রে এই নির্বাচককে ব্যবহার করাও সম্ভব

.home p:first-of-type

তবে এটি এলিমেন্ট সিলেক্টর নন ক্লাস এক।

এখানে আপনার সিএসএস নির্বাচকদের সুন্দর তালিকা রয়েছে: https://kolosek.com/css-selectors/


-2

এই সমাধান চেষ্টা করুন:

 .home p:first-of-type {
  border:5px solid red;
  width:100%;
  display:block;
}
<div class="home">
  <span>blah</span>
  <p class="red">first</p>
  <p class="red">second</p>
  <p class="red">third</p>
  <p class="red">fourth</p>
</div>

কোডপেন লিংক


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