"পূর্ববর্তী ভাইবোন" নির্বাচক আছে?


1354

প্লাস চিহ্ন ( +) পরবর্তী ভাইবোনের জন্য।

আগের ভাইবোনের সমতুল্য কি আছে?


17
ওএমজি, এখানে থাকা সমস্ত উত্তর আপনাকে এইচটিএমএল উপাদানগুলির ক্রম বিপরীত করার পরামর্শ দেয় এবং তারপরে সিএসএস ব্যবহার করে সেগুলি পশ্চাদপটে প্রদর্শিত হয় real নিশ্চিত হয়ে নিন যে এটি প্রশ্নের মধ্যে নির্দিষ্ট করে না , তবে বেশিরভাগ "আপনি কি সিএসএস দিয়ে এক্স করতে পারেন" প্রশ্নগুলি ধরে নেওয়া উচিত যে আপনি কাঠামোগতভাবে HTML পরিবর্তন করতে পারবেন না change
স্কয়ারকাণ্ডি

3
@ স্প্যারেড ক্যান্ডি, আমি বেশিরভাগই আপনার মন্তব্যের সাথে একমত হই। তবে আপনি যে সমাধানগুলি অপর্যাপ্ত হিসাবে উল্লেখ করেছেন সেগুলি কিছু ক্ষেত্রে তবে কার্যকর ( সুতরাং তারা পোস্ট মূল্যবান। আপনি "বাস্তব প্রসারিত" হিসাবে যা দেখছেন তা অন্যের কাছে "সৃজনশীল সমাধান" হতে পারে।
মাইকেল বেঞ্জামিন

উত্তর:


839

না, কোনও "পূর্ববর্তী ভাইবোন" নির্বাচক নেই।

সম্পর্কিত নোটে, ~সাধারণ উত্তরাধিকারী ভাইবিলিংয়ের জন্য (অর্থ উপাদানটির পরে এটি আসে তবে তাৎক্ষণিক পরে তা নয়) এবং এটি সিএসএস 3 নির্বাচক। +পরবর্তী ভাইবোনের জন্য এবং CSS2.1 হয়।

নির্বাচনকারী স্তর স্তর 3 এবং 5.7 থেকে সংলগ্ন ভাইবিলি সংযোগকারী দেখুন ক্যাসকেডিং স্টাইল শীট স্তর 2 সংশোধনী 1 (সিএসএস 2.1) নির্দিষ্টকরণ থেকে সংলগ্ন ভাইবোলে নির্বাচনকারীগণ


14
সিএসএস 3 স্ট্যান্ডার্ড থেকে: দুটি সিকোয়েন্স দ্বারা প্রতিনিধিত্ব করা উপাদানগুলি ডকুমেন্ট ট্রিতে একই পিতামাতাকে ভাগ করে এবং প্রথম সিকোয়েন্সের পূর্ববর্তী উপাদানগুলি (তাত্ক্ষণিকভাবে তাত্ক্ষণিকভাবে প্রয়োজন হয় না) দ্বারা প্রতিনিধিত্ব করা উপাদানটি দ্বিতীয় দ্বারা প্রতিনিধিত্ব করে।
মিথ্যা রায়ান

26
@ মিথ্যা রায়ান: হ্যাঁ, তবে ক্লাইটাস তার উত্তরটি দিচ্ছে যে আপনি পূর্ববর্তী উপাদানটি নির্বাচন করবেন না ।
BoltClock

42
এটি কী করতে পারে এবং কী করতে পারে না তা দেখার জন্য আমি এখানে তৈরি করেছি একটি উদাহরণ। jsfiddle.net/NuuHy/1
অ্যাবাকাস

7
এর জন্য দরকারী jquery ফাংশনটি পূর্ব ()। উদাহরণস্বরূপ $ ("# the_element")। Prev ()। CSS ("পটভূমি বর্ণ", "লাল")
সাতবীর কিরা

1
আপনার মার্কআপ উপর নির্ভর করে, এই শক্তি সহায়তা: stackoverflow.com/questions/42680881/...
samnau

234

আমি পূর্ববর্তী সমস্ত ভাইবোনদের বিপরীতে স্টাইল করার একটি উপায় পেয়েছি ~যা আপনার প্রয়োজনের উপর নির্ভর করে কাজ করতে পারে work

ধরা যাক আপনার লিঙ্কগুলির একটি তালিকা রয়েছে এবং একটিতে যখন ঘুরে বেড়ান, পূর্ববর্তী সমস্তগুলি লাল হয়ে যায়। আপনি এটি এর মতো করতে পারেন:

/* default link color is blue */
.parent a {
  color: blue;
}

/* prev siblings should be red */
.parent:hover a {
  color: red;
}
.parent a:hover,
.parent a:hover ~ a {
  color: blue;
}
<div class="parent">
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
  <a href="#">link</a>
</div>


17
এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা আপনি যুক্ত করতে পারেন। (মনে হচ্ছে আপনি সমস্ত আইটেম এবং নীচের আইটেমগুলিতে একটি স্টাইল প্রয়োগ করেছেন তবে এটি স্পষ্টভাবে বর্ণিত হতে পারে)
এএল

1
দুর্দান্ত সমাধান। উপাদানগুলি মার্কআপে বা পুনরায় রেন্ডার (মাধ্যমে float:right) পুনরায় সাজানোর দরকার নেই । এটির জন্য মার্জিনের পরিবর্তে ইউনিট / শব্দ এবং প্যাডিংয়ের মধ্যে একটি সাদা-স্থানের ধসের প্রয়োজন ছিল, তবে এটি অন্যথায় পুরোপুরি কার্যকর হয়!
স্টিভেন ওয়াচন

7
হ্যাঁ, তবে একক আগেরটির প্রয়োজন বেশিরভাগ সময় আগের সমস্তগুলিই নয়!
আজেফেরতি

41
আমার জন্য যদি আমি তাদের মধ্যবর্তী স্থানের উপরে ঘুরে দেখি তবে লিঙ্কগুলি সমস্ত লাল হয়ে যায়।
লিন

3
@ লিন উত্তরটিতে কেবল আগের লিঙ্কগুলি হোভারে লাল করার কোড অন্তর্ভুক্ত রয়েছে। অতিরিক্ত শৈলীগুলি আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে। তারার রেটিং উপাদানটির (যা আমি অনুমান করি যে এটি একটি সাধারণ ক্ষেত্রে), আপনাকে সেই স্থান থেকে মুক্তি দিতে হবে এবং hেকে দেওয়া লিঙ্কটিও লাল করতে হবে।
ম্যান্টিশ

164

নির্বাচক স্তর 4 প্রবর্তন করে:has() (পূর্বে বিষয় সূচক !) যা আপনাকে পূর্ববর্তী সহোদরগুলি নির্বাচন করার অনুমতি দেয়:

previous:has(+ next) {}

… তবে লেখার সময় এটি ব্রাউজার সমর্থনের জন্য রক্তপাতের প্রান্তের কিছুটা দূরে।


51
"ব্রাউজার সমর্থনের জন্য প্রবাহিত প্রবাহ" একটি অতিরিক্ত বাড়াবাড়ি হতে পারে। এটি লেখার মতো, এমনকি Chrome এর সর্বশেষতম সংস্করণটি :has()সিউডো-ক্লাস ব্যবহার করতে পারে না ।
রিড মার্টিন

33
@ রিডমার্টিন - সে কারণেই আমি রক্তপাতের প্রান্তের কিছু দূরে
কোয়ান্টিন

12
": ডায়নামিক সিলেক্টর প্রোফাইলের অংশ হিসাবে চিহ্নিত করা হয়নি, যার অর্থ এটি স্টাইলশিটের মধ্যে ব্যবহার করা যাবে না; কেবল ডকুমেন্ট.কোয়ারী নির্বাচনকারী () এর মতো ফাংশন সহ।" - ডেভেলপার.মোজিলা.আর.ইন-
ইউএস /

1
@ আর্চলিনাক্সটাক্স: "এই সীমাবদ্ধতাটি এখন সরানো হয়েছে", তাই একবার আমরা সম্ভবত এই বৈশিষ্ট্যটি ব্যবহার করতে পারি: ডি।
জ্যাকব ভ্যান লিনজেন

@ জ্যাকবভানলিনজেন - ক্যানিউজ :: # feat = css- as - বর্তমানে কোনও ব্রাউজার এটি সমর্থন করে না।
কুইন্টিন

153

orderফ্লেক্স এবং গ্রিড লেআউটের সম্পত্তি বিবেচনা করুন ।

আমি নীচের উদাহরণগুলিতে ফ্লেক্সবক্সে ফোকাস করব, তবে গ্রিডে একই ধারণাগুলি প্রযোজ্য।


ফ্লেক্সবক্সের সাহায্যে পূর্ববর্তী সহোদর নির্বাচককে অনুকরণ করা যায়।

বিশেষত, ফ্লেক্স orderসম্পত্তি পর্দার চারপাশে উপাদানগুলি সরাতে পারে।

এখানে একটি উদাহরণ:

আপনি উপাদান এলটি লাল হয়ে যাওয়ার জন্য উপাদান এলটি লাল করতে চান।

<ul>
    <li>A</li>
    <li>B</li>
</ul>

STEPS টি

  1. ulএকটি ফ্লেক্স পাত্রে তৈরি করুন ।

    ul { display: flex; }

  1. মার্ক আপে ভাইবোনদের ক্রমটি বিপরীত করুন।

    <ul>
       <li>B</li>
       <li>A</li>
    </ul>

  1. এলিমেন্ট এ ( ~বা +করবে) টার্গেট করতে কোনও ভাইবোন নির্বাচনকারী ব্যবহার করুন ।

    li:hover + li { background-color: red; }

  1. orderভিজ্যুয়াল ডিসপ্লেতে ভাইবোনদের ক্রম পুনরুদ্ধার করতে ফ্লেক্স সম্পত্তিটি ব্যবহার করুন ।

    li:last-child { order: -1; }

... এবং voilà! পূর্ববর্তী সহোদর নির্বাচক জন্মগ্রহণ করেন (বা কমপক্ষে সিমুলেটেড)।

এখানে সম্পূর্ণ কোড:

ul {
    display: flex;
}

li:hover + li {
    background-color: red;
}

li:last-child {
    order: -1;
}

/* non-essential decorative styles */
li {
    height: 200px;
    width: 200px;
    background-color: aqua;
    margin: 5px;
    list-style-type: none;
    cursor: pointer;
}
<ul>
    <li>B</li>
    <li>A</li>
</ul>

ফ্লেক্সবক্স স্পেক থেকে:

5.4। প্রদর্শন আদেশ: orderসম্পত্তি

ফ্লেক্স আইটেমগুলি ডিফল্টরূপে প্রদর্শিত হয় এবং উত্স নথিতে যেমন প্রদর্শিত হয় তেমন ক্রমে তা ছড়িয়ে দেওয়া হয়। orderসম্পত্তি এই ক্রম পরিবর্তন করতে ব্যবহার করা যাবে।

orderসম্পত্তি নিয়ন্ত্রণগুলি যে ক্রমে আনমন আইটেম আনমন ধারক মধ্যে প্রদর্শিত, তাদের পূরণবাচক গোষ্ঠীতে বরাদ্দ করে। এটি একটি একক <integer>মান নেয় , যা ফ্লেক্স আইটেমটি কোন অর্ডিনাল গোষ্ঠীর অন্তর্ভুক্ত তা নির্দিষ্ট করে।

orderসমস্ত ফ্লেক্স আইটেমের প্রাথমিক মান 0 হয়।

আরো দেখুন orderসিএসএস গ্রিড লেআউট বৈশিষ্ট


"পূর্ববর্তী ভাইবোন নির্বাচকদের" উদাহরণ ফ্লেক্স orderসম্পত্তি সহ তৈরি ।

.container { display: flex; }

.box5 { order: 1; }    
.box5:hover + .box4 { background-color: orangered; font-size: 1.5em; }

.box6 { order: -4; }
.box7 { order: -3; }
.box8 { order: -2; }
.box9 { order: -1; }
.box9:hover ~ :not(.box12):nth-child(-1n+5) { background-color: orangered;
                                              font-size: 1.5em; }
.box12 { order: 2; }
.box12:hover ~ :nth-last-child(-1n+2) { background-color: orangered;
                                        font-size: 1.5em; }
.box21 { order: 1; }
.box21:hover ~ .box { background-color: orangered; font-size: 1.5em; }

/* non-essential decorative styles */
.container {
    padding: 5px;
    background-color: #888;
}
.box {
    height: 50px;
    width: 75px;
    margin: 5px;
    background-color: lightgreen;
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
    cursor: pointer;
}
<p>
Using the flex <code>order</code> property to construct a previous sibling selector
</p>

<div class="container">
    <div class="box box1"><span>1</span></div>
    <div class="box box2"><span>2</span></div>
    <div class="box box3"><span>3</span></div>
    <div class="box box5"><span>HOVER ME</span></div>
    <div class="box box4"><span>4</span></div>
</div>

<br>

<div class="container">
    <div class="box box9"><span>HOVER ME</span></div>
    <div class="box box12"><span>HOVER ME</span></div>
    <div class="box box6"><span>6</span></div>
    <div class="box box7"><span>7</span></div>
    <div class="box box8"><span>8</span></div>
    <div class="box box10"><span>10</span></div>
    <div class="box box11"><span>11</span></div>
</div>

<br>

<div class="container">
    <div class="box box21"><span>HOVER ME</span></div>
    <div class="box box13"><span>13</span></div>
    <div class="box box14"><span>14</span></div>
    <div class="box box15"><span>15</span></div>
    <div class="box box16"><span>16</span></div>
    <div class="box box17"><span>17</span></div>
    <div class="box box18"><span>18</span></div>
    <div class="box box19"><span>19</span></div>
    <div class="box box20"><span>20</span></div>
</div>

jsFiddle


একটি পার্শ্ব নোট - সিএসএস সম্পর্কে দুটি পুরানো বিশ্বাস

ফ্লেক্সবক্স সিএসএস সম্পর্কে দীর্ঘস্থায়ী বিশ্বাসকে ছিন্নভিন্ন করে দিচ্ছে।

এরকম একটি বিশ্বাস সিএসএসে পূর্ববর্তী ভাই-বোন নির্বাচন করা সম্ভব নয়

এই বিশ্বাসটি যে ব্যাপকভাবে বলা যায় তা একটি সংক্ষিপ্ত বিবরণ হবে। একা স্ট্যাক ওভারফ্লো সম্পর্কিত সম্পর্কিত প্রশ্নগুলির নমুনা এখানে দেওয়া হয়েছে:

উপরে বর্ণিত হিসাবে, এই বিশ্বাস সম্পূর্ণ সত্য নয়। কোনও পূর্ববর্তী সহোদর নির্বাচক ফ্লেক্স orderসম্পত্তি ব্যবহার করে সিএসএসে অনুকরণ করা যায় ।

z-indexমিথ

আর একটি দীর্ঘস্থায়ী বিশ্বাস হ'ল যে z-indexকেবল অবস্থিত উপাদানগুলিতে কাজ করে।

প্রকৃতপক্ষে, ডেস্কটপটির সর্বাধিক বর্তমান সংস্করণ - ডাব্লু 3 সি সম্পাদকের খসড়া এখনও এটি সত্য বলে দাবি করে:

9.9.1 স্ট্যাক স্তর নির্দিষ্ট করে: z-index সম্পত্তি

z-index

  • মান: অটো | | উত্তরাধিকারী
  • প্রাথমিক: অটো
  • প্রযোজ্য: অবস্থানযুক্ত উপাদান
  • উত্তরাধিকারী: না
  • শতাংশ: এন / এ
  • মিডিয়া: ভিজ্যুয়াল
  • গণিত মান: নির্দিষ্ট হিসাবে as

(সামনে জোর দাও)

বাস্তবে, তবে, এই তথ্য অপ্রচলিত এবং সঠিক নয় urate

উপাদানসমূহ যে আনমন আইটেম বা গ্রিড আইটেম প্রেক্ষিতে এমনকি সারিবদ্ধ যখন তৈরি করতে পারেন positionহয় static

4.3। ফ্লেক্স আইটেম জেড-অর্ডারিং

ফ্লেক্স আইটেমগুলি হ'ল ইনলাইন ব্লকগুলির মতো হুবহু চিত্র আঁকায়, ব্যতীত অর্ডার-সংশোধিত ডকুমেন্ট অর্ডারটি কাঁচা ডকুমেন্ট অর্ডারের জায়গায় ব্যবহার করা হয় এবং স্ট্যাকিং প্রসঙ্গ তৈরি করা বাদে z-indexঅন্য মানগুলি হয় ।autopositionstatic

5.4। জেড-অক্ষস অর্ডারিং: z-indexসম্পত্তি

গ্রিড আইটেমগুলির পেইন্টিং অর্ডার হ'ল ইনলাইন ব্লকগুলির সমান, কেবলমাত্র সেই অর্ডার-সংশোধিত ডকুমেন্ট অর্ডারটি কাঁচা ডকুমেন্ট অর্ডারের জায়গায় ব্যবহার করা হয় এবং স্ট্যাকিং প্রসঙ্গ তৈরি করা z-indexছাড়াও অন্য মানগুলি হয় ।autopositionstatic

এখানে z-indexঅবস্থানবিহীন নমনীয় আইটেমগুলিতে কাজ করার একটি প্রদর্শন রয়েছে : https://jsfiddle.net/m0wddwxs/


15
orderসম্পত্তি একটি সমাধান যেহেতু এটি কেবলমাত্র পরিবর্তন করতে দেয়ার উদ্দেশ্যে করা হচ্ছে নয় চাক্ষুষ আদেশ, তাই এটি নেই না মূল পুনরুদ্ধার semantical যাতে তোমরা কাজ করার জন্য এই কার্যসংক্রান্ত জন্য HTML পরিবর্তন করতে বাধ্য হয়।
মারাত তানালিন

2
@ মারাত তানালিন: 90% ব্যবহারের ক্ষেত্রে, ধরে নেওয়া ব্রাউজার সমর্থন কোনও সমস্যা নয়, এটি ঠিক কাজ করবে। ব্যবহারের বাকী 10% কেস হয় 1) এমন ক্ষেত্রে যেখানে ভিজ্যুয়াল ক্রম পরিবর্তন করা কোনও সমাধান নয়, বা 2) কেসগুলিতে সিএসএস জড়িত না। ধন্যবাদ, 2 #-র জন্য, নির্বাচক -4 প্রদান করে: রয়েছে (), এবং এটি কার্যকরভাবে নির্বাচিত গ্রন্থাগারগুলির বিকাশকারীদের উপর নির্ভর করে।
BoltClock

