“පෙර සහෝදර සහෝදරියන්” තේරීම් කරුවෙක් සිටීද?


1372

ප්ලස් ලකුණ ( +) ඊළඟ සහෝදරයා සඳහා වේ.

කලින් සහෝදරයාට සමාන දෙයක් තිබේද?


23
OMG, මෙහි ඇති සියලුම පිළිතුරු මඟින් ඔබට html මූලද්‍රව්‍යවල අනුපිළිවෙල ආපසු හරවා CSS භාවිතා කර ඒවා පසුපසට දිස් වේ. එය ප්‍රශ්නයේ නිශ්චිතව දක්වා නැති බව සහතිකයි , නමුත් බොහෝ "ඔබට CSS සමඟ X කළ හැකිද" යන ප්‍රශ්න මඟින් ඔබට HTML ව්‍යුහාත්මකව වෙනස් කළ නොහැකි යැයි සිතිය යුතුය.
squarecandy

4
qusquarecandy, මම බොහෝ දුරට ඔබගේ අදහස් සමඟ එකඟ වෙමි. නමුත් ප්‍රමාණවත් නොවන බව ඔබ සඳහන් කරන විසඳුම් කෙසේ වෙතත් සමහර අවස්ථාවලදී ප්‍රයෝජනවත් වේ. එබැවින් ඒවා පළ කිරීම වටී. “සැබෑ දිගුවක්” ලෙස ඔබ දකින දේ අන් අයට “නිර්මාණාත්මක විසඳුමක්” විය හැකිය.
මයිකල් බෙන්ජමින්

1
2020 W3C තවමත් පෙර සහෝදර සහෝදරියන් සඳහා ක්‍රියාකරුවෙකු හඳුන්වා දී නොමැත.
ක්‍රිස්ටියන් ඊ.

Answers:


849

නැත, "පෙර සහෝදර සහෝදරියන්" තේරීම් කාරකයක් නොමැත.

ආශ්‍රිත සටහනක, ~සාමාන්‍ය අනුප්‍රාප්තික සහෝදර සහෝදරියන් සඳහා වේ (මෙයින් අදහස් කරන්නේ මූලද්‍රව්‍යය මෙයින් පසුව පැමිණේ, නමුත් අවශ්‍යයෙන්ම වහාම නොවේ) සහ CSS3 තේරීම් කාරකයෙකි. +ඊළඟ සහෝදරයා සඳහා වන අතර එය CSS2.1 වේ.

බලන්න යාබදව පිහිටා ඇති සහෝදර සහෝදරියන් combinator සිට තේරීම් පෙළ 3 සහ 5.7 යාබදව පිහිටා ඇති සහෝදර සහෝදරියන් තේරීම් සිට කඩා හැලෙන Style Sheets සඳහා 2 වන මහල සංශෝධනය 1 (CSS 2.1) පිරිවිතර .


14
CSS3 ප්‍රමිතියෙන්: අනුක්‍රමික දෙකෙන් නිරූපණය වන මූලද්‍රව්‍ය ලේඛන ගසෙහි එකම මාපියෙකු බෙදා ගන්නා අතර පළමු අනුක්‍රමය මගින් නිරූපණය වන මූලද්‍රව්‍යය දෙවන එකෙන් නිරූපණය වන මූලද්‍රව්‍යයට පෙර (අවශ්‍ය නොවේ).
බොරු රයන්

26
Ie ලී රයන්: ඔව්, නමුත් ඔහුගේ පිළිතුරේ ක්ලෙටස් පවසන කාරණය නම් ඔබ පෙර අංගය තෝරා නොගැනීමයි .
බෝල්ට් ක්ලොක්

44
මෙන්න මම මෙය කළ හැකි හා කළ නොහැකි දේ බැලීමට කළ උදාහරණයක්. jsfiddle.net/NuuHy/1
අබකස්

7
මේ සඳහා ප්‍රයෝජනවත් වන jquery ශ්‍රිතය පෙර () වේ. උදාහරණයක් ලෙස $ ("# the_element"). පෙර () css ("පසුබිම්-වර්ණය", "රතු")
සට්බීර් කිරා

1
ඔබගේ සලකුණු කිරීම මත පදනම්ව, මෙය උදව් විය හැකිය: stackoverflow.com/questions/42680881/…
samnau

246

~ඔබට අවශ්‍ය දේ අනුව ක්‍රියා කළ හැකි පෙර සිටි සහෝදර සහෝදරියන් (ප්‍රතිවිරුද්ධ ) විලාසිතාවට ක්‍රමයක් මම සොයා ගතිමි .

අපි ඔබට සබැඳි ලැයිස්තුවක් ඇති බව කියමු. එකක් මත සැරිසරන විට, පෙර තිබූ සියල්ල රතු පැහැයට හැරිය යුතුය. ඔබට එය මේ ආකාරයෙන් කළ හැකිය:

/* 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>


18
එය ක්‍රියාත්මක වන ආකාරය පිළිබඳ පැහැදිලි කිරීමක් ඔබට එකතු කළ හැකිය. (ඔබ සියලු අයිතම සහ පහත අයිතම සඳහා ශෛලියක් යොදන බව පෙනේ, නමුත් එය පැහැදිලිව විස්තර කළ හැකිය)
AL

7
ඔව්, නමුත් පෙර එකක්ම බොහෝ විට අවශ්‍ය නොවේ.
azerafati

45
මා අතර ඇති අවකාශය පුරා සැරිසැරුවහොත් සබැඳි සියල්ල රතු පැහැයට හැරේ.
ලින්

3
Yn ලයින් පිළිතුරට ඇතුළත් වන්නේ පෙර සබැඳි හොවර් මත රතු කිරීමට කේතය පමණි. අතිරේක මෝස්තර ඔබගේ භාවිත අවස්ථාව මත රඳා පවතී. තරු ශ්‍රේණිගත කිරීමේ අංගයක් සඳහා (මම අනුමාන කරන පොදු අවස්ථාවක්), ඔබට එම අවකාශයෙන් මිදීමට අවශ්‍ය වන අතර රතු පැහැයෙන් යුත් සබැඳිය රතු කළ යුතුය.
mantish

2
YnLynn @radiantshaw ඔබට pointer-events: noneකන්ටේනරයට සහ pointer-events: auto;තනි සබැඳිවලට එකතු කළ හැකිය . එවිට හිස් අවකාශය සියල්ල රතු පැහැයට හැරේ. කෙසේ වෙතත්, තනි සබැඳියන්ගෙන් සැරිසරන සිදුවීම් කෙසේ හෝ මවුපියන්ට ප්‍රචාරය කළ යුතුය.
wiktus239

169

තේරීම් මට්ටම 4 හඳුන්වා දෙයි:has() (මීට පෙර විෂය දර්ශකය !) මෙය ඔබට පෙර සහෝදරයෙකු තෝරා ගැනීමට ඉඩ සලසයි:

previous:has(+ next) {}

… නමුත් ලියන අවස්ථාව වන විට, එය බ්‍රව්සර් සහාය සඳහා ලේ ගැලීමේ සීමාවෙන් ඔබ්බට යම් දුරකි.


55
“බ්‍රව්සර් සහාය සඳහා ලේ ගැලීමේ දාරය” අධි තක්සේරුවක් විය හැකිය. මෙය ලිවීමේදී, ක්‍රෝම් හි නවතම අනුවාදයට පවා :has()ව්‍යාජ පන්තිය භාවිතා කළ නොහැක .
රීඩ් මාටින්

35
Eed රීඩ් මාටින් - ලේ ගැලීමේ සීමාවෙන් ඔබ්බට යම් දුරක්
ක්වෙන්ටින්

12
": has ගතික තේරීම් පැතිකඩෙහි කොටසක් ලෙස සලකුණු කර නැත, එයින් අදහස් කරන්නේ එය ස්ටයිල් ෂීට් තුළ භාවිතා කළ නොහැකි බවයි; document.querySelector () වැනි ක්‍රියාකාරකම් සමඟ පමණි." - developer.mozilla.org/en-US/docs/Web/CSS/:has
Arch ලිනක්ස් ටක්ස්

1
RArchLinuxTux: "මෙම සීමාව දැන් ඉවත් කර ඇත", එබැවින් වරකට වරක් අපට මෙම අංගය භාවිතා කළ හැකිය: D.
ජේකබ් වැන් ලින්ගන්

1
@ ජාකොබ්වාන්ලින්ගන් - caniuse.com/#feat=css-has - දැනට කිසිදු බ්‍රව්සරයක් එයට සහය නොදක්වයි.
ක්වෙන්ටින්

159

orderනම්යශීලී හා ජාලක පිරිසැලසුම් වල දේපල සලකා බලන්න .

පහත උදාහරණ වල මම නම්‍යශීලි කොටුව කෙරෙහි අවධානය යොමු කරමි, නමුත් එම සංකල්පම ග්‍රිඩ් සඳහාද අදාළ වේ.


නම්‍ය පෙට්ටිය සමඟ, පෙර සහෝදර සහෝදරියන් තෝරා ගැනීම අනුකරණය කළ හැකිය.

විශේෂයෙන් නම්යශීලී orderදේපල මඟින් තිරය වටා මූලද්රව්ය චලනය කළ හැකිය.

මෙන්න උදාහරණයක්:

B මූලද්‍රව්‍යය සැරිසැරූ විට A මූලද්‍රව්‍යය රතු පැහැයට හැරීමට ඔබට අවශ්‍යය.

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

පියවර

  1. ulනම්යශීලී බහාලුමක් සාදන්න .

    ul { display: flex; }

  1. සලකුණු කිරීමේදී සහෝදර සහෝදරියන්ගේ අනුපිළිවෙල ආපසු හරවන්න.

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

  1. මූලද්රව්ය A ඉලක්ක කිරීම සඳහා සහෝදර සහෝදරියන් තෝරා ගැනීමක් භාවිතා කරන්න ( ~හෝ එසේ +කරනු ඇත).

    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දේපල අයින් භාණ්ඩ ordinal කණ්ඩායම් සඳහා අනුයුක්ත වන විට, අයින් රුවනයකි තුළ පෙනී අනුපිළිවල පාලනය කරයි. එය තනි <integer>අගයක් ගනී , එමඟින් නම්‍ය අයිතමය අයත් වන්නේ කුමන සාමාන්‍ය කණ්ඩායමටද යන්න නියම කරයි.

orderසියලුම නම්‍ය අයිතම සඳහා ආරම්භක අගය 0 වේ.

orderCSS ජාලක පිරිසැලසුම් පිරිවිතරයේ ද බලන්න .


නම්‍ය 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


පැති සටහනක් - CSS පිළිබඳ යල්පැනගිය විශ්වාසයන් දෙකක්

ෆ්ලෙක්ස්බොක්ස් යනු CSS පිළිබඳ දිගුකාලීන විශ්වාසයන් බිඳ දමයි.

එවැනි එක් විශ්වාසයක් නම් , කලින් සහෝදර සහෝදරියන් තෝරා ගැනීම CSS හි කළ නොහැකි බවයි.

මෙම විශ්වාසය පුළුල් යැයි කීම අඩු තක්සේරුවක් වනු ඇත. තොග පිටාර ගැලීම පිළිබඳ අදාළ ප්‍රශ්න නියැදියක් මෙන්න:

ඉහත විස්තර කර ඇති පරිදි, මෙම විශ්වාසය මුළුමනින්ම සත්ය නොවේ. නම්‍ය orderදේපල භාවිතා කරමින් පෙර සහෝදර සහෝදරියන් තෝරා ගැනීම CSS හි අනුකරණය කළ හැකිය .

මෙම z-indexමිථ්යාව

තවත් දිගුකාලීන විශ්වාසයක් වී z-indexඇත්තේ ස්ථානගත කරන ලද මූලද්‍රව්‍ය මත පමණක් ක්‍රියාත්මක වන බවයි.

ඇත්ත වශයෙන්ම, පිරිවිතරයේ වඩාත්ම වර්තමාන අනුවාදය - W3C සංස්කාරක කෙටුම්පත - මෙය තවමත් සත්‍ය බව සහතික කරයි:

9.9.1 තොග මට්ටම නියම කිරීම: z-index දේපල

z-index

  • වටිනාකම: ස්වයංක්‍රීය | | උරුමය
  • ආරම්භක: ස්වයංක්‍රීය
  • අදාළ වේ: ස්ථානගත කළ මූලද්‍රව්‍ය
  • උරුමය: නැත
  • ප්‍රතිශත: එන් / ඒ
  • මාධ්‍ය: දෘශ්‍ය
  • ගණනය කළ අගය: නිශ්චිතව දක්වා ඇති පරිදි

(අවධාරණය එකතු කරන ලදි)

කෙසේ වෙතත් යථාර්ථයේ දී මෙම තොරතුරු යල් පැන ගිය සහ සාවද්‍ය ය.

බව කොටස් අයින් භාණ්ඩ හෝ විදුලිබල පද්ධතියට භාණ්ඩ විට පවා මුසපත්ව සන්දර්භයන් නිර්මාණය කළ හැකි positionstatic.

4.3. නම්‍ය අයිතමය ඉසෙඩ් ඇණවුම් කිරීම

එම නියෝගය-වෙනස් ලියවිල්ල සඳහා අමු ලියවිල්ල සඳහා වෙනුවට භාවිතා කරන අතර, ඇත හැර Flex භාණ්ඩ, පේළිගත කුට්ටි ලෙස හරියටම එම තීන්ත ආලේප z-indexහැර වෙනත් අගය autoපවා නම් මුසපත්ව සන්දර්භය නිර්මාණය positionවන්නේ static.

5.4. ඉසෙඩ් අක්ෂය ඇණවුම් කිරීම: z-indexදේපල

එම නියෝගය-වෙනස් ලියවිල්ල සඳහා අමු ලියවිල්ල සඳහා වෙනුවට භාවිතා කරන අතර, ඇත හැර විදුලිබල පද්ධතියට භාණ්ඩ වල තීන්ත ආලේප සඳහා, පේළිගත කුට්ටි ලෙස හරියටම සමාන වන්නේ z-indexහැර වෙනත් අගය autoපවා නම් මුසපත්ව සන්දර්භය නිර්මාණය positionවන්නේ static.

z-indexස්ථානගත නොකළ නම්‍ය අයිතම මත වැඩ කිරීම පිළිබඳ නිරූපණයක් මෙන්න : https://jsfiddle.net/m0wddwxs/


17
මෙම orderහුෙදක් වෙනස් කිරීමට අදහස් කරන බැවින් දේපල විසඳුමක් නොවේ දෘශ්ය එය කරන්නේ එසේ කළේ නැහැ මුල් නැවත semantical ඔබ වැඩ කිරීමට මෙම දුෂ්කරතාවය මගහැර සඳහා HTML හි වෙනස් කරන ලෙස බල කරන බව පිණිස.
මාරට් ටනලින්

5
ඔබ උපුටා දක්වන CSS2.2 ED, සාරාංශයක් ලෙස තවමත් CSS2 බව මතක තබා ගන්න. CSS2 හි නම්යශීලී කොටුව සහ ජාල සැකැස්ම CSS2 හි නොපවතින අතර, එම තොරතුරු නිසැකවම සත්‍ය වේ. අවම වශයෙන්, සීඑස්එස් හි අනාගත මට්ටම්වල ඇති වෙනත් වර්ගවල මූලද්‍රව්‍යයන්ට z- දර්ශකය අදාළ විය හැකි බව සඳහන් කිරීම සඳහා පෙළ යාවත්කාලීන කළ හැකි අතර, අනෙක් ගුණාංගවල පාරාන්ධතාව වැනි සිරස් සන්දර්භයක් ඇති කළ හැකි යැයි එය කියයි.
බෝල්ට් ක්ලොක්

3
@BoltClock මගේ අදහස් දැක්වීමට බ්‍රව්සර් සහාය සමඟ කිසිදු සම්බන්ධයක් නැත. ඉදිරිපත් කිරීම සඳහා තාක්‍ෂණය අර්ථ නිරූපණය කරයි. සේවාදායක පැත්තේ පෙර සහෝදර සහෝදරියන්ගේ මූලද්‍රව්‍යයට එකතු කරන ලද සාමාන්‍ය නිත්‍ය පන්තියක් වඩාත් සාධාරණ යැයි මම විශ්වාස කරමි.
මාරට් ටනලින්

3
z-indexවැඩ කරන්නේ කවදාදැයි තේරුම් ගැනීමට යමෙකුට අපහසුතාවයක් තිබේ නම්, “ඔම්ග්, positionනිශ්චිතව දක්වා නැත !”, පිරිවිතරයන් සන්දර්භය සැකසීමේ සංකල්පය ගැන සඳහන් කරයි , එය
එම්ඩීඑන්

3
@ මයිකල්_බී ඔබව සාදරයෙන් පිළිගනිමු! මම මේ ගැන නොදැන බොහෝ පෙරටුගාමීන් සමඟ කටයුතු කර ඇත්තෙමි. මා සඳහන් කිරීමට කැමති තවත් දෙයක් නම්, පෙර සහෝදර සහෝදරියන් තෝරා ගැනීමfloat: right(හෝ ඇණවුම ආපසු හැරවීමට වෙනත් ක්‍රමයක් සමඟ හොඳින් ක්‍රියා කරයි , එයින් flex/orderසුළු (අවම?) අතුරු ආබාධ ඇත). ප්‍රහේලිකා දෙකක් තළා: ප්‍රවේශය නිරූපණය කිරීමfloat: right සහ නිරූපණය කිරීමdirection: rtl
රොජියර් ස්පීකර්

68

මට එකම ප්‍රශ්නය තිබුනි, නමුත් පසුව මට "ඩු" මොහොතක් තිබුණි. ලිවීම වෙනුවට

x ~ y

ලියන්න

y ~ x

නිසැකවම මෙය "y" වෙනුවට "x" සමඟ ගැලපේ, නමුත් එය පිළිතුරු දෙන්නේ "ගැලපීමක් තිබේද?" ප්‍රශ්නය, සහ සරල DOM ගමන් කිරීම ජාවාස්ක්‍රිප්ට් වල ලූපයට වඩා කාර්යක්ෂමව නිවැරදි මූලද්‍රව්‍යයට ඔබව ගෙන යනු ඇත.

මුල් ප්‍රශ්නය CSS ප්‍රශ්නයක් බව මට වැටහී ඇති බැවින් මෙම පිළිතුර බොහෝ දුරට අදාළ නොවේ, නමුත් වෙනත් ජාවාස්ක්‍රිප්ට් භාවිතා කරන්නන් මා කළාක් මෙන් සෙවීම හරහා ප්‍රශ්නයට බාධා පමුණුවනු ඇත.


18
Y පහසුවෙන් සොයාගත හැකි විට එය ක්‍රියාත්මක වන බව මම විශ්වාස කරමි. ගැටළුව වන්නේ y සොයාගත හැක්කේ x ට සාපේක්ෂව පමණක් වන අතර එය ආපසු හැරවීමේදී ඔබට y සොයාගත නොහැකි වන්නේ ඔබ මුලින් x සොයා ගත යුතු බැවිනි. මෙය ඇත්ත වශයෙන්ම ඊළඟට වඩා සහෝදරයාට පෙර සහෝදරයා වීම පිළිබඳ ප්‍රශ්නයට යොමු වන අතර y පහත සඳහන් සහෝදරයා වීම සඳහා ද අදාළ විය හැකිය.
ඩේවිඩ්

19
ඔයා ටිකක් රළුයි, හාෂ්. (කණගාටුයි, විරුද්ධ විය නොහැක.) කාරණය වන්නේ සමහර විට ඔබ දැනගත යුතු වන්නේ “ඔබ සිටිනවාද?”. මූලද්‍රව්‍ය දෙක අතර යමක් තැබීමට ඔබට ": පෙර" භාවිතා කළ හැකි වෙනත් වේලාවන්. අවසාන වශයෙන්, ඔබට jQuery වෙත වැටීමට සිදුවුවහොත්, සොයා ගැනීම ("y ~ x") භාවිතා කිරීම. පෙර () බොහෝ විකල්පයන්ට වඩා පහසුය.
බ්‍රයන් ලාර්සන්

162
පෙර සහෝදර සහෝදරියන් තෝරා ගැනීමේ අදහස නම් එය පෙර අංගය තෝරා ගනු ඇති බවයි. අවාසනාවකට මෙන්, මෙහි විස්තර කර ඇති පරිදි එය ආපසු හැරවීම මෙම ක්‍රියාකාරීත්වය සපයන්නේ නැත.
සෙනෙක්සර්

14
මෙම පිළිතුර මුල් ප්‍රශ්නයට සත්‍ය විසඳුමක් ලබා නොදෙන බවට පැහැදිලි කිරීම ගැන ස්තූතියි en සීනෙක්සර්, y ~ xමගේ ගැටලුව විසඳන්නේ කෙසේද යන්න ගැන මෝඩ සිතුවිල්ලක් මට දැනෙන්නට පටන්
ගත්තේය

5
මෙම පිළිතුර පිටුපස ඇති අදහස මට වැටහී ඇත, කෙසේ වෙතත් පිළිතුරෙහි දක්වා ඇති තර්කනය අර්ථවත් නොවේ. තේරීම y ~ x"ගැලපීමක් තිබේද?" ප්‍රශ්නය, මන්ද මෙහි දී ඇති තේරීම්කරුවන් දෙදෙනා අදහස් කරන්නේ සම්පූර්ණයෙන්ම වෙනස් දේවල් ය. නිදසුනක් ලෙස උප y ~ xකුලකයට අනුව තරඟයක් බිහි කිරීමට කිසිඳු ක්‍රමයක් නොමැත <root><x/><y/></root>. ප්රශ්නය "y පවතීද?" එවිට තේරීම සරලයි y. ප්‍රශ්නය නම් “කිසියම් අත්තනෝමතික ස්ථානයක සහෝදර සහෝදරියකට x ලබා දී තිබේද?” එවිට ඔබට තේරීම්කරුවන් දෙදෙනාම අවශ්‍ය වේ. (නමුත් සමහර විට මම මේ අවස්ථාවේදී ඩබ් කරනවා ...)
BoltClock

27

උපක්‍රම දෙකක් . මූලික වශයෙන් HTML හි ඔබ අපේක්ෂිත මූලද්‍රව්‍යයන්ගේ HTML අනුපිළිවෙල හරවා
~ ඊළඟ සහෝදර සහෝදරියන් ක්‍රියාකරු භාවිතා කිරීම :

float-right + HTML මූලද්‍රව්‍යයන්ගේ අනුපිළිවෙල ප්‍රතිලෝම කරන්න

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>


26

+ඊළඟ සහෝදරයා වෙනුවෙන්. කලින් සහෝදරයාට සමාන දෙයක් තිබේද?

ඔබට අක්ෂ තේරීම් දෙක භාවිතා කළ හැකිය : !සහ?

ඇත 2 පසුව සහෝදර සහෝදරියන් තේරීම් සාම්ප්රදායික CSS දී:

  • +යනු වහාම පසුව සහෝදර සහෝදරියන් තේරීම්
  • ~යනු ඕනෑම පසුව සහෝදර සහෝදරියන් තේරීම්

සාම්ප්‍රදායික CSS හි, පෙර සහෝදර සහෝදරියන් තෝරාගැනීමක් නොමැත .

කෙසේ වෙතත්, අක්ෂය CSS පශ්චාත් සකසනය පුස්තකාලයේ, පෙර සහෝදර සහෝදරියන් තේරීම්කරුවන් දෙදෙනෙකු ඇත :

  • ?යනු වහාම පෙර සහෝදර සහෝදරියන් තේරීම් (ප්රතිවිරුද්ධ +)
  • !යනු ඕනෑම පෙර සහෝදර සහෝදරියන් තේරීම් (ප්රතිවිරුද්ධ ~)

වැඩ කරන උදාහරණය:

පහත උදාහරණයේ:

  • .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
රේල් පීලි ව්‍යාපෘතියක් තුළ එය සාස් මත ක්‍රියාත්මක කිරීමට උත්සාහ කරන විට මෙය මට සින්ටැක්ස් දෝෂයක් ලබා දෙයි.
ඇලෙක්ස්

26
පොරොව යනු CSS පශ්චාත් සකසනයකි. එය සාස්, අඩු හෝ ස්ටයිලස් වැනි CSS පෙර සකසනයන්ට සමාන වාක්‍ය ඛණ්ඩයක් භාවිතා නොකරයි.
රූනින්

2
Ou රවුනින් ඔබට ප්‍රලේඛන සබැඳි කිහිපයක් එකතු කිරීමට අවශ්‍යද? මට පොරවෙන් පසු සකසනය සොයාගත නොහැක .
ඩයෝනිස්

Ion ඩයොනිස් - ඔබගේ උනන්දුවට ස්තූතියි. පොරොව යනු 2016 අග භාගයේදී මා ආරම්භ කළ ව්‍යාපෘතියකි, මා ES2015 නොදැන සිටි අතර JS හි වස්තූන් පවා මට ඉතා අලුත් විය. GitHub ගබඩාව මෙහි ඇත: github.com/RouninMedia/axe . මා දන්නවා මෙහිදී යම් අවස්ථාවක මේ නැවත ඉතා අදහස් (මම ද හඳුන්වන දෙයක් සංවර්ධනය තියෙනවා පොරොව-තල ජාවාස්ක්රිප්ට් සිදුවීම් CSS සමාන වන), නමුත් මම තවත් ව්යාපෘතිය (ගති ගුණ ඇති මගේ වැඩ කටයුතු නිම කිරීමට අවශ්ය ashiva පළමු).
රූනින්

17

තවත් නම්‍යශීලි විසඳුමක්

ඔබට HTML හි මූලද්‍රව්‍යවල ප්‍රතිලෝම අනුපිළිවෙල භාවිතා කළ හැකිය. එවිට භාවිතා හැර orderමෙන් Michael_B පිළිතුර ඔබට භාවිතා කළ හැකි 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>


17

මේ මොහොතේ එය කිරීමට නිල ක්‍රමයක් නොමැති නමුත් මෙය සාක්ෂාත් කර ගැනීම සඳහා ඔබට කුඩා උපක්‍රමයක් භාවිතා කළ හැකිය! එය පර්යේෂණාත්මක බවත් එයට යම් සීමාවක් ඇති බවත් මතක තබා ගන්න ... ( ඔබ යාත්‍රා අනුකූලතාව ගැන කරදර වන්නේ නම් මෙම සබැඳිය පරීක්ෂා කරන්න )

ඔබට කළ හැක්කේ 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
An :nth-child(-n+4)එය ව්‍යාජ පන්තියක් බැවින් නිසියාකාරව වැඩ කිරීම සඳහා තේරීම් කරුවෙකුට අදාළ විය යුතුය. ඔබට ඒත්තු ගැන්වීමට නොහැකි නම්, මගේ
ෆෙඩෙල් දෙබලකින්

1
ඇත්ත වශයෙන්ම, ඔබට *තේරීම් කාරකය භාවිතා කර නෝඩ් වර්ගයේ ස්වාධීනව යා හැකිය , නමුත් එය පිළිකුල් සහගත නරක පුරුද්දකි.
ජොෂ් බර්ගස්

1
මෙය මට වැඩ කළ පිළිතුරයි, එය වැඩි ඡන්දයක් නොගන්නේ මන්දැයි නොදනී.
ජේක් කැට්රෝල්

1
ඇත්ත වශයෙන්ම, එය විවිධ නෝඩ් සඳහා ක්‍රියා කරයි: jsfiddle.net/aLhv9r1w/316 . කරුණාකර ඔබේ පිළිතුර යාවත්කාලීන කරන්න :)
ජේමි බාර්කර්

2
මට සංකීර්ණ තේරීම් කාරයෙක් සිටියේය, නමුත් අපි එය කියමු, ඊට පෙර li#someListItemමට නෝඩ් (ය) අවශ්‍ය විය (එය මම "පෙර" ලෙස අර්ථකථනය කරන ආකාරයයි) - ඔබ ලබා දුන් තොරතුරු CSS හරහා ප්‍රකාශ කිරීමට මට උපකාර කරන්නේ කෙසේදැයි මම නොදනිමි. ඔබ පළමු n සහෝදර සහෝදරියන් තෝරා ගන්නවා, මම n දන්නවා යැයි සිතන්න. මෙම තර්කනය මත පදනම්ව, ඕනෑම තේරීම් කරුවෙකුට උපක්‍රමය කළ හැකි අතර මට අවශ්‍ය මූලද්‍රව්‍යය (ය) තෝරා ගත හැකිය (උදා: නොවේ ()).
bitoolean

5

CSS හරහා එය කළ නොහැකිය. එය "කඳුරැල්ල" හදවතට ගෙන යයි ;-).


කෙසේ වෙතත්, ඔබට ඔබේ පිටුවට ජාවාස්ක්‍රිප්ට් එක් කිරීමට හැකි නම්, jQuery ස්වල්පයක් ඔබේ අවසාන ඉලක්කය කරා ළඟා විය හැකිය. ඔබේ ඉලක්ක මූලද්‍රව්‍යය / පංතිය / හැඳුනුම්පත මත "ඉදිරියෙන් බැලීමට"
ඔබට jQuery භාවිතා කළ හැකිය find, ඉන්පසු ඔබේ ඉලක්කය තෝරා ගැනීමට පසුපසට යන්න.
ඔබේ මූලද්‍රව්‍යය සඳහා DOM (CSS) නැවත ලිවීමට ඔබ jQuery භාවිතා කරයි.

මයික් බ්‍රැන්ට්ගේ මෙම පිළිතුර මත පදනම්ව , පහත දැක්වෙන jQuery ස්නිපටය උදව් විය හැකිය.

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

මෙය පළමුව <ul>a අනුගමනය කරන සියලුම s තෝරා ගනී <p>.
එය, මීට පෙර තේරීමට "backtracks" <p>බව කට්ටලයක් වෙතින්<ul> .

Query ලදායී ලෙස, "පෙර සහෝදරයා" jQuery හරහා තෝරාගෙන ඇත.
දැන්, .cssඑම මූලද්‍රව්‍යය සඳහා ඔබේ CSS නව අගයන් ලබා දීමට ශ්‍රිතය භාවිතා කරන්න.


මගේ නඩුවේදී මම හැඳුනුම්පත සමඟ ඩීඅයිවී එකක් තෝරා ගැනීමට ක්‍රමයක් සෙවීමට උත්සාහ කළෙමි #full-width, නමුත් එහි (වක්‍ර) පැවත එන ඩීඅයිවී පන්තියක් තිබේ නම් පමණි .companies.

මට යටින් ඇති සියලුම HTML පාලනය කළ .companiesනමුත් ඊට ඉහළින් ඇති ඕනෑම HTML එකක් වෙනස් කිරීමට මට නොහැකි විය.
කඳුරැල්ල යන්නේ දිශාව 1 ක් පමණි: පහළට.

මේ අනුව මට සියලු #full-widths තෝරා ගත හැකිය .
නැතහොත් මට තෝරා .companiesගත හැක්කේ එය අනුගමනය කිරීමෙන් පසුව පමණි #full-width.
නමුත් මම හැකි නොවේ තෝරා පමණක් #full-widthනොවන බව කීවේය .companies .

නැවතත්, මට එකතු කිරීමට නොහැකි විය .companies HTML හි වැඩි . HTML හි එම කොටස බාහිරව ලියා ඇති අතර අපගේ කේතය ඔතා.

නමුත් jQuery සමග, මම හැකි අවශ්ය තෝරා #full-widths, පසුව සුදුසු ආකාරයේ අනුයුක්ත:

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

මෙය සියල්ල සොයා #full-width .companiesගන්නා .companiesඅතර CSS හි සම්මතයේ නිශ්චිත අංග ඉලක්ක කිරීමට තේරීම්කරුවන් භාවිතා කරන ආකාරයට සමාන ඒවා තෝරා ගනී .
ඉන්පසු එය .parents"පසුපසට" ගොස් සියළුම දෙමව්පියන් තෝරා ගැනීමට භාවිතා කරයි .companies,
නමුත් එම ප්‍රති results ල #fill-widthමූලද්‍රව්‍ය පමණක් තබා ගැනීමට පෙරහන් කරයි, එවිට අවසානයේදී
එය #full-widthමූලද්‍රව්‍යයක් තෝරා ගන්නේ .companiesපන්ති පරම්පරාවක් තිබේ නම් පමණි .
අවසාන වශයෙන්, එය ප්‍රති CS ලයක් ලෙස widthලැබෙන මූලද්‍රව්‍යයට නව CSS ( ) අගයක් පවරයි .

$(".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 මූලද්‍රව්‍යය.
. සොයන්න : තේරීම් කාරකයක්, jQuery වස්තුවක් හෝ මූලද්‍රව්‍යයක් මගින් පෙරහන් කරන ලද ගැලපෙන මූලද්‍රව්‍ය සමූහයේ එක් එක් මූලද්‍රව්‍යයේ පරම්පරාව ලබා ගන්න.
. දෙමව්පියන් : ගැලපෙන මූලද්‍රව්‍ය සමූහයේ එක් එක් මූලද්‍රව්‍යයට පෙර සහෝදරයා හෝ සහෝදරිය ලබා ගන්න. තේරීම් කාරකයක් සපයා ඇත්නම්, එය පෙර සහෝදරයා ලබා ගන්නේ එම තේරීම් කාරකයට ගැලපෙන්නේ නම් පමණි (ප්‍රති results ල පෙරහන් කරන්නේ ලැයිස්තුගත මූලද්‍රව්‍ය / තේරීම් ඇතුළත් කිරීමට පමණි).
. css : ගැලපෙන මූලද්‍රව්‍ය සමූහය සඳහා CSS ගුණාංග එකක් හෝ කිහිපයක් සකසන්න.


මෙයට ප්‍රශ්නයට කිසිදු සම්බන්ධයක් නැත. ඇත්ත වශයෙන්ම එය JS භාවිතා කළ හැකි අතර ඔබට මේ සඳහා jQuery පවා අවශ්‍ය නොවේ previousElementSibling.
ෆේබියන් වොන් එලර්ට්ස්

1
Ab ෆේබියන්වොන් එලර්ට්ස් මගේ ප්‍රතිචාරයේ පළමු පේළියේම මම OP ගේ ප්‍රශ්නයට කෙලින්ම පිළිතුරු දුන්නෙමි. මගේ පිළිතුරෙහි දැක්වෙන පරිදි, එය වචනාර්ථයෙන් CSS හරහා කළ නොහැකිය . CSS භාවිතා කරන්නන්ට හුරුපුරුදු හා ප්‍රවේශ විය හැකි තාක්‍ෂණයක් (JS | JQuery) භාවිතා කරමින් ඉලක්කය සපුරා ගැනීම සඳහා ඉදිරියට යා හැකි මාර්ග 1 ක් මම ලබා දුන්නෙමි . උදාහරණයක් ලෙස, බොහෝ වර්ඩ්ප්‍රෙස් අඩවි වලද JQuery ඇත, එබැවින් එය පහසු ප්‍රවේශ ස්ථානයකි: භාවිතා කිරීමට පහසුය, මතක තබා ගත හැකිය, සහ පුළුල් කරන්න. එය හුදෙක් පිළිතුරු වගකීම් විරහිත විය කැමතියි නැත ඉලක්කය ඉටු කිරීමට විකල්ප ක්රමයක් ලබා දීම තොරව,. එකම ප්‍රශ්නය ඇති විට මම ඉගෙන ගත් හා භාවිතා කළ දේ බෙදාගත්තා.
ෂෙරිල්හෝමන්

previousElementSibling()දේශීය JS DOM කාර්යයන් සමග වඩා හුරු පුරුදු අය සඳහා සැපයිය හැකි තවත් ඉදිරියට CSS නොවන මාර්ගය.
ෂෙරිල්හෝමන්

අනෙක් CSS HACKS ඉතා සිත්ගන්නාසුලු බව මට පෙනී ගියේය, නමුත් මගේ විශේෂිත භාවිත අවස්ථාව සඳහා ඒවා ක්‍රියාත්මක වූයේ නැත (අවවාද කාණ්ඩයට වැටුණි), හෝ අධික ලෙස කැළඹී ඇත. එකම තත්වයට වැටෙන අනෙක් අයට, වැඩ කිරීමට හැකි, ඉහත විසඳුම් අසමත් වූ විට හෝ ක්‍රියාත්මක කිරීමට / නඩත්තු කිරීමට අපහසු වූ මෙම භාවිතයට පහසු ක්‍රමය බෙදා ගැනීම සාධාරණ ය. බොහෝ CSS HACKS බෙදා ගන්නා ලදී. අවට මෙම කාර්යය ආවරණය නොවීය. පිළිතුරු වලින් +කිසිවක් OP විශේෂයෙන් ඉල්ලා ඇති (නොපවතින) තේරීම් භාවිතා කරයි . මෙම පිළිතුර JS "හැක්" ලෙස සලකන්න. විසඳුමක් සෙවීම සඳහා මා ගත කළ කාලය වෙනත් කෙනෙකුගේ ඉතිරි කිරීම සඳහා මෙහි ඇත.
ෂෙරිල්හෝමන්

1
" එය" කඳුරැල්ල "හදවතට ගෙන යයි ;-). " හොඳයි කිව්වා. ඔබට බොහෝ විට එතැනම නතර වීමට ඉඩ තිබුණි. ; ^ D
රෆින්

4

ඔබ නිශ්චිත පිහිටීම දන්නේ නම්, :nth-child()පහත සඳහන් සියලු සහෝදර සහෝදරියන් බැහැර කිරීම සාර්ථක වනු ඇත.

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

එය සියල්ල තෝරා ගනු ඇත li3 වන දිනට පෙර ගත හැකි (උදා: 1 සහ 2). නමුත්, මගේ මතය අනුව මෙය කැත ලෙස පෙනෙන අතර ඉතා තදින් භාවිතා කළ හැකි ය.

ඔබට නව වැනි දරුවා දකුණේ සිට වමට තෝරා ගත හැකිය:

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

එයම කරයි.


2

අවාසනාවකට "පෙර" සහෝදර සහෝදරියන් තේරීම් කරුවෙකු නොමැත, නමුත් ඔබට සමහර විට එසේ කළ හැකිය ස්ථානගත කිරීම භාවිතා කිරීමෙන් තවමත් එකම බලපෑමක් ලබා (උදා: පාවෙන දකුණ). එය ඔබ කිරීමට උත්සාහ කරන දේ මත රඳා පවතී.

මගේ නඩුවේදී, මට අවශ්‍ය වූයේ මූලික වශයෙන් CSS 5-තරු වර්ගීකරණ පද්ධතියක්. මට පෙර තරු වර්ණ ගැන්වීමට (හෝ නිරූපකය මාරු කිරීමට) අවශ්‍ය වනු ඇත. සෑම මූලද්‍රව්‍යයක්ම නිවැරදිව පාවීමෙන්, මම අනිවාර්යයෙන්ම එකම බලපෑමක් ලබා ගනිමි (තරු සඳහා වන html මේ අනුව 'පසුපසට' ලිවිය යුතුය).

මම මෙම උදාහරණයේ දී FontAwesome භාවිතා කරන අතර fa-star-o සහ fa-star යුනිකෝඩ් අතර හුවමාරු වෙමි http://fortawesome.github.io/Font-Awesome/

CSS:

.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 */
}

