Combine: after dengan: hover

176

Saya ingin menggabungkan :afterdengan :hoverdi CSS (atau pemilih semu lainnya). Saya pada dasarnya memiliki daftar dan item dengan selectedkelas memiliki bentuk panah yang digunakan :after. Saya ingin hal yang sama berlaku untuk objek yang sedang melayang tetapi tidak bisa membuatnya berfungsi. Inilah kode

#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>
Chris
sumber
Sudahkah Anda mencoba menambahkan aturan #alertlist li: hover: after?
Andrea

Jawaban:

225

Cukup tambahkan pemilih :afterAnda #alertlist li:hoverdengan cara yang sama Anda lakukan dengan #alertlist li.selectedpemilih Anda :

#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: "";
}
BoltClock
sumber
29
@ Chris, apa yang Anda mungkin coba sebelumnya :after:hover bertentangan :hover:after. Inilah yang saya lakukan pada awalnya yang gagal tidak berhasil
WickyNilliams
3
@WickyNilliams: Itu sesuai desain (elemen semu vs kelas semu) - lihat stackoverflow.com/questions/5777210/…
BoltClock
3
Ini sepertinya tidak berfungsi untuk dekorasi teks di Chrome (v43) atau FF (v38).
geoidesic
@geoidesic: Dekorasi teks adalah masalah yang berbeda sama sekali. Mereka terutama tidak bermain dengan baik dengan posisi absolut. Tidak ada hubungannya dengan elemen :hoverpseudo atau kelas pseudo.
BoltClock
@BoltClock Saya tidak menggunakan penentuan posisi absolut, tetapi sementara saya bisa mengubah warna saya: setelah konten menggunakan sintaks pemilih di atas, saya tidak dapat mengubah dekorasi teks untuk status hover dari: setelah elemen pada tautan . Kalau tidak, dekorasi teks berfungsi dengan baik.
geoides
22

di scss

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

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

    &::after{
    content: url(images/RelativeProjectsArrHover.png);
    }
}
Erez Lieberman
sumber
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 Link

Kishore Kumar
sumber
li: hover: afte menambahkan ini di kelas yang sama dengan yang dipilih
Kishore Kumar