5
মনে রাখবেন যে CSS2.2 ইডিটি আপনি উদ্ধৃত করছেন সেটি হ'ল CSS2। এবং CSS2 এ ফ্লেক্সবক্স এবং গ্রিড লেআউটটির অস্তিত্ব নেই, তাই যতক্ষণ না সিএসএস 2 সম্পর্কিত তথ্য অবশ্যই সত্য holds খুব কমপক্ষে, পাঠ্যটি আপডেট করে বলা যেতে পারে যে সিএসএসের ভবিষ্যতের স্তরগুলিতে জেড-ইনডেক্স অন্যান্য ধরণের উপাদানগুলির জন্য প্রয়োগ হতে পারে, যেমন এটি বলে যে অন্যান্য বৈশিষ্ট্যগুলি অস্বচ্ছতার মতো স্ট্যাকিং প্রসঙ্গ স্থাপন করতে পারে।
BoltClock

3
যদি কারও বুঝতে কখন সমস্যা হয় z-index, এমনকি যখন "ওএমজি, সেখানে কোনও positionনির্দিষ্ট নেই!" তখনও স্পেসিফিকেশনটিতে স্ট্যাকিং প্রসঙ্গে ধারণাটি উল্লেখ করা হয়েছে , যা এমডিএন
রগিয়ার স্পিকারের

