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>

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: "";
}

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

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


li: hover: afte menambahkan ini di kelas yang sama dengan yang dipilih
— Kishore Kumar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.