Saya memiliki elemen gambar yang ingin saya ubah saat klik.
<img id="btnLeft">
Ini bekerja:
#btnLeft:hover {
width:70px;
height:74px;
}
Tapi yang saya butuhkan adalah:
#btnLeft:onclick {
width:70px;
height:74px;
}
Tapi, tentu saja itu tidak berhasil. Apakah mungkin memiliki onclick
perilaku dalam CSS (yaitu tanpa menggunakan JavaScript)?
:active
berfungsi saat mouse turun. Bergantung pada apa yang Anda coba lakukan, Anda mungkin dapat membuatnya bekerja menggunakan pseudo-class CSS4:target
.:target
bukanlah hal baru bagi Selectors 4. Ini telah tersedia sejak Selectors 3, yang sudah menjadi rekomendasi selama satu tahun pada saat penulisan.Jawaban:
Yang paling dekat Anda akan dapatkan adalah
:active
:Namun ini hanya akan berlaku gaya ketika tombol mouse ditekan. Satu-satunya cara untuk menerapkan gaya dan tetap menerapkannya pada klik adalah dengan menggunakan sedikit JavaScript.
sumber
Jawab pada 2019:
Cara terbaik (sebenarnya satu-satunya cara *) untuk mensimulasikan acara klik yang sebenarnya hanya menggunakan CSS (bukan hanya melayang pada elemen atau membuat elemen aktif, di mana Anda tidak memiliki mouseUp ) adalah dengan menggunakan kotak centang hack. Ia bekerja dengan melampirkan
label
ke<input type="checkbox">
elemen melalui labelfor=""
atribut.Fitur ini memiliki dukungan browser yang luas (kelas
:checked
semu adalah IE9 +).Terapkan nilai yang sama ke
<input>
's atribut ID dan menyertai<label>
' sfor=""
atribut, dan Anda dapat memberitahu browser untuk re-gaya label di klik dengan:checked
pseudo-class, berkat fakta bahwa mengklik label akan memeriksa dan hapus centang pada "terkait"<input type="checkbox">
.* Anda dapat mensimulasikan peristiwa "terpilih" melalui kelas
:active
atau:focus
semu di IE7 + (mis. Untuk tombol yang biasanya50px
lebar, Anda dapat mengubah lebarnya saatactive
:#btnControl:active { width: 75px; }
), tetapi mereka tidak benar "klik" peristiwa. Mereka "hidup" sepanjang waktu elemen dipilih (seperti Tabdengan menggunakan keyboard Anda), yang sedikit berbeda dari peristiwa klik yang sebenarnya, yang mengaktifkan aksi - biasanya -mouseUp
.Demo dasar hack kotak centang (struktur kode dasar untuk apa yang Anda minta):
Tampilkan cuplikan kode
Di sini saya telah menempatkan label tepat setelah input di markup saya. Ini agar saya dapat menggunakan pemilih saudara yang berdekatan (+ tombol) untuk memilih hanya label yang langsung mengikuti
#demo
kotak centang saya . Karena:checked
pseudo-class berlaku untuk kotak centang,#demo:checked + label
hanya akan berlaku ketika kotak centang dicentang.Demo untuk mengubah ukuran gambar pada klik, yang Anda tanyakan:
Dengan itu dikatakan, ada adalah kabar buruk. Karena label hanya dapat dikaitkan dengan satu kontrol formulir pada satu waktu , itu berarti Anda tidak bisa begitu saja meletakkan tombol di dalamnya
<label></label>
tag dan menyebutnya sehari. Namun, kita dapat menggunakan beberapa CSS untuk membuat label terlihat dan berperilaku cukup dekat dengan bagaimana sebuah tombol HTML terlihat dan berperilaku.Demo untuk meniru efek klik tombol, di atas dan di luar apa yang Anda minta:
Tampilkan cuplikan kode
Sebagian besar CSS dalam demo ini hanya untuk menata elemen label. Jika Anda tidak benar-benar membutuhkan tombol , dan elemen lama apa pun sudah cukup, maka Anda dapat menghapus hampir semua gaya dalam demo ini, mirip dengan demo kedua saya di atas.
Anda juga akan melihat saya memiliki satu properti awalan di sana
-moz-outline-radius
,. Beberapa waktu yang lalu, Mozilla menambahkan properti non-spek yang mengagumkan ini ke Firefox, tetapi orang-orang di WebKit memutuskan mereka tidak akan menambahkannya , sayangnya. Jadi pertimbangkan bahwa baris CSS hanyalah peningkatan progresif untuk orang yang menggunakan Firefox.sumber
:checked
.Anda dapat menggunakan pseudo class
:target
untuk meniru acara klik, izinkan saya memberi Anda sebuah contoh.Begini tampilannya: http://jsfiddle.net/TYhnb/
Satu hal yang perlu diperhatikan, ini hanya terbatas pada hyperlink, jadi jika Anda perlu menggunakan selain hyperlink, seperti tombol, Anda mungkin ingin meretasnya sedikit, seperti menata hyperlink agar terlihat seperti tombol.
sumber
Jika Anda memberi elemen a
tabindex
maka Anda dapat menggunakan:focus
kelas pseudo untuk mensimulasikan klik.HTML
CSS
http://jsfiddle.net/NaTj5/
sumber
tabindex=-1
item masih fokus, tetapi hanya dengan mouse, bukan keyboard, yang lebih baik dalam hal ini. Anda juga dapat menggunakanoutline:0
gaya untuk menghapus batas biru saat fokusSunting: Dijawab sebelum OP menjelaskan apa yang dia inginkan. Berikut ini untuk onclick yang mirip dengan javascripts onclick, bukan
:active
kelas pseudo.Ini hanya dapat dicapai dengan Javascript atau Hack Kotak Centang
Retas kotak centang pada dasarnya membuat Anda mengklik label, yang "memeriksa" kotak centang, memungkinkan Anda untuk menata label seperti yang Anda inginkan.
The demo
sumber
id
atribut untuk mengikatnya.TylerH membuat jawaban yang sangat bagus, dan saya hanya harus memberikan pembaruan versi tombol terakhir.
sumber
Bagaimana dengan solusi CSS murni tanpa menjadi (yang) meretas?
@ TylerH memiliki respons yang hebat tetapi ini solusi yang cukup kompleks. Saya punya solusi bagi Anda yang hanya ingin efek "onclick" sederhana dengan css murni tanpa banyak elemen tambahan.
Kami hanya akan menggunakan transisi css. Anda mungkin dapat melakukan hal serupa dengan animasi.
Caranya adalah dengan mengubah penundaan untuk transisi sehingga akan bertahan saat pengguna mengklik.
Di sini saya menambahkan kelas "diklik" juga sehingga javascript juga dapat memberikan efek jika perlu. Saya menggunakan filter drop-shadow 0px karena akan menyorot biru transparan yang diberikan seperti ini untuk kasus saya.
Saya memiliki filter pada 0s di sini sehingga tidak akan berpengaruh. Ketika efek dilepaskan saya kemudian dapat menambahkan transisi dengan penundaan sehingga akan memberikan efek "diklik" yang bagus.
Ini memungkinkan saya untuk mengaturnya sehingga ketika pengguna mengklik tombol, itu menyoroti biru kemudian menghilang perlahan (Anda bisa, tentu saja, menggunakan efek lain juga).
Meskipun Anda terbatas di sini dalam arti bahwa animasi yang disoroti adalah instan, itu tetap memberikan efek yang diinginkan. Anda mungkin dapat menggunakan trik ini dengan animasi untuk menghasilkan transisi keseluruhan yang lebih mulus.
sumber
Oke, ini mungkin posting lama ... tetapi hasil pertama di google dan memutuskan untuk membuat campuran Anda sendiri pada ini sebagai ..
PERTAMA AKU AKAN MENGGUNAKAN FOKUS
Alasannya adalah ini berfungsi dengan baik untuk contoh yang saya tunjukkan, jika seseorang menginginkan acara tipe mouse kemudian gunakan aktif
KODE HTML:
KODE CSS:
JS FIDDLE LINK: http://jsfiddle.net/00wwkjux/
Jadi mengapa saya memposting ini di utas lama, baik karena contoh di sini bervariasi dan saya pikir untuk memberikan satu kembali ke komunitas yang merupakan contoh kerja.
Seperti yang sudah dijawab oleh pembuat utas, mereka hanya ingin efeknya bertahan selama acara klik. Sekarang sementara ini tidak tepat untuk kebutuhan itu, itu dekat. aktif akan bernyawa saat mouse tidak aktif dan perubahan apa pun yang Anda perlukan lebih lama harus dilakukan dengan javascript.
sumber
Peringatan! Jawabannya sangat sederhana di bawah ini! :)
Anda sebenarnya dapat memiliki perubahan yang tetap ada (seperti blok / munculan yang muncul dan tetap terlihat setelah klik) dengan hanya CSS (dan tanpa menggunakan hack kotak centang) terlepas dari apa yang diklaim oleh banyak (jika tidak benar) jawaban di sini, selama karena Anda hanya perlu ketekunan selama melayang.
Jadi, lihat jawaban Bojangles dan TylerH jika jawaban itu cocok untuk Anda, tetapi jika Anda menginginkan jawaban sederhana dan hanya CSS yang akan membuat blok terlihat setelah diklik (dan bahkan dapat menghilangkan blok tersebut dengan tindak lanjut klik), maka lihat solusi ini.
Saya memiliki situasi yang serupa, saya memerlukan div popup dengan onClick di mana saya tidak dapat menambahkan JS atau mengubah markup / HTML (solusi yang benar-benar CSS) dan ini dimungkinkan dengan beberapa peringatan. Anda tidak dapat menggunakan: target trick yang dapat membuat popup yang bagus kecuali Anda dapat mengubah HTML (untuk menambahkan 'id') sehingga tidak ada.
Dalam kasus saya div popup terdapat di dalam div lain, dan saya ingin popup muncul di atas div lainnya, dan ini dapat dilakukan dengan menggunakan kombinasi: active dan: hover:
Contoh (dan juga yang memungkinkan mengklik popup untuk menghilangkannya) di:
http://davesource.com/Solutions/20150324.CSS-Hanya-Klik-to-Plikup-Div/
Saya juga memasukkan contoh potongan kode di bawah ini, tetapi posisi di sandbox stackoverflow aneh jadi saya harus meletakkan teks 'klik di sini' setelah innerDiv, yang biasanya tidak diperlukan.
sumber
Saya memiliki kode di bawah ini untuk mouse hover dan klik mouse dan berfungsi:
dan kode ini menyembunyikan gambar ketika Anda mengkliknya:
sumber
Saya memiliki masalah dengan elemen yang harus diwarnai MERAH pada hover dan menjadi BIRU pada klik saat sedang melayang. Untuk mencapai ini dengan css, Anda perlu misalnya:
Saya berjuang selama beberapa waktu sampai saya menemukan bahwa urutan penyeleksi CSS adalah masalah yang saya alami. Masalahnya adalah saya mengganti tempat dan pemilih aktif tidak berfungsi. Kemudian saya menemukan bahwa
:hover
untuk pergi dulu dan kemudian:active
.sumber
Anda dapat menggunakan: target
untuk target umum
atau filter berdasarkan nama kelas
atau filter berdasarkan nama id
sumber
:target
sudah diposting, jadi tidak perlu lagi. Lebih lanjut, si penanya menanyakan bagaimana cara memiliki efek "klik", tidak menunjukkan / menyembunyikan elemen lain.