3
@ মিশেল_বি আপনাকে স্বাগতম! আমি এ সম্পর্কে অজানা অনেক ফ্রন্ট-এন্ডারদের সাথে ডিল করেছি। অন্য একটি জিনিস আমি উল্লেখ করতে চাই, ভুল পূর্ববর্তী সহোদর নির্বাচকওfloat: right (বা ক্রমটি বিপরীত করার জন্য অন্য কোনও উপায়ে, যার মধ্যে flex/orderখুব কম (অন্তত?) পার্শ্ব প্রতিক্রিয়া রয়েছে) এর সাথে সুন্দরভাবে কাজ করে । দুই fiddles আপ বেত্রাঘাত: প্রদর্শক float: rightপদ্ধতির , এবং প্রদর্শকdirection: rtl
Rogier Spieker

69

আমার একই প্রশ্ন ছিল, তবে তারপরে আমার একটি "দুহ" মুহুর্ত ছিল। লেখার বদলে

x ~ y

লেখার

y ~ x

স্পষ্টতই এই "y" এর পরিবর্তে "x" এর সাথে মেলে তবে এটির উত্তর দেয় "কোনও মিল আছে কি?" প্রশ্ন, এবং সাধারণ ডোম ট্র্যাভারসাল আপনাকে জাভাস্ক্রিপ্টে লুপিংয়ের চেয়ে আরও দক্ষতার সাথে সঠিক উপাদানটিতে পৌঁছে দিতে পারে।

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


