সিএসএস প্যারেন্ট সিলেক্টর আছে কি?


3174

<li>অ্যাঙ্কর এলিমেন্টের প্রত্যক্ষ পিতামাতার উপাদানটি কীভাবে নির্বাচন করব ?

উদাহরণ হিসাবে, আমার সিএসএস এর কিছু হবে:

li < a.active {
    property: value;
}

স্পষ্টতই জাভাস্ক্রিপ্ট দিয়ে এটি করার বিভিন্ন উপায় রয়েছে তবে আমি আশা করছি যে সিএসএস স্তর 2 এর স্থানীয়ভাবে উপস্থিত এমন কিছু কাজ রয়েছে।

আমি যে মেনুটিকে স্টাইল করার চেষ্টা করছি তা একটি সিএমএস দ্বারা তৈরি করা হচ্ছে, তাই আমি সক্রিয় উপাদানটিকে উপাদানটিতে স্থানান্তর করতে পারি না <li>... (আমি না চাইলে মেনু তৈরির মডিউলটি থিম না করি)।

কোন ধারনা?

উত্তর:


2529

সিএসএসে কোনও উপাদানটির পিতামাতাকে বেছে নেওয়ার কোনও উপায় নেই।

যদি এটি করার কোনও উপায় ছিল, এটি বর্তমান সিএসএস নির্বাচকগুলির মধ্যে দুটিতে হবে:

এটি বলেছিল, নির্বাচক স্তর 4 ওয়ার্কিং ড্রাফ্টে একটি :has()ছদ্ম-শ্রেণীর অন্তর্ভুক্ত যা এই ক্ষমতাটি সরবরাহ করবে। এটি jQuery বাস্তবায়নের অনুরূপ হবে ।

li:has(> a.active) { /* styles to apply to the li tag */ }

তবে, ২০২০ সালের মে পর্যন্ত এটি কোনও ব্রাউজার দ্বারা সমর্থিত নয়

এর মধ্যে, আপনার যদি কোনও পিতামন্ডল উপাদান নির্বাচন করার প্রয়োজন হয় তবে আপনাকে জাভাস্ক্রিপ্টের অবলম্বন করতে হবে।


68
মনে হবে এটি ইতিমধ্যে বলা হয়েছে এবং বাতিল: stackoverflow.com/questions/45004/...
RobM

14
দেখে মনে হচ্ছে বিষয় নির্বাচনকারীকে! এখনই ব্যবহার ব্যতীত পুনর্বিবেচনা করা হয়েছে :The subject of the selector can be explicitly identified by appending an exclamation mark (!) to one of the compound selectors in a selector.
এনিমুসন

13
চাপ দেওয়া $আমার জন্য আরও ভাল লাগছিল ... যুক্ত !হওয়া আরও সহজে উপেক্ষা করা যেতে পারে।
ক্রিস্টোফ

51
বড় প্লট মোচড়! সিএসএস বাস্তবায়নগুলি দ্বারা ব্যবহৃত হওয়া দ্রুত প্রোফাইল থেকে বিষয় সূচকটি বাদ দেওয়ার জন্য নির্বাচক 4 ডাব্লুডি কেবলমাত্র আজই আপডেট করা হয়েছিল । যদি এই পরিবর্তনটি থেকে যায় তবে এর অর্থ আপনি স্টাইলশিটে বিষয় সূচকটি আর ব্যবহার করতে পারবেন না (যদি না আপনি অন্য উত্তরে বর্ণিত মত কিছু প্রকারের পলিফিল যোগ না করেন ) - আপনি কেবল এটি নির্বাচক এপিআই এবং যে কোনও জায়গায় ব্যবহার করতে পারবেন অন্যথায় যে সম্পূর্ণ প্রোফাইল প্রয়োগ করা যেতে পারে।
বোল্টক্লক

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

152

আমি মনে করি না আপনি কেবল সিএসএসে পিতামাতাকে বেছে নিতে পারেন।

তবে আপনার যেমন ইতিমধ্যে কোনও .activeক্লাস রয়েছে বলে মনে হচ্ছে , সেই ক্লাসটি li(পরিবর্তে a) এ স্থানান্তর করা আরও সহজ হবে । এইভাবে আপনি কেবল CSS liএর aমাধ্যমে এবং উভয়ই অ্যাক্সেস করতে পারবেন ।


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

12
@ ডমিনিক অ্যাকিলিনা প্রশ্নটি দেখুন, ওপি একটি ছদ্ম নির্বাচক নয়, ক্লাস ব্যবহার করছে।
জিরোইন

125

আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন :

*! > input[type=text] { background: #000; }

এটি কোনও পাঠ্য ইনপুটটির যে কোনও পিতামাতার নির্বাচন করবে। তবে অপেক্ষা করুন, এখনও অনেক কিছু আছে। আপনি যদি চান তবে আপনি একটি নির্দিষ্ট পিতামাতার নির্বাচন করতে পারেন:

.input-wrap! > input[type=text] { background: #000; }

অথবা এটি সক্রিয় হলে এটি নির্বাচন করুন:

.input-wrap! > input[type=text]:focus { background: #000; }

এই এইচটিএমএল দেখুন:

<div class="input-wrap">
    <input type="text" class="Name"/>
    <span class="help hide">Your name sir</span>
</div>

সক্রিয় span.helpথাকাকালীন আপনি এটি নির্বাচন করতে পারেন inputএবং এটি প্রদর্শন করতে পারেন:

.input-wrap! .help > input[type=text]:focus { display: block; }

আরও অনেক ক্ষমতা রয়েছে; প্লাগইনটির ডকুমেন্টেশনটি কেবল পরীক্ষা করে দেখুন।

বিটিডাব্লু, এটি ইন্টারনেট এক্সপ্লোরারে কাজ করে।


5
মনে করুন jquery ব্যবহার patent()দ্রুত হবে। তবে এটি পরীক্ষা করা দরকার
ড্যান

2
@ ভাবলে এটি ব্যর্থ হয় যখন আপনার কোনও সিলেক্টর সাবজেক্টের সিএসএস ঘোষণার সাথে কোনও শিশু বাছাইকারী নেই ( #a!একা ত্রুটি নিক্ষেপ করে, #a! pকাজ করে), এবং অন্যরা এর কারণে কাজ করবে না Uncaught TypeError: Cannot call method 'split' of undefined: দেখুন jsfiddle.net/HrrSerker/VkVPs
yunzen

3
@ হিরসার্কার আমার মনে হয় # এ! একটি অবৈধ নির্বাচনকারী, এটি কি নির্বাচন করা উচিত?
ভাবছি

2
@ ভাবলাম আমি জানি না। অনুমান এটি অবৈধ বলে না। #A! নিজেই নির্বাচন করা উচিত। কমপক্ষে জাভাস্ক্রিপ্টে তাদের কোনও ত্রুটি হওয়া উচিত
ইউনজেন

5
গৃহীত উত্তরের উপর আমার মন্তব্য অনুসারে, দেখে মনে হচ্ছে যে পলিফিল এমনকি নিকট ভবিষ্যতে এমনকি পরেও প্রয়োজন হতে পারে, কারণ বিষয় সূচকটি কখনই সিএসএসে ব্রাউজারগুলির দ্বারা প্রয়োগ করা যায় না।
বোল্টক্লক

108

অন্য দু'জনের দ্বারা যেমন উল্লেখ করা হয়েছে, কেবলমাত্র সিএসএস ব্যবহার করে কোনও উপাদানটির পিতামাতা / গুলি স্টাইল করার উপায় নেই তবে নীচে jQuery দিয়ে কাজ করে :

$("a.active").parents('li').css("property", "value");

21
<নির্বাচক অস্তিত্ব নেই (jQuery এর 1.7.1 ব্যবহার যাচাই)।
রব ডব্লু

6
সম্ভবত সেই- <সিনট্যাক্সটি 2009 সালে কাজ করেছিল তবে আমি এটি আপডেট করেছি (2013 এর জন্য)।
অ্যালাস্টার

5
আরও ভাল করে, jQuery এর বিল্ট-ইন ব্যবহার :has()নির্বাচক : $("li:has(a.active)").css("property", "value");। এটি সিএসএস 4 এর প্রস্তাবিত !নির্বাচকের মতো একইভাবে পড়ে । আরও দেখুন: :parentনির্বাচক , .parents()পদ্ধতি , .parent()পদ্ধতি
ররি ও'কেনে

7
এবং .css("property", "value")নির্বাচিত উপাদানগুলি স্টাইল করার পরিবর্তে আপনার সাধারণত .addClass("someClass")এবং আপনার সিএসএসে থাকা উচিত .someClass { property: value }(এর মাধ্যমে )। এইভাবে, আপনি সিএসএস এবং আপনি ব্যবহার করছেন এমন কোনও প্রিপ্রসেসরগুলির সম্পূর্ণ শক্তি দিয়ে শৈলীটি চিহ্নিত করতে পারেন।
ররি ও'কেনে


69

কোনও পিতামাতা নির্বাচক নেই; পূর্ববর্তী কোন সহোদর নির্বাচক নেই ঠিক সেভাবেই। এই নির্বাচকদের না রাখার একটি ভাল কারণ কারণ কোনও শ্রেণি প্রয়োগ করা উচিত কিনা তা নির্ধারণ করার জন্য ব্রাউজারকে কোনও উপাদানটির সমস্ত শিশুদের মধ্য দিয়ে যেতে হয়। উদাহরণস্বরূপ, আপনি যদি লিখেছেন:

body:contains-selector(a.active) { background: red; }

তারপরে ব্রাউজারটি </body>পৃষ্ঠাটি লাল হওয়া উচিত কিনা তা নির্ধারণ না করা পর্যন্ত সবকিছু লোড করে এবং পার্স না করা পর্যন্ত অপেক্ষা করতে হবে ।

আমাদের পিতা বা মাতা নির্বাচক কেন নেই নিবন্ধটি এটি বিশদভাবে ব্যাখ্যা করে।


11
তাই ব্রাউজারটি দ্রুততর করুন। ইন্টারনেট নিজেই দ্রুত। এই নির্বাচক অবশ্যই প্রয়োজন, এবং এটি বাস্তবায়ন না করার কারণ, দুঃখের বিষয়, কারণ আমরা একটি ধীর, আদিম বিশ্বে বাস করি।
vsync

11
আসলে, নির্বাচকটি খুব দ্রুত ব্রাউজারটি ধীর দেখায়।
সালমান এ

5
আমি বিশ্বাস করি যে ব্রাউজার বিকাশকারীরা একটি বাস্তবায়ন নিয়ে আসবেন যা জাভাস্ক্রিপ্ট সংস্করণ হিসাবে তত দ্রুত (কমপক্ষে), যা একরকম লোক যাহাই হউক না কেন ব্যবহার করে শেষ হয়।
২৩7777

"আমরা একটি ধীর, আদিম বিশ্বে বাস করি" কাশি কাশি নতুন আপেল ঘড়ির কাশি কাশি
মারভিন

@ মার্ক ২৩7777 আপনি যদি নিজের ওয়েবসাইটে জেএসে উপরের উদাহরণটি ব্যবহার করে দেখেন তবে আমি কখনই এটি দেখতে যাব না। অন্যদিকে, আমি বলব যে বেশিরভাগ সময় আপনি কেবল তাত্ক্ষণিক শিশুদের যত্নবান হন, তাই যদি এটি কেবলমাত্র তাত্ক্ষণিক শিশুদের মধ্যে সীমাবদ্ধ থাকে তবে খুব বেশি প্রভাব ছাড়াই এটি একটি ভাল সংযোজন হতে পারে।
xryl669

54

সিএসএস 2 এ করার কোনও উপায় নেই আপনি ক্লাসটি যুক্ত করতে পারেন liএবং উল্লেখ করতে পারেন a:

li.active > a {
    property: value;
}

3
একটি উপাদান প্রদর্শন করে: ব্লক আপনি পুরো লি অঞ্চল পুরো ফিট করতে এটি স্টাইল করতে পারেন। আপনি কী স্টাইলটি সন্ধান করছেন তা যদি আপনি ব্যাখ্যা করতে পারেন তবে আমি কোনও সমাধানে সহায়তা করতে পারি।
জোশ

এটি আসলে একটি সহজ এবং মার্জিত সমাধান এবং অনেক ক্ষেত্রে পিতামাতার উপর ক্লাস স্থাপন করা বোধগম্য হয়।
রিকার্ডো

35

প্রদর্শনে স্যুইচ aকরার চেষ্টা করুন block, এবং তারপরে আপনি যে কোনও স্টাইল ব্যবহার করুন। aউপাদান পূরণ হবে liউপাদান, এবং আপনি হিসাবে আপনি চান তার চেহারা পরিবর্তন করতে সক্ষম হবে। liপ্যাডিং 0 এ সেট করতে ভুলবেন না ।

li {
  padding: 0;
  overflow: hidden;
}
a {
  display: block;
  width: 100%;
  color: ..., background: ..., border-radius: ..., etc...
}
a.active {
  color: ..., background: ...
}

31

সিএসএস নির্বাচক " জেনারেল সিলিং কম্বিনেটর " সম্ভবত আপনি যা চান তার জন্য ব্যবহার করতে পারেন:

E ~ F {
    property: value;
}

এটি Fএকটি Eউপাদান দ্বারা পূর্বে যে কোনও উপাদানটির সাথে মেলে ।


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

26

যতটা আমি সচেতন ততটা সিএসএস 2 এ নেই। সিএসএস 3 এর আরও শক্তিশালী নির্বাচক রয়েছে তবে নিয়মিতভাবে সমস্ত ব্রাউজারে প্রয়োগ করা হয় না। উন্নত নির্বাচকদের সাথেও, আমি বিশ্বাস করি না যে এটি আপনার উদাহরণে যা নির্দিষ্ট করেছে ঠিক তা সম্পাদন করবে।


24

আমি জানি যে ওপি একটি সিএসএস সমাধান খুঁজছিল তবে jQuery ব্যবহার করে এটি অর্জন করা সহজ। আমার ক্ষেত্রে সন্তানের মধ্যে থাকা <ul>ট্যাগের জন্য আমার পিতামাতার ট্যাগটি সন্ধান করা উচিত । jQuery এর নির্বাচক রয়েছে তাই এতে থাকা শিশুদের দ্বারা কোনও পিতামাতাকে সনাক্ত করা সম্ভব:<span><li>:has

$("ul:has(#someId)")

নির্বাচন হবে ulউপাদান আইডি সহ একটি শিশু উপাদান আছে যা someId । বা মূল প্রশ্নের উত্তর দেওয়ার জন্য, নীচের মতো কিছুতে কৌশলটি করা উচিত (অনির্ধারিত):

$("li:has(.active)")

3
অথবা ব্যবহার করুন $yourSpan.closest("ul")এবং আপনি আপনার স্প্যান উপাদানটির পিতামাতার উলটি পাবেন। তবুও আপনার উত্তর সম্পূর্ণ অফটোপিক ইমো। আমরা সিএসএস-টেগড সমস্ত প্রশ্নের জ্যাকিউরি সলিউশন দিয়ে উত্তর দিতে পারি।
রবিন ভ্যান বালেন

1
যেমন অন্যান্য উত্তরে চিহ্নিত করা হয়েছে, সিএসএস 2 ব্যবহার করে এটি করার কোনও উপায় নেই const সেই সীমাবদ্ধতার পরিপ্রেক্ষিতে, আমি যে উত্তরটি দিয়েছিলাম তা হল কার্যকরভাবে কার্যকর এবং জাভাস্ক্রিপ্ট ইমহো ব্যবহার করে প্রশ্নের উত্তর দেওয়ার সহজ উপায়।
ডেভিড ক্লার্ক

আপনার পদক্ষেপগুলি দেওয়া, কিছু লোক আপনার সাথে একমত হয়। তবে একমাত্র উত্তরটি গ্রহণযোগ্য উত্তর থেকে যায়; সরল এবং সরল "এটি আপনার পছন্দ মতো করা যায় না"। যদি প্রশ্নটি হয় কীভাবে সাইকেলের উপরে mp০ মাইল প্রতি ঘন্টা সংরক্ষণ করা যায় এবং আপনি "সরল; একটি গাড়ীতে উঠে গ্যাসের সাথে আঘাত করতে পারেন" দিয়ে উত্তর দিন, তবে এটি এখনও কোনও উত্তর নয়। তাই আমার মন্তব্য।
রবিন ভ্যান বালেন

1
এই পদ্ধতির ফলে SO প্রায় সম্পূর্ণ অকেজো হয়ে যাবে। আমি কীভাবে সমস্যাগুলি সমাধান করতে পারি তার জন্য অনুসন্ধান করি, "একমাত্র উত্তর" খুঁজে পাওয়া যায় না যা সমস্যার সমাধান করে না। এই কারণেই এসও এত বিস্ময়কর, কারণ সবসময় বিড়ালের চামড়ার একাধিক উপায় থাকে।
ডেভিড ক্লার্ক

23

ছদ্ম উপাদান :focus-within যদি কোনও বংশধরদের দৃষ্টি নিবদ্ধ করে তবে পিতামাতাকে নির্বাচন করার অনুমতি দেয়।

যদি একটি উপাদান থাকে তবে এটি ফোকাস করা যেতে পারে tabindex বৈশিষ্ট্য করা যায়।

ফোকাস-মধ্যে জন্য ব্রাউজার সমর্থন

Tabindex

উদাহরণ

.click {
  cursor: pointer;
}

.color:focus-within .change {
  color: red;
}

.color:focus-within p {
  outline: 0;
}
<div class="color">
  <p class="change" tabindex="0">
    I will change color
  </p>
  <p class="click" tabindex="1">
    Click me
  </p>
</div>


2
এটি আমার ক্ষেত্রে ভাল কাজ করে, ধন্যবাদ! কেবল একটি নয়, উদাহরণটি আরও অসুবিধে হবে যদি আপনি পিতামাতার সাথে রঙ বদলে ফেলেন, না ভাই-বোনকে, এটি প্রতিস্থাপন করা .color:focus-within .changeহয় .color:focus-within। আমার ক্ষেত্রে আমি বুটস্ট্র্যাপ ন্যাভ-বার ব্যবহার করছি যা সক্রিয় থাকাকালীন বাচ্চাদের ক্লাস যুক্ত করে এবং আমি পিতামাতার সাথে একটি ক্লাস যুক্ত করতে চাই nav এনভ বার। আমি মনে করি এটি একটি চমত্কার সাধারণ পরিস্থিতি যেখানে আমি মার্কআপের মালিক কিন্তু উপাদানটি CSS + js হ'ল বুটস্ট্র্যাপ (বা অন্য) তাই আমি আচরণটি পরিবর্তন করতে পারি না। যদিও আমি ট্যাবিনডেক্স যুক্ত করতে এবং এই সিএসএস ব্যবহার করতে পারি। ধন্যবাদ!
ক্যান্সারবেরো

22

এটি নির্বাচক স্তর 4 এর সর্বাধিক আলোচিত দিক নির্দিষ্টকরণের । এটির সাহায্যে নির্বাচক নির্বাচিত নির্বাচক (!) এর পরে বিস্মৃত চিহ্নটি ব্যবহার করে তার শিশু অনুসারে কোনও উপাদান স্টাইল করতে সক্ষম হবেন।

উদাহরণ স্বরূপ:

body! a:hover{
   background: red;
}

ব্যবহারকারী কোনও অ্যাঙ্কারের উপরে ঘোরাফেরা করলে একটি লাল ব্যাকগ্রাউন্ড-রঙ সেট করবে।

তবে আমাদের ব্রাউজারগুলির প্রয়োগের জন্য অপেক্ষা করতে হবে :(


21

আপনি পিতামাতার হিসাবে হাইপারলিঙ্ক ব্যবহার করার চেষ্টা করতে পারেন এবং তারপরে হোভারের অভ্যন্তরীণ উপাদানগুলি পরিবর্তন করতে পারেন। এটার মত:

a.active h1 {color:red;}

a.active:hover h1 {color:green;}

a.active h2 {color:blue;}

a.active:hover h1 {color:yellow;}

এইভাবে আপনি প্যারেন্ট উপাদানটির রোলওভারের উপর ভিত্তি করে একাধিক অভ্যন্তরীণ ট্যাগগুলিতে শৈলী পরিবর্তন করতে পারেন।


1
এটি সঠিক, তবে aআপনি যদি এক্সএইচটিএমএল মান মেনে চলতে চান তবে কেবলমাত্র ট্যাগের মধ্যে থাকা মার্কআপ কোডটি নির্দিষ্ট উপাদানের মধ্যে সীমাবদ্ধ করে । উদাহরণস্বরূপ, স্কিমা লঙ্ঘনের সতর্কতা না পেয়ে আপনি এর divমধ্যে একটি ব্যবহার করতে পারবেন না a
ইভাইলো স্লাভভ

2
পুরো ডান ইভায়েলো! "এ" হ'ল একটি অবরুদ্ধ উপাদান, সুতরাং এর ভিতরে ব্লক উপাদান ব্যবহার করতে পারবেন না can't
রিভেরস্টর্ম

1
এইচটিএমএল 5 এ লিঙ্কগুলির ভিতরে ব্লক উপাদানগুলি রাখা পুরোপুরি ঠিক।
ম্যাথু জেমস টেলর

2
... যদি এটি শব্দার্থগতভাবে ভুল হয়, তারা HTML5 এ এটির আগে অনুমতি দেয় না where
বোল্টক্লক

14

বর্তমানে কোনও প্যারেন্ট সিলেক্টর নেই এবং এটি ডব্লিউ 3 সি এর কোনও আলোচনায়ও আলোচনা করা হচ্ছে না। ব্রাউজারের মাধ্যমে সিএসএসকে কীভাবে মূল্যায়ন করা হয় তা বুঝতে হবে আমাদের যদি প্রয়োজন হয় না তবে তা বুঝতে হবে।

এখানে অনেক প্রযুক্তিগত ব্যাখ্যা রয়েছে।

জনাথন স্নুক ব্যাখ্যা করেছেন কীভাবে সিএসএসকে মূল্যায়ন করা হয়

প্যারেন্ট সিলেক্টরের আলোচনায় ক্রিস কোয়ার

দক্ষ সিএসএস নির্বাচক লেখার বিষয়ে আবার হ্যারি রবার্টস

তবে নিকোল সুলিভানের ইতিবাচক প্রবণতা সম্পর্কে কিছু আকর্ষণীয় তথ্য রয়েছে

এই ব্যক্তিরা ফ্রন্ট এন্ড ডেভলপমেন্টের ক্ষেত্রে শীর্ষ শ্রেণির লোক।


12
needওয়েব ডেভেলপারদের 'প্রয়োজনীয়তা দ্বারা সংজ্ঞায়িত করা হয়, তা আছে মধ্যে বৈশিষ্ট অন্যান্য বিষয় স্থির করা হয়।
নিকোডেমাস 13

14

অনুভূমিক মেনুর জন্য কেবল একটি ধারণা ...

এইচটিএমএল এর অংশ

<div class='list'>
  <div class='item'>
    <a>Link</a>
  </div>
  <div class='parent-background'></div>
  <!-- submenu takes this place -->
</div>

সিএসএসের অংশ

/* Hide parent backgrounds... */
.parent-background {
  display: none; }

/* ... and show it when hover on children */
.item:hover + .parent-background {
  display: block;
  position: absolute;
  z-index: 10;
  top: 0;
  width: 100%; }

আপডেট করা ডেমো এবং বাকী কোড

পাঠ্য ইনপুটগুলির সাথে এটি কীভাবে ব্যবহার করবেন তা অন্য একটি উদাহরণ - প্যারেন্ট ফিল্ডসেট নির্বাচন করুন


3
আপনি কিছু / বহু / বেশিরভাগ পিতামাতা নির্বাচক ব্যবহারের ক্ষেত্রে, বা ঠিক এই সিএসএসের কোন অংশগুলি কী করছে তা আপনি কীভাবে সাধারণীকরণ করতে চান তা আমার পক্ষে মোটেও পরিষ্কার নয়। আপনি একটি পুরো ব্যাখ্যা যোগ করতে পারেন?
নাথান টগি

2
আমি এটি বাস্তব বিশ্বের পরিস্থিতিগুলিতে প্রয়োগ করার চেষ্টা করিনি, সে কারণেই আমি বলছি "উত্পাদনের জন্য নয়"। তবে আমি মনে করি এটি কেবল স্থির আইটেমের প্রস্থের সাথে 2-স্তরের মেনুতে প্রয়োগ করা যেতে পারে। "এই সিএসএসের কোন অংশগুলি কী করছে" - .তম-ভাইবালিং আসলে পিতামাতার আইটেমের পটভূমি (সিএসএসের শেষ লাইন)।
ইলিয়া বি।

2
যোগ করা হয়েছে ব্যাখ্যা (jsfiddle এর CSS বিভাগ, "মেইন পার্ট" থেকে শুরু করে) ... এবং আমার ভুল হয়েছে - এখানে বেশ কয়েকটি সংখ্যক সাফল্যওয়েল থাকতে পারে।
ইলিয়া বি।

13

এখানে একটি হ্যাক ব্যবহার pointer-eventsকরে hover:

<!doctype html>
<html>
	<head>
		<title></title>
		<style>
/* accessory */
.parent {
	width: 200px;
	height: 200px;
	background: gray;
}
.parent, 
.selector {
	display: flex;
	justify-content: center;
	align-items: center;
}
.selector {
	cursor: pointer;
	background: silver;
	width: 50%;
	height: 50%;
}
		</style>
		<style>
/* pertinent */
.parent {
	background: gray;
	pointer-events: none;
}
.parent:hover {
	background: fuchsia;
}
.parent 
.selector {
	pointer-events: auto;
}
		</style>
	</head>
	<body>
		<div class="parent">
			<div class="selector"></div>
		</div>
	</body>
</html>


12

এমন একটি প্লাগইন রয়েছে যা কিছু অ-মানক বৈশিষ্ট্য অন্তর্ভুক্ত করতে সিএসএস প্রসারিত করে যা ওয়েবসাইট ডিজাইনের সময় সত্যই সহায়তা করতে পারে। একে EQCSS বলা হয়

ইসকিউএসএস যুক্ত জিনিসগুলির মধ্যে একটি হ'ল পিতা বা মাতা নির্বাচক। এটি সমস্ত ব্রাউজারে, ইন্টারনেট এক্সপ্লোরার 8 এবং তারপরে কাজ করে। ফর্ম্যাটটি এখানে:

@element 'a.active' {
  $parent {
    background: red;
  }
}

সুতরাং এখানে আমরা প্রতিটি উপাদান একটি উপাদান কোয়েরি খোলা হয়েছে a.active, এবং যে প্রশ্নের ভিতরে শৈলী জন্য, জিনিস $parentবোঝার মত জিনিস , কারণ একটি রেফারেন্স পয়েন্ট আছে। ব্রাউজারটি পিতামাতাকে খুঁজে পেতে পারে, কারণ এটির সাথে খুব মিলparentNode জাভাস্ক্রিপ্টের

এখানে একটি ডেমো$parent এবং অন্য একটি $parentডেমো যা ইন্টারনেট এক্সপ্লোরার 8 এ কাজ করে , পাশাপাশি আপনার যদি ইন্টারনেট এক্সপ্লোরার 8 এর সাথে পরীক্ষা করার জন্য না থাকে তবে একটি স্ক্রিনশট রয়েছে

EQCSS এ মেটা-নির্বাচকগুলিও অন্তর্ভুক্ত রয়েছে : $prevএকটি নির্বাচিত উপাদানটির আগে উপাদানটির $thisজন্য এবং কেবলমাত্র সেই উপাদানগুলির জন্য যা একটি উপাদান কোয়েরির সাথে মেলে, এবং আরও অনেক কিছু।


11

এটি এখন 2019, এবং সিএসএস নেস্টিং মডিউলটির সর্বশেষ খসড়াটিতে আসলে এরকম কিছু রয়েছে। @nestবিধি-বিধানের পরিচয় দেওয়া হচ্ছে।

3.2। নেস্টিং এট-রুল: @ নীস্ট

সরাসরি বাসা বাঁধতে দেখতে দেখতে কিছুটা নাজুক। কিছু বৈধ নেস্টিং নির্বাচক, যেমন .foo & এর অনুমতি নেই, এবং নির্দিষ্ট পদ্ধতিতে নির্বাচককে সম্পাদনা করা নিয়মটিকে অপ্রত্যাশিতভাবে অকার্যকর করে তুলতে পারে। পাশাপাশি, কিছু লোকেরা আশেপাশের ঘোষণাগুলি থেকে দৃষ্টিশক্তিগুলি পৃথক করতে নীড়কে চ্যালেঞ্জিং বলে মনে করেন।

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

@nest = @nest <selector> { <declaration-list> }

@ প্রাচীন নিয়মটি শৈলীর নিয়মের মতোই কাজ করে: এটি একটি নির্বাচক দিয়ে শুরু হয় এবং এতে ঘোষণাগুলি থাকে যা নির্বাচকগুলির সাথে মেলে এমন উপাদানগুলির জন্য প্রযোজ্য। পার্থক্যটি হ'ল @ নেস্ট নিয়মে ব্যবহৃত নির্বাচক অবশ্যই বাসাযুক্ত থাকতে হবে, যার অর্থ এটিতে কোথাও কোনও নেস্টিং নির্বাচক রয়েছে। নির্বাচিতদের একটি তালিকা বাসা-যুক্ত রয়েছে যদি এর সমস্ত পৃথক জটিল নির্বাচক নীড়যুক্ত থাকে।

(উপরের ইউআরএল থেকে অনুলিপি করুন এবং আটকানো হয়েছে)।

এই নির্দিষ্টকরণের অধীনে বৈধ নির্বাচকগুলির উদাহরণ:

.foo {
  color: red;
  @nest & > .bar {
    color: blue;
  }
}
/* Equivalent to:
   .foo { color: red; }
   .foo > .bar { color: blue; }
 */

.foo {
  color: red;
  @nest .parent & {
    color: blue;
  }
}
/* Equivalent to:
   .foo { color: red; }
   .parent .foo { color: blue; }
 */

.foo {
  color: red;
  @nest :not(&) {
    color: blue;
  }
}
/* Equivalent to:
   .foo { color: red; }
   :not(.foo) { color: blue; }
 */

10

প্রযুক্তিগতভাবে এটি করার সরাসরি কোনও উপায় নেই। যাইহোক, আপনি jQuery বা জাভাস্ক্রিপ্ট এর মাধ্যমে বাছাই করতে পারেন।

তবে আপনি এর মতো কিছু করতে পারেন।

a.active h1 {color: blue;}
a.active p {color: green;}

jQuery এর

$("a.active").parents('li').css("property", "value");

আপনি এই jQuery ব্যবহার অর্জন করতে চান তাহলে এখানে রেফারেন্স jQuery এর পিতা বা মাতা নির্বাচক


9

ডাব্লু 3 সি একটি ব্রাউজারে এটির বিশাল পারফরম্যান্স প্রভাবের কারণে এ জাতীয় নির্বাচককে বাদ দিয়েছে।


27
মিথ্যা। যেহেতু ডিওএম একটি গাছ, তাদের সন্তানের কাছে যাওয়ার আগে তাদের পিতামাতার কাছে যেতে হবে, তাই কেবল একটি নোড ফিরে যান। oo
নলভক্সপপুলি

9
সিএসএস নির্বাচকরা একটি সারি তাই ডকুমেন্ট এক্সপথ বা ডিওএম স্তরক্রমের চেয়ে নির্বাচক আদেশটি মূল্যায়ন করা হয়।
পল সুইট

3
@ আরজিবি কমপক্ষে এটাই তারা আমাদের বলেছিল।
ইউনজেন

9

সংক্ষিপ্ত উত্তর হ'ল না ; আমরা না parent selectorCSS এ এই পর্যায়ে, কিন্তু আপনি যদি যাহাই হউক না কেন উপাদান অথবা শ্রেণীর অদলবদল করার থাকে না, দ্বিতীয় বিকল্প জাভাস্ক্রিপ্ট ব্যবহার করছে। এটার মতো কিছু:

var activeATag = Array.prototype.slice.call(document.querySelectorAll('a.active'));

activeATag.map(function(x) {
  if(x.parentNode.tagName === 'LI') {
    x.parentNode.style.color = 'red'; // Your property: value;
  }
});

বা যদি আপনি নিজের অ্যাপ্লিকেশনটিতে jQuery ব্যবহার করেন তবে একটি ছোট্ট উপায় :

$('a.active').parents('li').css('color', 'red'); // Your property: value;

5

যদিও বর্তমানে স্ট্যান্ডার্ড সিএসএসে কোনও প্যারেন্ট সিলেক্টর নেই, তবুও আমি কুড়াল (অর্থাত্ অগমেন্টেড সিএসএস সিলেক্টর সিনট্যাক্স / এসিএসএসএস ) নামে একটি (ব্যক্তিগত) প্রকল্পে কাজ করছি যা এর নতুন 7 জন নির্বাচকদের মধ্যে উভয়কেই অন্তর্ভুক্ত করেছে:

  1. একটি তাৎক্ষণিক পিতা বা মাতা নির্বাচক <(যা বিপরীত নির্বাচন সম্ভব> )
  2. একটি কোনো পূর্বপুরুষ নির্বাচক ^ (যা বিপরীত নির্বাচন সম্ভব [SPACE])

কুঠার বর্তমানে উন্নয়নের তুলনামূলকভাবে প্রাথমিক বিটা পর্যায়ে রয়েছে।

এখানে একটি ডেমো দেখুন:

http://rounin.co.uk/projects/axe/axe2.html

(বাম স্টাইলযুক্ত দুটি তালিকাকে স্ট্যান্ডার্ড সিলেক্টারের সাথে এবং ডানদিকে দুটি তালিকার কুড়াল সিলেক্টরের সাথে তুলনা করুন)


3
প্রকল্পটি বর্তমানে প্রাথমিক পর্যায়ে বিটা পর্যায়ে রয়েছে। আপনি (কমপক্ষে বর্তমানে) <script src="https://rouninmedia.github.io/axe/axe.js"></script>আপনার এইচটিএমএল ডকুমেন্টের একেবারে শেষে অন্তর্ভুক্ত করে আপনার সিএসএস শৈলীতে কুড়াল নির্বাচনকারীদের সক্রিয় করতে পারেন </body>
রাউনিন

4

অন্তত সিএসএস 3 পর্যন্ত অন্তর্ভুক্ত এবং আপনি এর মতো নির্বাচন করতে পারবেন না। তবে এটি আজকাল জাভাস্ক্রিপ্টে খুব সহজেই করা যায়, আপনার কেবল কিছুটা ভ্যানিলা জাভাস্ক্রিপ্ট যুক্ত করতে হবে, লক্ষ্য করুন যে কোডটি খুব ছোট।

cells = document.querySelectorAll('div');
[].forEach.call(cells, function (el) {
    //console.log(el.nodeName)
    if (el.hasChildNodes() && el.firstChild.nodeName=="A") {
        console.log(el)
    };
});
<div>Peter</div>
<div><a href="#">Jackson link</a></div>
<div>Philip</div>
<div><a href="#">Pullman link</a></div>


4

কোন ধারনা?

সিএসএস 4 অভিনব হতে হবে যদি এটি কিছু যোগ করে আঙ্গুলসমূহ মধ্যে হেঁটে পিছনের দিকে । তখন পর্যন্ত এটা সম্ভব (যদিও না যুক্তিযুক্ত) ব্যবহার করতে checkboxএবং / অথবা radio inputগুলি করার বিরতি স্বাভাবিক ভাবেই যে জিনিস সংযুক্ত আছেন, এবং যে মাধ্যমে এছাড়াও সিএসএস তার স্বাভাবিক পরিধি বাইরে কাজ করার অনুমতি দেয় ...

/* Hide things that may be latter shown */
.menu__checkbox__selection,
.menu__checkbox__style,
.menu__hidden {
  display: none;
  visibility: hidden;
  opacity: 0;
  filter: alpha(opacity=0); /* Old Microsoft opacity */
}


/* Base style for content and style menu */
.main__content {
  background-color: lightgray;
  color: black;
}

.menu__hidden {
  background-color: black;
  color: lightgray;
  /* Make list look not so _listy_ */
  list-style: none;
  padding-left: 5px;
}

.menu__option {
  box-sizing: content-box;
  display: block;
  position: static;
  z-index: auto;
}

/* &#9660; - \u2630 - Three Bars */
/*
.menu__trigger__selection::before {
  content: '\2630';
  display: inline-block;
}
*/

/* &#9660; - Down Arrow */
.menu__trigger__selection::after {
  content: "\25BC";
  display: inline-block;
  transform: rotate(90deg);
}


/* Customize to look more `select` like if you like */
.menu__trigger__style:hover,
.menu__trigger__style:active {
  cursor: pointer;
  background-color: darkgray;
  color: white;
}


/**
 * Things to do when checkboxes/radios are checked
 */

.menu__checkbox__selection:checked + .menu__trigger__selection::after,
.menu__checkbox__selection[checked] + .menu__trigger__selection::after {
  transform: rotate(0deg);
}

/* This bit is something that you may see elsewhere */
.menu__checkbox__selection:checked ~ .menu__hidden,
.menu__checkbox__selection[checked] ~ .menu__hidden {
  display: block;
  visibility: visible;
  opacity: 1;
  filter: alpha(opacity=100); /* Microsoft!? */
}


/**
 * Hacky CSS only changes based off non-inline checkboxes
 * ... AKA the stuff you cannot unsee after this...
 */
.menu__checkbox__style[id="style-default"]:checked ~ .main__content {
  background-color: lightgray;
  color: black;
}

.menu__checkbox__style[id="style-default"]:checked ~ .main__content .menu__trigger__style[for="style-default"] {
  color: darkorange;
}

.menu__checkbox__style[id="style-one"]:checked ~ .main__content {
  background-color: black;
  color: lightgray;
}

.menu__checkbox__style[id="style-one"]:checked ~ .main__content .menu__trigger__style[for="style-one"] {
  color: darkorange;
}

.menu__checkbox__style[id="style-two"]:checked ~ .main__content {
  background-color: darkgreen;
  color: red;
}

.menu__checkbox__style[id="style-two"]:checked ~ .main__content .menu__trigger__style[for="style-two"] {
  color: darkorange;
}
<!--
  This bit works, but will one day cause troubles,
  but truth is you can stick checkbox/radio inputs
  just about anywhere and then call them by id with
  a `for` label. Keep scrolling to see what I mean
-->
<input type="radio"
       name="colorize"
       class="menu__checkbox__style"
       id="style-default">
<input type="radio"
       name="colorize"
       class="menu__checkbox__style"
       id="style-one">
<input type="radio"
       name="colorize"
       class="menu__checkbox__style"
       id="style-two">


<div class="main__content">

  <p class="paragraph__split">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  </p>

  <input type="checkbox"
         class="menu__checkbox__selection"
         id="trigger-style-menu">
  <label for="trigger-style-menu"
         class="menu__trigger__selection"> Theme</label>

  <ul class="menu__hidden">
    <li class="menu__option">
      <label for="style-default"
             class="menu__trigger__style">Default Style</label>
    </li>

    <li class="menu__option">
      <label for="style-one"
             class="menu__trigger__style">First Alternative Style</label>
    </li>

    <li class="menu__option">
      <label for="style-two"
             class="menu__trigger__style">Second Alternative Style</label>
    </li>
  </ul>

  <p class="paragraph__split">
    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
    cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </p>

</div>

... প্রশংসনীয় স্থূল , কিন্তু CSS এর সঙ্গে এবং HTML স্পর্শ এবং পুনরায় স্পর্শ কিছু করা সম্ভব কিন্তু bodyএবং :rootলিঙ্ক করে প্রায় যেকোনো জায়গা থেকে idএবং forবৈশিষ্ট্য radio/ checkbox inputগুলি এবং label ট্রিগার ; সম্ভবত কেউ দেখায় যে কীভাবে তাদের আবার স্পর্শ করবেন।

একটি অতিরিক্ত সতর্কীকরণ যে শুধুমাত্র এক input একটি নির্দিষ্ট idহয়তো, ব্যবহৃত প্রথম checkbox/ radio জেতে অন্য কথায় একটি টগল রাষ্ট্র ... কিন্তু একাধিক লেবেল একই সব নির্দেশ করতে পারেন inputযদিও উভয় HTML এবং CSS এর চেহারা এমনকি আয়কারী ছবি তুলবে।


... আমি আশা করছি যে সিএসএস স্তর 2-তে স্থানীয়ভাবে উপস্থিত রয়েছে এমন এক ধরণের কাজ রয়েছে ...

আমি নিশ্চিত অপরের সম্পর্কে am :নির্বাচকরা, কিন্তু আমি :checkedপ্রাক সিএসএস 3. জন্য যদ্দুর মনে পড়ে, এটা কিছু ছিল মত [checked]যার কারণে আপনি উপরের কোডে এটা খুঁজে পেতে পারেন, উদাহরণস্বরূপ,

.menu__checkbox__selection:checked ~ .menu__hidden,
.menu__checkbox__selection[checked] ~ .menu__hidden {
 /* rules: and-stuff; */
}

... কিন্তু মতো জিনিসগুলির জন্য ::afterএবং :hover, আমি নির্দিষ্ট যা সিএসএস সংস্করণে যারা প্রথম হাজির এ নই।

যে সমস্ত বিবৃত, দয়া করে এটি উত্পাদন কখনও ব্যবহার করবেন না, এমনকি রাগ নয়। নিশ্চিত কৌতুক হিসাবে, বা অন্য কথায় কেবল কিছু করা যেতে পারে তার অর্থ সর্বদা এটি হওয়া উচিত নয়


3

না, আপনি কেবল সিএসএসে পিতামাতাকে নির্বাচন করতে পারবেন না।

তবে আপনার যেমন ইতিমধ্যে কোনও .activeক্লাস রয়েছে বলে মনে হচ্ছে , সেই ক্লাসটি li(পরিবর্তে a) এ স্থানান্তর করা আরও সহজ হবে । এইভাবে আপনি কেবল CSS liএর aমাধ্যমে এবং উভয়ই অ্যাক্সেস করতে পারবেন ।


1

সাসে এম্পারস্যান্ড দিয়ে এটি সম্ভব :

h3
  font-size: 20px
  margin-bottom: 10px
  .some-parent-selector &
    font-size: 24px
    margin-bottom: 20px

সিএসএস আউটপুট:

h3 {
  font-size: 20px;
  margin-bottom: 10px;
}
.some-parent-selector h3 {
  font-size: 24px;
  margin-bottom: 20px;
}

2
এটি সত্য, তবে কেবলমাত্র যদি আপনি নির্বাচককে আগেই জানেন।
শাহর

11
এটি এর পিতামাতার নির্বাচন করে নাh3 , যা লক্ষ্য ছিল। এটি h3এর বংশধরদের নির্বাচন করবে .some-parent-selector
জ্যাকব ফোর্ড

1

আমি এটি করতে কিছু জাভাস্ক্রিপ্ট কোড ভাড়া চাই। উদাহরণস্বরূপ, প্রতিক্রিয়াতে যখন আপনি কোনও অ্যারের মাধ্যমে পুনরাবৃত্তি করেন, তখন প্যারেন্ট উপাদানগুলিতে অন্য শ্রেণি যুক্ত করুন, যা এতে নির্দেশ করে যে এটিতে আপনার শিশু রয়েছে:

<div className={`parent ${hasKiddos ? 'has-kiddos' : ''}`}>
    {kiddos.map(kid => <div key={kid.id} />)}
</div>

এবং তারপরে সহজভাবে:

.parent {
    color: #000;
}

.parent.has-kiddos {
    color: red;
}

0

শিশু উপাদানের উপর ভিত্তি করে প্যারেন্ট এলিমেন্ট পরিবর্তন করা কেবল তখনই ঘটতে পারে যখন <input>প্যারেন্ট উপাদানটির ভিতরে আমাদের একটি উপাদান থাকে। যখন কোনও ইনপুট ফোকাস পায়, তার সাথে সম্পর্কিত প্যারেন্ট উপাদানগুলি সিএসএস ব্যবহার করে প্রভাবিত হতে পারে।

নিম্নলিখিত উদাহরণ আপনাকে সিএসএসে ব্যবহার বুঝতে সহায়তা করবে :focus-within

.outer-div {
  width: 400px;
  height: 400px;
  padding: 50px;
  float: left
}

.outer-div:focus-within {
  background: red;
}

.inner-div {
  width: 200px;
  height: 200px;
  float: left;
  background: yellow;
  padding: 50px;
}
<div class="outer-div">
  <div class="inner-div">
    I want to change outer-div(Background color) class based on inner-div. Is it possible?
    <input type="text" placeholder="Name" />
  </div>
</div>


0

"সিএসএস ওয়ার্কিং গ্রুপের পূর্বে পিতামাতার নির্বাচকদের প্রস্তাব প্রত্যাখ্যান করার মূল কারণগুলি ব্রাউজারের কার্য সম্পাদন এবং বর্ধিত রেন্ডারিং সম্পর্কিত বিষয়গুলির সাথে সম্পর্কিত।"

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