Bu, tüm seçer <B>
etiketleri doğrudan öncesinde tarafından <A>
etiketleri:
A+B {
/* styling */
}
Herkes için seçici nedir <A>
doğrudan etiketleri takip göre <B>
etiketleri?
İşte soruma uyan örnek HTML:
<a>some text</a>
<b>some text</b>
Bu, tüm seçer <B>
etiketleri doğrudan öncesinde tarafından <A>
etiketleri:
A+B {
/* styling */
}
Herkes için seçici nedir <A>
doğrudan etiketleri takip göre <B>
etiketleri?
İşte soruma uyan örnek HTML:
<a>some text</a>
<b>some text</b>
b
izler s a
benzer s, a+b
tüm seçebileceğiniz b
tarafından doğrudan öncesinde s a
.
Yanıtlar:
CSS'de olamazsın.
Düzenle: Biraz daha yardımcı olması için, örneğin jQuery (JavaScript kitaplığı) kullanıyorsanız, kullanabilirsiniz .prev()
.
Doğrudan içinde veya takip edilen bir B öğesine sahip olduğu için A stilini mi kastediyorsunuz? Bunun gibi:
<A>
<B>
</B>
</A>
// OR
<A>
</A>
<B>
</B>
CSS'de (henüz) böyle bir şey yapamazsınız. Eric Meyer, bu tür bir seçicinin CSS posta listesinde epeyce tartışıldığını ve mümkün olmadığını belirtiyor. Temel WebKit geliştiricilerinden biri olan Dave Hyatt, bunun neden yapılamayacağına dair iyi bir açıklama ile yorum yapıyor.
Şunlara göz atın: Shaun Inman'ın blog yazısı ve Eric Meyer tarafından yapılan yorum .
David Hyatt da dahil oluyor.
YALNIZCA tersini yapabilirsiniz: Bu, doğrudan etiketlerle gelen tüm etiketleri seçer.
Bu, mantıksal olarak isteğinize eşdeğerdir.
Bunu genellikle etiket içeren birçok onay kutusunun stilini belirlemek
CSS:
label+input {
margin-left: 4px;
}
DOM:
<input id="a" name="a" type="checkbox"/><label for="a">...</label>
<input id="b" name="b" type="checkbox"/><label for="b">...</label>
<input id="c" name="c" type="checkbox"/><label for="c">...</label>
label+input
marjı tüm uygulanır input
elemanlarının , ikinci bir başlangıç malzemesi . Aralarında boşluk yaratmanın yaratıcı bir yoludur, ancak satırın başında veya sonunda değil. Bu durumda eşdeğerdir input:not(:first-child)
.
Çok kullanışlı olmasa da, günümüzde bu davranışı hem HTML oluştururken hem de CSS kurallarını uygulayarak öğelerinizin sırasını tersine çevirerek gerçekleştirebilirsiniz: display: flex
veflex-direction: column-reverse
ul {
display: flex;
flex-direction: column-reverse;
}
.b ~ .a {
color: red;
}
<ul>
<li class="a">A 3</li>
<li class="c">C 2</li>
<li class="c">C 1</li>
<li class="b">B 1</li>
<li class="a">A 2</li>
<li class="a">A 1</li>
</ul>
Ayrıca, 2 veya daha fazla satır içi öğeniz varsa float: right
, ters sırada görüntüleneceklerinden uygulayarak bunu başarabilirsiniz :
ul {
float: left;
list-style-type: none;
}
li {
float: right;
}
li:not(:first-child) {
margin-right: 20px;
}
.b ~ .a {
color: red;
}
<ul>
<li class="a">A 3</li>
<li class="c">C 2</li>
<li class="c">C 1</li>
<li class="b">B 1</li>
<li class="a">A 2</li>
<li class="a">A 1</li>
</ul>
A
veB
ilişkili olduğuna bir DOM örneği verir .