18
আমি বিশ্বাস করি যে যখন y সহজেই পাওয়া যায় তখন কাজ করে। সমস্যাটি হ'ল যদি y কেবলমাত্র x এর সাথে সম্পর্কিত হয় এবং এটির বিপরীতে আপনি y খুঁজে পাবেন না কারণ আপনাকে প্রথমে x খুঁজে বের করতে হবে। এটি অবশ্যই পরবর্তীকালের চেয়ে y ভাইবোনের আগে হওয়ার প্রশ্নের সাথে সম্পর্কিত, তবে y নিম্নলিখিত ভাইবোন হওয়ার জন্যও আবেদন করতে পারে।
ডেভিড

19
তুমি একরকম কঠোর হর্ষ, হর্ষ। (দুঃখিত, প্রতিরোধ করতে পারেনি)) মুল বক্তব্যটি হ'ল কখনও কখনও আপনাকে "ওয়াই উপস্থিত আছে?" জানা দরকার know অন্যান্য সময় আপনি দুটি উপাদানগুলির মধ্যে কিছু রাখতে ": পূর্বে" ব্যবহার করতে পারেন। অবশেষে, আপনি যদি ("y ~ x") সন্ধান করে jQuery এ যেতে চান তবে পূর্ববর্তী () অনেক বিকল্পের চেয়ে সহজ।
ব্রায়ান লার্সেন

155
পূর্ববর্তী সহোদর নির্বাচকের ধারণাটি এটি পূর্ববর্তী উপাদানটি নির্বাচন করবে। দুর্ভাগ্যক্রমে, এখানে বর্ণিত হিসাবে এটিকে বিপরীত করা এই কার্যকারিতাটি সরবরাহ করে না।
জেনেক্সার

14
জেনেক্সারের এই জবাবটি আসল প্রশ্নের আসল সমাধান দেয় না বলে এই স্পষ্টতার জন্য ধন্যবাদ, আমি কীভাবে y ~ xআমার সমস্যার সমাধান করতে পারি সে সম্পর্কে নিজেকে বোকা ভাবতে শুরু করেছিলাম
জাইমে হাবলুটজেল