HTML: (40)

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


1
දකුණට පාවෙන්න, +නැතහොත් ~තේරීම් කරුවන් මට පහර දෙන්නේ අවට ඇති පිරිසිදුම වැඩය ලෙස ය.
විලියම් ජඩ්

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 ආන්තිකයක් ඇති අතර LI තුළ UL මූලද්‍රව්‍ය (හෝ වෙනත් ටැග්) නොමැති අය සඳහා එය නැවත 0 වෙත යලි සකසයි.


2

කලින් සහෝදරයා තෝරා ගැනීමට මට විසඳුමක් අවශ්‍ය විය. ප්‍රතික්‍රියා සහ ශෛලීය සංරචක භාවිතා කරමින් මම මෙම විසඳුම ඉදිරිපත් කළෙමි. මෙය මගේ නිශ්චිත විසඳුම නොවේ (මෙය මතකයෙන්, පැය ගණනකට පසුව). SetHighlighterRow ශ්‍රිතයේ දෝෂයක් ඇති බව මම දනිමි.

OnMouseOver පේළියක පේළි දර්ශකය තත්වයට සකසනු ඇති අතර පෙර පේළිය නව පසුබිම් වර්ණයක් සමඟ යොමු කරන්න

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;
    }
`;

2

නැත, නැත .

ඔබ තැබිය යුතු නම් ලේබලය පෙර ආදාන , හුදෙක් තැනින් ලේබලය පසු ආදාන හා දෙකම තබා ලේබලය සහ එම ආදාන ඇතුළේ div , සහ ශෛලිය div පහත සඳහන් පරිදි:

.input-box {
  display: flex;
  flex-direction: column-reverse;
}
<div class="input-box">
  <input
   id="email"
   class="form-item"           
   />

   <label for="email" class="form-item-header">                  
   E-Mail*                  
   </label>
</div>

දැන් ඔබට css හි ඇති සම්මත ඊළඟ සහෝදර සහෝදරියන්ගේ විකල්පයන් යෙදිය හැකි අතර, ඔබ පෙර සහෝදර සහෝදරියන්ගේ මෝස්තරයක් භාවිතා කරන බවක් පෙනේ.


-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
එය මූලික වශයෙන් එකම ත්‍රෙඩ් එකේ
quetzalcoatl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.