Kombine: ile: hover


176

CSS (veya başka bir sözde seçici) :afterile birleştirmek istiyorum :hover. Temelde bir liste var ve selectedsınıf öğeyi kullanarak uygulanan bir ok şekli vardır :after. Üzerine gelinen ancak tam olarak çalışamayan nesneler için de aynısını istiyorum. Heres kodu

#alertlist
{
    list-style:none;
    width: 250px;
}
#alertlist li
{
    padding: 5px 10px;
    border-bottom: 1px solid #e9e9e9;
    position:relative;
}
#alertlist li.selected, #alertlist li:hover
{
    color: #f0f0f0;
    background-color: #303030;
}

#alertlist li.selected:after
{
    position:absolute;
    top: 0;
    right:-10px;
    bottom:0;

    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 10px solid #303030;
    content: "";
}

<ul id="alertlist">
    <li>Alert 123</li>
    <li class="selected">Alert 123</li>
    <li>Alert 123</li>
</ul>

#Alertlist li: hover: after kuralını eklemeye çalıştınız mı?
Andrea

Yanıtlar:


225

Sadece eklemek :afteriçin için #alertlist li:hoverselektör size ilgisi aynı şekilde #alertlist li.selectedseçicinin:

#alertlist li.selected:after, #alertlist li:hover:after
{
    position:absolute;
    top: 0;
    right:-10px;
    bottom:0;

    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 10px solid #303030;
    content: "";
}

29
@Chris, muhtemelen daha önce denediğinizin :after:hover aksine :hover:after. Başlangıçta yaptığım şey bu sinir bozucu çalışmıyor
WickyNilliams

3
@WickyNilliams: Tasarım gereği (sözde sınıflara karşı sahte sınıflar) - bkz. Stackoverflow.com/questions/5777210/…
BoltClock

3
Bu, Chrome'da (v43) veya FF'de (v38) metin süslemesi için işe yaramıyor gibi görünüyor.
jeoidesik

@jeoidesic: Metin süsleri tamamen farklı bir konudur. Özellikle mutlak konumlandırma ile iyi oynamazlar. Yalancı unsurlarla ya da :hoversahte sınıfla ilgisi yoktur .
BoltClock

@BoltClock Mutlak konumlandırma kullanmıyorum, ancak benim rengimi değiştirebiliyorum: yukarıdaki seçici sözdizimini kullanan içerikten sonra, bir bağlantıdaki bir: after öğesinin üzerine gelme durumu için metin süslemesini değiştiremiyorum . Aksi takdirde metin dekorasyonu gayet iyi çalışır.
jeoidesik

22

scss içinde

&::after{
content: url(images/RelativeProjectsArr.png);
margin-left:30px;
}

&:hover{
    background-color:$turkiz;
    color:#e5e7ef;

    &::after{
    content: url(images/RelativeProjectsArrHover.png);
    }
}

8
 #alertlist li:hover:after,#alertlist li.selected:after
{
    position:absolute;
    top: 0;
    right:-10px;
    bottom:0;

    border-top: 10px solid transparent;
    border-bottom: 10px solid transparent;
    border-left: 10px solid #303030;
    content: "";
}​

jsFiddle Bağlantısı


li: hover: afte bunu seçilenle aynı sınıfa ekle
Kishore Kumar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.