4
আমি এই উত্তরের পিছনে ধারণাটি বুঝতে পারি, তবে উত্তরে দেওয়া যুক্তিটি মোটেই বোঝা যায় না। নির্বাচক y ~ xজবাব দেয় না "কোন ম্যাচ আছে?" প্রশ্ন, কারণ এখানে দেওয়া দুজন নির্বাচক পুরোপুরি ভিন্ন জিনিস বোঝায়। উদাহরণস্বরূপ y ~ xসাবট্রির ভিত্তিতে কোনও মিল কোনও উত্পাদন করতে পারে না <root><x/><y/></root>। যদি প্রশ্নটি হয় "y কি আছে?" তারপরে নির্বাচকটি কেবল সহজভাবে y। যদি প্রশ্নটি হয় "কোনও স্বেচ্ছাচারী অবস্থানে কোনও ভাইবোন এক্স দেওয়া আছে কি?" তাহলে আপনার উভয় নির্বাচক প্রয়োজন । (যদিও আমি সম্ভবত এই মুহুর্তে
নিটপিক

25

দুটি কৌশল । মূলত এইচটিএমএলে আপনার পছন্দসই উপাদানগুলির এইচটিএমএল ক্রমটি উল্টানো এবং
~ পরবর্তী ভাইবোন অপারেটর ব্যবহার করে :

float-right + এইচটিএমএল উপাদানগুলির ক্রম বিপরীত

div{ /* Do with the parent whatever you know just to make the
  inner float-right elements appear where desired */
  display:inline-block;
}
span{
  float:right;  /* float-right the elements! */
}
span:hover ~ span{ /* On hover target it's "previous";) elements */
  background:red;
} 
<div>
  <!-- Reverse the order of inner elements -->
  <span>5</span>
  <span>4</span>
  <span>3</span>
  <span>2</span>
  <span>1</span>
</div>


সঙ্গে মূল direction: rtl;ভেতরের উপাদানের ক্রম বিপরীত +

.inverse{
  direction: rtl;
  display: inline-block; /* inline-block to keep parent at the left of window */
}
span:hover ~ span{ /* On hover target it's "previous";) elements */
  background:gold;
}
Hover one span and see the previous elements being targeted!<br>

<div class="inverse">
  <!-- Reverse the order of inner elements -->
  <span>5</span>
  <span>4</span>
  <span>3</span>
  <span>2</span>
  <span>1</span>
</div>


25

+পরের ভাইবোনের জন্য আগের ভাইবোনের সমতুল্য কি আছে?

আপনি দুটি কুড়াল নির্বাচক ব্যবহার করতে পারেন : !এবং?

আছে 2 পরবর্তী সহোদর নির্বাচকরা প্রচলিত CSS এ:

  • +হয় অবিলম্বে পরবর্তী সহোদর নির্বাচক
  • ~পরবর্তী যে কোন ভাইবোন নির্বাচনকারী is

প্রচলিত সিএসএসে পূর্ববর্তী কোন ভাইবোন নির্বাচনকারী নেই

তবে, অক্ষের সিএসএস পোস্ট-প্রসেসরের লাইব্রেরিতে পূর্ববর্তী 2 জন ভাইব্ল নির্বাচক রয়েছে :

  • ?হয় অবিলম্বে (বিপরীত পূর্ববর্তী সহোদর নির্বাচক +)
  • !হয় কোনো (বিপরীত পূর্ববর্তী সহোদর নির্বাচক ~)

কাজের উদাহরণ:

নীচের উদাহরণে:

  • .any-subsequent:hover ~ div পরবর্তী যে কোনওটি নির্বাচন করে div
  • .immediate-subsequent:hover + div তাত্ক্ষণিক পরবর্তী নির্বাচন করে div
  • .any-previous:hover ! div পূর্বের যেকোনটি নির্বাচন করে div
  • .immediate-previous:hover ? div তাত্ক্ষণিক পূর্ববর্তী নির্বাচন করে div

div {
  display: inline-block;
  width: 60px;
  height: 100px;
  color: rgb(255, 255, 255);
  background-color: rgb(255, 0, 0);
  text-align: center;
  vertical-align: top;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.6s ease-out;
}

code {
  display: block;
  margin: 4px;
  font-size: 24px;
  line-height: 24px;
  background-color: rgba(0, 0, 0, 0.5);
}

div:nth-of-type(-n+4) {
  background-color: rgb(0, 0, 255);
}

div:nth-of-type(n+3):nth-of-type(-n+6) {
  opacity: 1;
}

.any-subsequent:hover ~ div,
.immediate-subsequent:hover + div,
.any-previous:hover ! div,
.immediate-previous:hover ? div {
  opacity: 1;
}
<h2>Hover over any of the blocks below</h2>

<div></div>
<div></div>

<div class="immediate-previous">Hover for <code>?</code> selector</div>
<div class="any-previous">Hover for <code>!</code> selector</div>
<div class="any-subsequent">Hover for <code>~</code> selector</div>
<div class="immediate-subsequent">Hover for <code>+</code> selector</div>

<div></div>
<div></div>

<script src="https://rouninmedia.github.io/axe/axe.js"></script>


3
যখন আমি রেল প্রকল্পের ভিতরে স্যাসে এটি প্রয়োগ করার চেষ্টা করি তখন এটি আমাকে একটি সিনট্যাক্স ত্রুটি দেয়।
অ্যালেক্স

25
কুড়াল একটি সিএসএস পোস্ট প্রসেসর। এটি সিএসএস প্রি-প্রসেসরের যেমন সাস, কম বা স্টাইলাসের মতো একই সিনট্যাক্স ব্যবহার করে না।
রাউনিন

1
@ রউনিন আপনি কিছু ডকুমেন্টেশন লিঙ্ক যুক্ত করতে আপত্তি করবেন? আমি কুড়াল পোস্ট প্রসেসর খুঁজে পাই না ।
Dionys

@ ডায়নিস - আপনার আগ্রহের জন্য ধন্যবাদ কুড়াল এমন একটি প্রকল্প যা আমি ২০১ late সালের শেষদিকে শুরু করেছি, যখন আমি ES2015 জানতাম না এবং জেএসে থাকা সামগ্রীগুলিও আমার কাছে খুব নতুন ছিল। গিটহাব সংগ্রহস্থলটি এখানে: github.com/RouninMedia/axe । আমি এখানে ফিরে আসার খুব অর্থ চাইছি (আমি জাভা-স্ক্রিপ্ট ইভেন্টগুলির সিএসএস সমতুল্য অ্যাক্স -ব্লেড নামেও কিছু বিকাশ করেছি ), তবে আমার প্রথমে অন্য প্রকল্পে (কোডনাম আশিব ) কাজ শেষ করা দরকার।
রাউনিন

17

আরেকটি ফ্লেক্সবক্স সমাধান

আপনি এইচটিএমএলে উপাদানগুলির ক্রম বিপরীত ব্যবহার করতে পারেন। তারপরে ব্যবহারের পাশাপাশিorder মাইকেল_বি এর উত্তর হিসাবে আপনি ব্যবহার করতে পারেন flex-direction: row-reverse;বা flex-direction: column-reverse;আপনার বিন্যাসের উপর নির্ভর করে।

কাজের নমুনা:

.flex {
  display: flex;
  flex-direction: row-reverse;
   /* Align content at the "reversed" end i.e. beginning */
  justify-content: flex-end;
}

/* On hover target its "previous" elements */
.flex-item:hover ~ .flex-item {
  background-color: lime;
}

/* styles just for demo */
.flex-item {
  background-color: orange;
  color: white;
  padding: 20px;
  font-size: 3rem;
  border-radius: 50%;
}
<div class="flex">
  <div class="flex-item">5</div>
  <div class="flex-item">4</div>
  <div class="flex-item">3</div>
  <div class="flex-item">2</div>
  <div class="flex-item">1</div>
</div>


16

এই মুহুর্তে এটি করার কোনও আনুষ্ঠানিক উপায় নেই তবে আপনি এটি অর্জন করতে একটি কৌশলটি ব্যবহার করতে পারেন! মনে রাখবেন এটি পরীক্ষামূলক এবং এর কিছু সীমাবদ্ধতা রয়েছে ... ( আপনি যদি নেভিগেটরের সামঞ্জস্যের বিষয়ে উদ্বিগ্ন হন তবে এই লিঙ্কটি পরীক্ষা করুন )

আপনি যা করতে পারেন তা হ'ল একটি CSS3 নির্বাচক ব্যবহার করুন: সিউডো সংঘর্ষ বলে nth-child()

#list>* {
  display: inline-block;
  padding: 20px 28px;
  margin-right: 5px;
  border: 1px solid #bbb;
  background: #ddd;
  color: #444;
  margin: 0.4em 0;
}

