প্লাস চিহ্ন ( +
) পরবর্তী ভাইবোনের জন্য।
আগের ভাইবোনের সমতুল্য কি আছে?
প্লাস চিহ্ন ( +
) পরবর্তী ভাইবোনের জন্য।
আগের ভাইবোনের সমতুল্য কি আছে?
উত্তর:
না, কোনও "পূর্ববর্তী ভাইবোন" নির্বাচক নেই।
সম্পর্কিত নোটে, ~
সাধারণ উত্তরাধিকারী ভাইবিলিংয়ের জন্য (অর্থ উপাদানটির পরে এটি আসে তবে তাৎক্ষণিক পরে তা নয়) এবং এটি সিএসএস 3 নির্বাচক। +
পরবর্তী ভাইবোনের জন্য এবং CSS2.1 হয়।
নির্বাচনকারী স্তর স্তর 3 এবং 5.7 থেকে সংলগ্ন ভাইবিলি সংযোগকারী দেখুন ক্যাসকেডিং স্টাইল শীট স্তর 2 সংশোধনী 1 (সিএসএস 2.1) নির্দিষ্টকরণ থেকে সংলগ্ন ভাইবোলে নির্বাচনকারীগণ ।
আমি পূর্ববর্তী সমস্ত ভাইবোনদের বিপরীতে স্টাইল করার একটি উপায় পেয়েছি ~
যা আপনার প্রয়োজনের উপর নির্ভর করে কাজ করতে পারে 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>
float:right
) পুনরায় সাজানোর দরকার নেই । এটির জন্য মার্জিনের পরিবর্তে ইউনিট / শব্দ এবং প্যাডিংয়ের মধ্যে একটি সাদা-স্থানের ধসের প্রয়োজন ছিল, তবে এটি অন্যথায় পুরোপুরি কার্যকর হয়!
নির্বাচক স্তর 4 প্রবর্তন করে:has()
(পূর্বে বিষয় সূচক !
) যা আপনাকে পূর্ববর্তী সহোদরগুলি নির্বাচন করার অনুমতি দেয়:
previous:has(+ next) {}
… তবে লেখার সময় এটি ব্রাউজার সমর্থনের জন্য রক্তপাতের প্রান্তের কিছুটা দূরে।
:has()
সিউডো-ক্লাস ব্যবহার করতে পারে না ।
order
ফ্লেক্স এবং গ্রিড লেআউটের সম্পত্তি বিবেচনা করুন ।আমি নীচের উদাহরণগুলিতে ফ্লেক্সবক্সে ফোকাস করব, তবে গ্রিডে একই ধারণাগুলি প্রযোজ্য।
ফ্লেক্সবক্সের সাহায্যে পূর্ববর্তী সহোদর নির্বাচককে অনুকরণ করা যায়।
বিশেষত, ফ্লেক্স order
সম্পত্তি পর্দার চারপাশে উপাদানগুলি সরাতে পারে।
এখানে একটি উদাহরণ:
আপনি উপাদান এলটি লাল হয়ে যাওয়ার জন্য উপাদান এলটি লাল করতে চান।
<ul> <li>A</li> <li>B</li> </ul>
STEPS টি
ul
একটি ফ্লেক্স পাত্রে তৈরি করুন ।
ul { display: flex; }
মার্ক আপে ভাইবোনদের ক্রমটি বিপরীত করুন।
<ul>
<li>B</li>
<li>A</li>
</ul>
এলিমেন্ট এ ( ~
বা +
করবে) টার্গেট করতে কোনও ভাইবোন নির্বাচনকারী ব্যবহার করুন ।
li:hover + li { background-color: red; }
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>
ফ্লেক্সবক্স সিএসএস সম্পর্কে দীর্ঘস্থায়ী বিশ্বাসকে ছিন্নভিন্ন করে দিচ্ছে।
এরকম একটি বিশ্বাস সিএসএসে পূর্ববর্তী ভাই-বোন নির্বাচন করা সম্ভব নয় ।
এই বিশ্বাসটি যে ব্যাপকভাবে বলা যায় তা একটি সংক্ষিপ্ত বিবরণ হবে। একা স্ট্যাক ওভারফ্লো সম্পর্কিত সম্পর্কিত প্রশ্নগুলির নমুনা এখানে দেওয়া হয়েছে:
উপরে বর্ণিত হিসাবে, এই বিশ্বাস সম্পূর্ণ সত্য নয়। কোনও পূর্ববর্তী সহোদর নির্বাচক ফ্লেক্স order
সম্পত্তি ব্যবহার করে সিএসএসে অনুকরণ করা যায় ।
z-index
মিথ
আর একটি দীর্ঘস্থায়ী বিশ্বাস হ'ল যে z-index
কেবল অবস্থিত উপাদানগুলিতে কাজ করে।
প্রকৃতপক্ষে, ডেস্কটপটির সর্বাধিক বর্তমান সংস্করণ - ডাব্লু 3 সি সম্পাদকের খসড়া এখনও এটি সত্য বলে দাবি করে:
9.9.1 স্ট্যাক স্তর নির্দিষ্ট করে:
z-index
সম্পত্তি
z-index
- মান: অটো | | উত্তরাধিকারী
- প্রাথমিক: অটো
- প্রযোজ্য: অবস্থানযুক্ত উপাদান
- উত্তরাধিকারী: না
- শতাংশ: এন / এ
- মিডিয়া: ভিজ্যুয়াল
- গণিত মান: নির্দিষ্ট হিসাবে as
(সামনে জোর দাও)
বাস্তবে, তবে, এই তথ্য অপ্রচলিত এবং সঠিক নয় urate
উপাদানসমূহ যে আনমন আইটেম বা গ্রিড আইটেম প্রেক্ষিতে এমনকি সারিবদ্ধ যখন তৈরি করতে পারেন position
হয় static
।
4.3। ফ্লেক্স আইটেম জেড-অর্ডারিং
ফ্লেক্স আইটেমগুলি হ'ল ইনলাইন ব্লকগুলির মতো হুবহু চিত্র আঁকায়, ব্যতীত অর্ডার-সংশোধিত ডকুমেন্ট অর্ডারটি কাঁচা ডকুমেন্ট অর্ডারের জায়গায় ব্যবহার করা হয় এবং স্ট্যাকিং প্রসঙ্গ তৈরি করা বাদে
z-index
অন্য মানগুলি হয় ।auto
position
static
5.4। জেড-অক্ষস অর্ডারিং:
z-index
সম্পত্তিগ্রিড আইটেমগুলির পেইন্টিং অর্ডার হ'ল ইনলাইন ব্লকগুলির সমান, কেবলমাত্র সেই অর্ডার-সংশোধিত ডকুমেন্ট অর্ডারটি কাঁচা ডকুমেন্ট অর্ডারের জায়গায় ব্যবহার করা হয় এবং স্ট্যাকিং প্রসঙ্গ তৈরি করা
z-index
ছাড়াও অন্য মানগুলি হয় ।auto
position
static
এখানে z-index
অবস্থানবিহীন নমনীয় আইটেমগুলিতে কাজ করার একটি প্রদর্শন রয়েছে : https://jsfiddle.net/m0wddwxs/
order
সম্পত্তি একটি সমাধান যেহেতু এটি কেবলমাত্র পরিবর্তন করতে দেয়ার উদ্দেশ্যে করা হচ্ছে নয় চাক্ষুষ আদেশ, তাই এটি নেই না মূল পুনরুদ্ধার semantical যাতে তোমরা কাজ করার জন্য এই কার্যসংক্রান্ত জন্য HTML পরিবর্তন করতে বাধ্য হয়।
z-index
, এমনকি যখন "ওএমজি, সেখানে কোনও position
নির্দিষ্ট নেই!" তখনও স্পেসিফিকেশনটিতে স্ট্যাকিং প্রসঙ্গে ধারণাটি উল্লেখ করা হয়েছে , যা এমডিএন
float: right
(বা ক্রমটি বিপরীত করার জন্য অন্য কোনও উপায়ে, যার মধ্যে flex/order
খুব কম (অন্তত?) পার্শ্ব প্রতিক্রিয়া রয়েছে) এর সাথে সুন্দরভাবে কাজ করে । দুই fiddles আপ বেত্রাঘাত: প্রদর্শক float: right
পদ্ধতির , এবং প্রদর্শকdirection: rtl
আমার একই প্রশ্ন ছিল, তবে তারপরে আমার একটি "দুহ" মুহুর্ত ছিল। লেখার বদলে
x ~ y
লেখার
y ~ x
স্পষ্টতই এই "y" এর পরিবর্তে "x" এর সাথে মেলে তবে এটির উত্তর দেয় "কোনও মিল আছে কি?" প্রশ্ন, এবং সাধারণ ডোম ট্র্যাভারসাল আপনাকে জাভাস্ক্রিপ্টে লুপিংয়ের চেয়ে আরও দক্ষতার সাথে সঠিক উপাদানটিতে পৌঁছে দিতে পারে।
আমি বুঝতে পারি যে আসল প্রশ্নটি সিএসএসের প্রশ্ন ছিল তাই এই উত্তরটি সম্ভবত সম্পূর্ণ অপ্রাসঙ্গিক, তবে অন্যান্য জাভাস্ক্রিপ্ট ব্যবহারকারীরা যেমন অনুসন্ধান করেছিলেন তেমন অনুসন্ধানের মাধ্যমেও হোঁচট খেতে পারে।
y ~ x
আমার সমস্যার সমাধান করতে পারি সে সম্পর্কে নিজেকে বোকা ভাবতে শুরু করেছিলাম
y ~ x
জবাব দেয় না "কোন ম্যাচ আছে?" প্রশ্ন, কারণ এখানে দেওয়া দুজন নির্বাচক পুরোপুরি ভিন্ন জিনিস বোঝায়। উদাহরণস্বরূপ y ~ x
সাবট্রির ভিত্তিতে কোনও মিল কোনও উত্পাদন করতে পারে না <root><x/><y/></root>
। যদি প্রশ্নটি হয় "y কি আছে?" তারপরে নির্বাচকটি কেবল সহজভাবে y
। যদি প্রশ্নটি হয় "কোনও স্বেচ্ছাচারী অবস্থানে কোনও ভাইবোন এক্স দেওয়া আছে কি?" তাহলে আপনার উভয় নির্বাচক প্রয়োজন । (যদিও আমি সম্ভবত এই মুহুর্তে
দুটি কৌশল । মূলত এইচটিএমএলে আপনার পছন্দসই উপাদানগুলির এইচটিএমএল ক্রমটি উল্টানো এবং
~
পরবর্তী ভাইবোন অপারেটর ব্যবহার করে :
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>
+
পরের ভাইবোনের জন্য আগের ভাইবোনের সমতুল্য কি আছে?
!
এবং?
আছে 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>
আপনি এইচটিএমএলে উপাদানগুলির ক্রম বিপরীত ব্যবহার করতে পারেন। তারপরে ব্যবহারের পাশাপাশি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>
এই মুহুর্তে এটি করার কোনও আনুষ্ঠানিক উপায় নেই তবে আপনি এটি অর্জন করতে একটি কৌশলটি ব্যবহার করতে পারেন! মনে রাখবেন এটি পরীক্ষামূলক এবং এর কিছু সীমাবদ্ধতা রয়েছে ... ( আপনি যদি নেভিগেটরের সামঞ্জস্যের বিষয়ে উদ্বিগ্ন হন তবে এই লিঙ্কটি পরীক্ষা করুন )
আপনি যা করতে পারেন তা হ'ল একটি 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>
:nth-child(-n+4)
একটি ছদ্ম শ্রেণি যা সঠিকভাবে কাজ করার জন্য কোনও নির্বাচককে প্রয়োগ করা দরকার। আপনি যদি বিশ্বাসী না হন তবে আমার
*
নির্বাচকটি ব্যবহার করে নোড-টাইপ ইন্ডিপেন্ডেন্টে যেতে পারেন , তবে এটি অত্যন্ত খারাপ অভ্যাস।
li#someListItem
এবং আমি এর ঠিক আগে নোড (গুলি) চেয়েছিলাম (যা আমি "পূর্ববর্তী" কীভাবে ব্যাখ্যা করি) - আপনি যে তথ্য সরবরাহ করেছেন তা কীভাবে CSS এর মাধ্যমে তা প্রকাশ করতে আমাকে সহায়তা করতে পারে তা আমি দেখতে পাই না। আপনি কেবল প্রথম এন ভাইবোন নির্বাচন করছেন, এবং ধরে নিন আমি এনকে জানি। এই যুক্তির ভিত্তিতে, যে কোনও নির্বাচক কৌশলটি করতে পারে এবং আমার প্রয়োজনীয় উপাদানগুলি (যেমন: নয় ()) নির্বাচন করতে পারে।
আপনি যদি সঠিক অবস্থানটি জানেন তবে :nth-child()
নীচের সমস্ত ভাইবোনদের ভিত্তিক বর্জন কাজ করবে।
ul li:not(:nth-child(n+3))
যা li
তৃতীয় (যেমন প্রথম এবং দ্বিতীয়) এর আগে সমস্ত নির্বাচন করবে । তবে, আমার মতে এটি দেখতে কুরুচিপূর্ণ এবং খুব শক্ত ইউজকেস রয়েছে।
আপনি ডান থেকে বামে নবম সন্তানের বাছাই করতে পারেন:
ul li:nth-child(-n+2)
যা একই কাজ করে।
না। এটি সিএসএসের মাধ্যমে সম্ভব নয়। এটি "ক্যাসকেড" হৃদয়ে নিয়ে যায় ;-)।
তবে আপনি যদি নিজের পৃষ্ঠাতে জাভাস্ক্রিপ্ট যুক্ত করতে সক্ষম হন তবে কিছুটা 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
) এর ।
previousElementSibling()
নেটিভ জেএস ডোম ফাংশনের সাথে আরও বেশি পরিচিত তাদের জন্য আরও একটি নন-সিএসএস পথ এগিয়ে দিতে পারে।
+
(অস্তিত্বহীন) নির্বাচক ব্যবহার করে যা ওপি বিশেষত জিজ্ঞাসা করেছিল। এই উত্তরটি একটি জেএস "হ্যাক" বিবেচনা করুন। সমাধানের সন্ধান করতে আমি অন্য কারও সময় কাটিয়েছি এটি এখানে।
দুর্ভাগ্যক্রমে কোনও "পূর্ববর্তী" ভাইবোন নির্বাচনকারী নেই, তবে আপনি সম্ভবত এটি করতে পারেন পজিশনিং (উদাহরণস্বরূপ ডানদিকে ডান) ব্যবহার করে একই প্রভাব পেতে । এটি আপনি যা করার চেষ্টা করছেন তার উপর নির্ভর করে।
আমার ক্ষেত্রে, আমি একটি প্রাথমিকভাবে সিএসএস 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)
+
বা ~
নির্বাচকরা আমাকে সবচেয়ে পরিষ্কার কাজ হিসাবে আঘাত করে।
আপনার সঠিক উদ্দেশ্যটির উপর নির্ভর করে একটি ব্যবহার না করে পিতা-মাতা নির্বাচকটির উপযোগিতা অর্জনের একটি উপায় রয়েছে (এমনকি যদি এটি উপস্থিত থাকত তবেও) ...
বলুন আমাদের আছে:
<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 এ পুনরায় সেট করে।
পূর্ববর্তী ভাইবোন টিআর নির্বাচন করার জন্য আমার একটি সমাধান দরকার। আমি প্রতিক্রিয়া এবং স্টাইলযুক্ত উপাদান ব্যবহার করে এই সমাধানটি নিয়ে এসেছি। এটি আমার সঠিক সমাধান নয় (এটি মেমরি থেকে, কয়েক ঘন্টা পরে)। আমি জানি হিটলাইটার র ফাংশনটিতে একটি ত্রুটি রয়েছে।
অনমাউসভারের উপরে একটি সারিটি সারি সূচকে রাজ্যে সেট করে এবং নতুন পটভূমির রঙের সাথে পূর্ববর্তী সারিটি পুনরায় সরবরাহ করবে
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;
}
`;
আমারও অনুরূপ সমস্যা ছিল এবং আমি জানতে পেরেছিলাম যে এই প্রকৃতির সমস্ত সমস্যা নীচে সমাধান করা যেতে পারে:
এবং এইভাবে আপনি আপনার বর্তমান, পূর্ববর্তী আইটেমগুলি (সমস্ত আইটেম বর্তমান এবং পরবর্তী আইটেমগুলিতে ওভাররাইড করা) এবং আপনার পরবর্তী আইটেমগুলিকে স্টাইল করতে সক্ষম হবেন।
উদাহরণ:
/* 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>
আশা করি এটি কাউকে সাহায্য করবে।