#list :nth-child(-n+4) {
  color: #600b90;
  border: 1px dashed red;
  background: orange;
}
<p>The oranges elements are the previous sibling li selected using li:nth-child(-n+4)</p>

<div id="list">
  <span>1</span><!-- this will be selected -->
  <p>2</p><!-- this will be selected -->
  <p>3</p><!-- this will be selected -->
  <div>4</div><!-- this will be selected -->
  <div>5</div>
  <p>6</p>
  <p>7</p>
  <p>8</p>
  <p>9</p>
</div>

সীমাবদ্ধতা

  • আপনি পরবর্তী উপাদানগুলির শ্রেণীর উপর ভিত্তি করে পূর্ববর্তী উপাদান নির্বাচন করতে পারবেন না
  • এটি সিউডো ক্লাসগুলির জন্য একই

1
@ আইয়ান কারণ এটি :nth-child(-n+4)একটি ছদ্ম শ্রেণি যা সঠিকভাবে কাজ করার জন্য কোনও নির্বাচককে প্রয়োগ করা দরকার। আপনি যদি বিশ্বাসী না হন তবে আমার
ফিডলের

1
প্রকৃতপক্ষে, আপনি *নির্বাচকটি ব্যবহার করে নোড-টাইপ ইন্ডিপেন্ডেন্টে যেতে পারেন , তবে এটি অত্যন্ত খারাপ অভ্যাস।
জোশ বুর্গেস

1
এটি আমার পক্ষে কাজ করে এমন উত্তর, কেন এটি উচ্চতর ভোট দেওয়া হয়নি বা গৃহীত হয়েছে তা নিশ্চিত নয়।
জ্যাক ক্যাটরেল

1
আসলে, এটি বিভিন্ন নোডের জন্য কাজ করে: jsfiddle.net/aLhv9r1w/316 । দয়া করে আপনার উত্তর আপডেট করুন :)
জ্যামি বার্কার

1
আমার একটি জটিল নির্বাচক ছিল, তবে আসুন এটি বলে দিন li#someListItemএবং আমি এর ঠিক আগে নোড (গুলি) চেয়েছিলাম (যা আমি "পূর্ববর্তী" কীভাবে ব্যাখ্যা করি) - আপনি যে তথ্য সরবরাহ করেছেন তা কীভাবে CSS এর মাধ্যমে তা প্রকাশ করতে আমাকে সহায়তা করতে পারে তা আমি দেখতে পাই না। আপনি কেবল প্রথম এন ভাইবোন নির্বাচন করছেন, এবং ধরে নিন আমি এনকে জানি। এই যুক্তির ভিত্তিতে, যে কোনও নির্বাচক কৌশলটি করতে পারে এবং আমার প্রয়োজনীয় উপাদানগুলি (যেমন: নয় ()) নির্বাচন করতে পারে।
বিটুলিয়ান

4

আপনি যদি সঠিক অবস্থানটি জানেন তবে :nth-child()নীচের সমস্ত ভাইবোনদের ভিত্তিক বর্জন কাজ করবে।

ul li:not(:nth-child(n+3))

যা liতৃতীয় (যেমন প্রথম এবং দ্বিতীয়) এর আগে সমস্ত নির্বাচন করবে । তবে, আমার মতে এটি দেখতে কুরুচিপূর্ণ এবং খুব শক্ত ইউজকেস রয়েছে।

আপনি ডান থেকে বামে নবম সন্তানের বাছাই করতে পারেন:

ul li:nth-child(-n+2)

যা একই কাজ করে।


3

না। এটি সিএসএসের মাধ্যমে সম্ভব নয়। এটি "ক্যাসকেড" হৃদয়ে নিয়ে যায় ;-)।


তবে আপনি যদি নিজের পৃষ্ঠাতে জাভাস্ক্রিপ্ট যুক্ত করতে সক্ষম হন তবে কিছুটা jQuery আপনাকে আপনার শেষ লক্ষ্যে পৌঁছে দিতে পারে।
আপনি findআপনার টার্গেট এলিমেন্ট / ক্লাস / আইডিতে "লুক-ফরোয়ার্ড" সম্পাদন করতে jQuery গুলি ব্যবহার করতে পারেন , তারপরে আপনার লক্ষ্য নির্বাচন করতে ব্যাকট্র্যাক করুন।
তারপরে আপনি আপনার উপাদানটির জন্য ডওএম (সিএসএস) পুনরায় লেখার জন্য jQuery ব্যবহার করেন।

মাইক ব্রেন্টের এই উত্তরের ভিত্তিতে , নীচের jQuery স্নিপেট সাহায্য করতে পারে।

$('p + ul').prev('p')

এটি প্রথমে সমস্তগুলি নির্বাচন করে <ul>যা তত্ক্ষণাত্ অনুসরণ করে <p>
তারপরে এটির " <p>সেট " থেকে পূর্ববর্তী সমস্তগুলি নির্বাচন করা "ব্যাকট্র্যাকস" <ul>

কার্যকরভাবে, jQuery এর মাধ্যমে "পূর্ববর্তী ভাইবোন" নির্বাচন করা হয়েছে।
এখন, .cssসেই উপাদানটির জন্য আপনার সিএসএসের নতুন মানগুলিতে পাস করতে ফাংশনটি ব্যবহার করুন ।


আমার ক্ষেত্রে আমি আইডি দিয়ে একটি ডিআইভি নির্বাচন করার উপায় খুঁজছিলাম #full-width, তবে কেবলমাত্র এর শ্রেণীর সাথে যদি কোনও (অপ্রত্যক্ষ) বংশধর ডিআইভি থাকত .companies

আমার অধীনে সমস্ত এইচটিএমএল নিয়ন্ত্রণ ছিল .companies, কিন্তু উপরে এইচটিএমএল কোনও পরিবর্তন করতে পারে না।
এবং ক্যাসকেডটি কেবল 1 টি দিক: নীচে।

সুতরাং আমি সব #full-widthগুলি নির্বাচন করতে পারে ।
বা আমি নির্বাচন .companiesকরতে পারে যে শুধুমাত্র একটি অনুসরণ #full-width
কিন্তু আমি পারতাম না শুধুমাত্র নির্বাচন #full-widthযে গুলি রইল .companies

এবং আবারও, আমি যুক্ত করতে অক্ষম ছিল .companies এইচটিএমএলে কোনও উচ্চতর । এইচটিএমএলের সেই অংশটি বাহ্যিকভাবে লেখা হয়েছিল এবং আমাদের কোডটি মোড়ানো ছিল।

তবে jQuery এর সাহায্যে আমি প্রয়োজনীয় গুলি নির্বাচন করতে পারি #full-width, তারপরে উপযুক্ত স্টাইলটি নির্ধারণ করতে পারি:

$("#full-width").find(".companies").parents("#full-width").css( "width", "300px" );

এটি সমস্তটি সন্ধান করে এবং সিএসএসের স্ট্যান্ডার্ডে নির্দিষ্ট উপাদানগুলিকে লক্ষ্য করতে নির্বাচকরা কীভাবে ব্যবহৃত হয় তার অনুরূপ #full-width .companiesকেবল সেগুলিই নির্বাচন .companiesকরে।
তারপরে এটি .parents"ব্যাকট্র্যাক" ব্যবহার করে এবং এর সমস্ত পিতামাতাকে নির্বাচন করে .companies,
তবে কেবলমাত্র #fill-widthউপাদানগুলি রাখতে এই ফলাফলগুলি ফিল্টার করে , যাতে শেষ পর্যন্ত,
এটি কেবলমাত্র একটি #full-widthউপাদান নির্বাচন করে যদি এটির .companiesশ্রেণি বংশধর থাকে।
অবশেষে, এটি widthফলাফলের উপাদানকে একটি নতুন সিএসএস ( ) মূল্য দেয়।

$(".parent").find(".change-parent").parents(".parent").css( "background-color", "darkred");
div {
  background-color: lightblue;
  width: 120px;
  height: 40px;
  border: 1px solid gray;
  padding: 5px;
}
.wrapper {
  background-color: blue;
  width: 250px;
  height: 165px;
}
.parent {
  background-color: green;
  width: 200px;
  height: 70px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
<div class="wrapper">

  <div class="parent">
    "parent" turns red
    <div class="change-parent">
    descendant: "change-parent"
    </div>
  </div>
  
  <div class="parent">
    "parent" stays green
    <div class="nope">
    descendant: "nope"
    </div>
  </div>
  
</div>
Target <b>"<span style="color:darkgreen">parent</span>"</b> to turn <span style="color:red">red</span>.<br>
<b>Only</b> if it <b>has</b> a descendant of "change-parent".<br>
<br>
(reverse cascade, look ahead, parent un-descendant)
</html>

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


এই প্রশ্নের সাথে কোন সম্পর্ক নেই। অবশ্যই এটি জেএস ব্যবহার করা সম্ভব এবং এর জন্য আপনার জিক্যুরির প্রয়োজনও নেই (previousElementSibling ) এর ।
ফ্যাবিয়ান ভন এলার্টস

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

previousElementSibling()নেটিভ জেএস ডোম ফাংশনের সাথে আরও বেশি পরিচিত তাদের জন্য আরও একটি নন-সিএসএস পথ এগিয়ে দিতে পারে।
শারিলহোহমান

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

2

দুর্ভাগ্যক্রমে কোনও "পূর্ববর্তী" ভাইবোন নির্বাচনকারী নেই, তবে আপনি সম্ভবত এটি করতে পারেন পজিশনিং (উদাহরণস্বরূপ ডানদিকে ডান) ব্যবহার করে একই প্রভাব পেতে । এটি আপনি যা করার চেষ্টা করছেন তার উপর নির্ভর করে।

আমার ক্ষেত্রে, আমি একটি প্রাথমিকভাবে সিএসএস 5-তারা রেটিং সিস্টেম চেয়েছিলাম। আমি পূর্ববর্তী তারার রঙ করতে (বা আইকন অদলবদল) করতে চাই। প্রতিটি উপাদানকে ডানদিকে ভাসিয়ে আমি মূলত একই প্রভাব পাচ্ছি (তারার জন্য এইচটিএমএল অবশ্যই 'পিছনের দিকে' লেখা উচিত)।

আমি এই উদাহরণটিতে ফন্টআউজ ব্যবহার করছি এবং এফ-স্টার-ও এবং এফ-স্টারের ইউনিকোডগুলির মধ্যে অদলবদল করছি http://fortawesome.github.io/Font-Awesome/

সিএসএস:

.fa {
    display: inline-block;
    font-family: FontAwesome;
    font-style: normal;
    font-weight: normal;
    line-height: 1;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* set all stars to 'empty star' */
.stars-container {
    display: inline-block;      
}   

/* set all stars to 'empty star' */
.stars-container .star {
    float: right;
    display: inline-block;
    padding: 2px;
    color: orange;
    cursor: pointer;

}

.stars-container .star:before {
    content: "\f006"; /* fontAwesome empty star code */
}

/* set hovered star to 'filled star' */
.star:hover:before{
    content: "\f005"; /* fontAwesome filled star code */
}

/* set all stars after hovered to'filled star' 
** it will appear that it selects all after due to positioning */
.star:hover ~ .star:before {
    content: "\f005"; /* fontAwesome filled star code */
}

এইচটিএমএল: (40)

JSFiddle: http://jsfiddle.net/andrewleyva/88j0105g/


1
ডান দিকে ভাসান এবং +বা ~নির্বাচকরা আমাকে সবচেয়ে পরিষ্কার কাজ হিসাবে আঘাত করে।
উইলিয়াম জড 21

2

আপনার সঠিক উদ্দেশ্যটির উপর নির্ভর করে একটি ব্যবহার না করে পিতা-মাতা নির্বাচকটির উপযোগিতা অর্জনের একটি উপায় রয়েছে (এমনকি যদি এটি উপস্থিত থাকত তবেও) ...

বলুন আমাদের আছে:

<div>
  <ul>
    <li><a>Pants</a></li>
    <li><a>Socks</a></li>
    <ul>
      <li><a>White socks</a></li>
      <li><a>Blue socks</a></li>
    </ul>
  </ul>
</div>

মোজা ব্লক (মোজা রঙ সহ) স্পেসিং ব্যবহার করে দর্শনীয়ভাবে দাঁড় করানোর জন্য আমরা কী করতে পারি?

কি সুন্দর হবে কিন্তু বিদ্যমান নেই:

ul li ul:parent {
  margin-top: 15px;
  margin-bottom: 15px;
}

কি বিদ্যমান:

li > a {
  margin-top: 15px;
  display: block;
}
li > a:only-child {
  margin-top: 0px;
}

এটি সমস্ত অ্যাঙ্কর লিঙ্কগুলি শীর্ষে 15px মার্জিনে সেট করে এবং এলআই এর ভিতরে কোনও এল এল উপাদান (বা অন্যান্য ট্যাগ) নেই তাদের জন্য এটি 0 এ পুনরায় সেট করে।


2

পূর্ববর্তী ভাইবোন টিআর নির্বাচন করার জন্য আমার একটি সমাধান দরকার। আমি প্রতিক্রিয়া এবং স্টাইলযুক্ত উপাদান ব্যবহার করে এই সমাধানটি নিয়ে এসেছি। এটি আমার সঠিক সমাধান নয় (এটি মেমরি থেকে, কয়েক ঘন্টা পরে)। আমি জানি হিটলাইটার র ফাংশনটিতে একটি ত্রুটি রয়েছে।

অনমাউসভারের উপরে একটি সারিটি সারি সূচকে রাজ্যে সেট করে এবং নতুন পটভূমির রঙের সাথে পূর্ববর্তী সারিটি পুনরায় সরবরাহ করবে

class ReactClass extends Component {
  constructor() {
    this.state = {
       highlightRowIndex: null
    }
  }

  setHighlightedRow = (index) => {
    const highlightRowIndex = index === null ? null : index - 1;
    this.setState({highlightRowIndex});
  }

  render() {
    return (
       <Table>
        <Tbody>
           {arr.map((row, index) => {
                const isHighlighted = index === this.state.highlightRowIndex
                return {
                    <Trow 
                        isHighlighted={isHighlighted}
                        onMouseOver={() => this.setHighlightedRow(index)}
                        onMouseOut={() => this.setHighlightedRow(null)}
                        >
                        ...
                    </Trow>
                }
           })}  
        </Tbody>   
       </Table>
    )
  }
}

const Trow = styled.tr`
    & td {
        background-color: ${p => p.isHighlighted ? 'red' : 'white'};
    }

    &:hover {
        background-color: red;
    }
`;

-1

আমারও অনুরূপ সমস্যা ছিল এবং আমি জানতে পেরেছিলাম যে এই প্রকৃতির সমস্ত সমস্যা নীচে সমাধান করা যেতে পারে:

  1. আপনার সমস্ত আইটেম একটি স্টাইল দিন।
  2. আপনার নির্বাচিত আইটেম একটি স্টাইল দিন।
  3. পরবর্তী আইটেমগুলিকে + বা using ব্যবহার করে একটি স্টাইল দিন ~

এবং এইভাবে আপনি আপনার বর্তমান, পূর্ববর্তী আইটেমগুলি (সমস্ত আইটেম বর্তমান এবং পরবর্তী আইটেমগুলিতে ওভাররাইড করা) এবং আপনার পরবর্তী আইটেমগুলিকে স্টাইল করতে সক্ষম হবেন।

উদাহরণ:

/* all items (will be styled as previous) */
li {
  color: blue;
}

/* the item i want to distinguish */
li.milk {
  color: red;
}

/* next items */
li ~ li  {
  color: green;
}


<ul>
  <li>Tea</li>
  <li class="milk">Milk</li>
  <li>Juice</li>
  <li>others</li>
</ul>

আশা করি এটি কাউকে সাহায্য করবে।


1
: এটা মূলত একই থ্রেড থেকে পুরোনো উত্তরে হিসাবে একই কৌতুক এর stackoverflow.com/a/27993987/717732
quetzalcoatl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.