Bagaimana cara memilih <li>
elemen yang merupakan induk langsung dari elemen anchor?
Sebagai contoh, CSS saya akan menjadi seperti ini:
li < a.active {
property: value;
}
Jelas ada cara untuk melakukan ini dengan JavaScript, tapi saya berharap ada semacam solusi yang ada asli untuk CSS Level 2.
Menu yang saya coba untuk gaya sedang dimuntahkan oleh CMS, jadi saya tidak bisa memindahkan elemen aktif ke <li>
elemen ... (kecuali saya tema modul pembuatan menu yang saya lebih suka tidak melakukan).
Ada ide?
sumber
!
sekarang:The subject of the selector can be explicitly identified by appending an exclamation mark (!) to one of the compound selectors in a selector.
$
tampak lebih baik untuk saya ... yang terlampir!
dapat diabaikan dengan lebih mudah.:has()
semu yang diketahui dan dicintai semua orang dari jQuery. ED terbaru telah menghapus semua referensi ke indikator subjek, dan menggantinya dengan:has()
pseudo. Saya tidak tahu alasan pastinya, tetapi CSSWG mengadakan polling beberapa waktu lalu dan hasilnya pasti mempengaruhi keputusan ini. Kemungkinan besar kompatibilitas dengan jQuery (sehingga dapat meningkatkan qSA tanpa modifikasi), dan karena sintaks indikator subjek terbukti terlalu membingungkan.Saya tidak berpikir Anda dapat memilih induk hanya di CSS.
Tetapi karena Anda tampaknya sudah memiliki
.active
kelas, akan lebih mudah untuk memindahkan kelas itu keli
(bukan kea
). Dengan begitu Anda dapat mengakses keduanyali
dana
melalui CSS saja.sumber
Anda dapat menggunakan skrip ini :
Ini akan memilih induk dari input teks. Tapi tunggu, masih banyak lagi. Jika mau, Anda dapat memilih induk yang ditentukan:
Atau pilih saat aktif:
Lihat HTML ini:
Anda dapat memilih itu
span.help
ketikainput
aktif dan menunjukkannya:Ada banyak lagi kemampuan; cukup periksa dokumentasi plugin.
BTW, ia bekerja di Internet Explorer.
sumber
patent()
akan lebih cepat. Ini perlu pengujian, namun#a!
sendirian melempar kesalahan,#a! p
berfungsi), dan yang lainnya tidak akan berfungsi karenaUncaught TypeError: Cannot call method 'split' of undefined
: lihat jsfiddle.net/HerrSerker/VkVPsSeperti yang disebutkan oleh beberapa orang lain, tidak ada cara untuk gaya orangtua elemen / s hanya menggunakan CSS tetapi berikut ini berfungsi dengan jQuery :
sumber
<
pemilih tidak ada (diverifikasi menggunakan jQuery 1.7.1).<
-syntax bekerja pada tahun 2009 tetapi saya telah memperbaruinya (untuk 2013).:has()
pemilih :$("li:has(a.active)").css("property", "value");
. Bunyinya mirip dengan!
pemilih yang diusulkan CSS 4 . Lihat juga::parent
pemilih ,.parents()
metode ,.parent()
metode ..css("property", "value")
untuk menata elemen yang dipilih, Anda biasanya.addClass("someClass")
dan harus memiliki dalam CSS Anda.someClass { property: value }
( via ). Dengan begitu, Anda dapat memberi tahu gaya dengan kekuatan penuh CSS dan preprosesor apa pun yang Anda gunakan.Iya:
:has()
Dukungan browser: tidak ada
sumber
Tidak ada pemilih induk; hanya saja tidak ada pemilih saudara sebelumnya. Salah satu alasan bagus untuk tidak memiliki penyeleksi ini adalah karena browser harus menelusuri semua anak dari suatu elemen untuk menentukan apakah suatu kelas harus diterapkan atau tidak. Misalnya, jika Anda menulis:
Kemudian browser harus menunggu sampai ia memuat dan mem-parsing semuanya sampai
</body>
untuk menentukan apakah halaman tersebut harus berwarna merah atau tidak.Artikel Mengapa kami tidak memiliki pemilih induk menjelaskannya secara rinci.
sumber
Tidak ada cara untuk melakukan ini di CSS 2. Anda bisa menambahkan kelas ke
li
dan referensia
:sumber
Cobalah beralih
a
keblock
tampilan, lalu gunakan gaya apa pun yang Anda inginkan. Thea
elemen akan mengisili
elemen, dan Anda akan dapat mengubah tampilan nya seperti yang Anda inginkan. Jangan lupa untuk mengaturli
padding ke 0.sumber
Selektor CSS " General Sibling Combinator " mungkin dapat digunakan untuk apa yang Anda inginkan:
Ini cocok dengan
F
elemen apa pun yang didahului oleh suatuE
elemen.sumber
Tidak dalam CSS 2 sejauh yang saya ketahui. CSS 3 memiliki lebih banyak penyeleksi yang kuat tetapi tidak diterapkan secara konsisten di semua browser. Bahkan dengan penyeleksi yang ditingkatkan, saya tidak percaya itu akan mencapai apa yang Anda tentukan dalam contoh Anda.
sumber
Saya tahu OP sedang mencari solusi CSS tetapi mudah dicapai menggunakan jQuery. Dalam kasus saya, saya perlu menemukan
<ul>
tag induk untuk<span>
tag yang terkandung dalam anak<li>
. jQuery memiliki:has
pemilih sehingga dimungkinkan untuk mengidentifikasi orang tua oleh anak-anak di dalamnya:akan memilih
ul
elemen yang memiliki elemen turunan dengan id someId . Atau untuk menjawab pertanyaan awal, sesuatu seperti yang berikut ini harus melakukan trik (belum diuji):sumber
$yourSpan.closest("ul")
dan Anda akan mendapatkan UL induk dari elemen rentang Anda. Namun demikian jawaban Anda sepenuhnya imo offtopic. Kami dapat menjawab semua pertanyaan dengan tag CSS dengan solusi jQuery.Elemen pseudo
:focus-within
memungkinkan orang tua untuk dipilih jika keturunan memiliki fokus.Suatu elemen dapat difokuskan jika memiliki
tabindex
atribut.Dukungan browser untuk fokus-dalam
Tabindex
Contoh
sumber
.color:focus-within .change
dengan.color:focus-within
. Dalam kasus saya, saya menggunakan bootstrap nav-bar yang menambahkan kelas ke anak-anak saat aktif dan saya ingin menambahkan kelas ke induk .nav-bar. Saya pikir ini adalah skenario yang cukup umum di mana saya memiliki markup tetapi komponen css + js adalah bootstrap (atau lainnya) jadi saya tidak dapat mengubah perilaku. Meskipun saya bisa menambahkan tabindex dan menggunakan css ini. Terima kasih!Ini adalah aspek yang paling banyak dibahas dari spesifikasi Selectors Level 4 . Dengan ini, pemilih akan dapat mendesain elemen sesuai dengan anaknya dengan menggunakan tanda seru setelah pemilih yang diberikan (!).
Sebagai contoh:
akan menetapkan warna latar belakang merah jika pengguna melayang di atas jangkar apa pun.
Tapi kita harus menunggu implementasi browser :(
sumber
Anda mungkin mencoba menggunakan hyperlink sebagai induknya, dan kemudian mengubah elemen dalam saat melayang. Seperti ini:
Dengan cara ini Anda dapat mengubah gaya dalam beberapa tag bagian dalam, berdasarkan rollover dari elemen induk.
sumber
a
tag hanya untuk elemen tertentu, jika Anda ingin menyesuaikan dengan standar XHTML. Misalnya, Anda tidak dapat menggunakan bagiandiv
dalama
, tanpa mendapat peringatan akan melanggar skema.Saat ini tidak ada pemilih induk & bahkan tidak sedang dibahas dalam pembicaraan W3C. Anda perlu memahami bagaimana CSS dievaluasi oleh browser untuk benar-benar memahami apakah kita membutuhkannya atau tidak.
Ada banyak penjelasan teknis di sini.
Jonathan Snook menjelaskan bagaimana CSS dievaluasi .
Chris Coyier pada pembicaraan pemilih Induk .
Harry Roberts lagi dalam menulis penyeleksi CSS yang efisien .
Namun Nicole Sullivan memiliki beberapa fakta menarik tentang tren positif .
Orang-orang ini semua kelas atas di bidang pengembangan front end.
sumber
need
ditentukan oleh persyaratan pengembang web, apakah akan memilikinya dalam spesifikasi ditentukan oleh faktor lain.Hanya ide untuk menu horizontal ...
Bagian dari HTML
Bagian dari CSS
Demo yang diperbarui dan kode lainnya
Contoh lain bagaimana menggunakannya dengan input teks - pilih fieldset induk
sumber
Inilah hack yang digunakan
pointer-events
denganhover
:sumber
Ada plugin yang memperluas CSS untuk memasukkan beberapa fitur non-standar yang benar-benar dapat membantu ketika merancang situs web. Ini disebut EQCSS .
Salah satu hal yang EQCSS tambahkan adalah pemilih induk. Ini bekerja di semua browser, Internet Explorer 8 dan yang lebih tinggi. Berikut formatnya:
Jadi di sini kami telah membuka kueri elemen pada setiap elemen
a.active
, dan untuk gaya di dalam kueri itu, hal-hal seperti$parent
masuk akal, karena ada titik referensi. Peramban dapat menemukan induknya, karena sangat mirip denganparentNode
di JavaScript.Berikut adalah demo
$parent
dan demo lain$parent
yang berfungsi di Internet Explorer 8 , serta tangkapan layar jika Anda tidak memiliki Internet Explorer 8 untuk mengujinya .EQCSS juga mencakup meta-selektor :
$prev
untuk elemen sebelum elemen yang dipilih dan$this
hanya elemen yang cocok dengan kueri elemen, dan lainnya.sumber
Sekarang tahun 2019, dan draft terbaru Modul Nesting CSS sebenarnya memiliki sesuatu seperti ini. Memperkenalkan
@nest
at-rules.(Salin dan tempel dari URL di atas).
Contoh penyeleksi yang valid berdasarkan spesifikasi ini:
sumber
Secara teknis tidak ada cara langsung untuk melakukan ini. Namun, Anda dapat mengatasinya dengan jQuery atau JavaScript.
Namun, Anda dapat melakukan hal seperti ini juga.
jQuery
Jika Anda ingin mencapai ini menggunakan jQuery di sini adalah referensi untuk pemilih induk jQuery .
sumber
W3C mengecualikan pemilih seperti itu karena dampak kinerja yang sangat besar pada browser.
sumber
Jawaban singkatnya adalah TIDAK ; kami tidak memiliki
parent selector
pada tahap ini dalam CSS, tetapi jika Anda tidak harus menukar elemen atau kelas, opsi kedua menggunakan JavaScript. Sesuatu seperti ini:Atau cara yang lebih singkat jika Anda menggunakan jQuery di aplikasi Anda:
sumber
Meskipun tidak ada pemilih induk dalam CSS standar saat ini, saya sedang mengerjakan proyek (pribadi) yang disebut kapak (mis. Augmented CSS Selector Syntax / ACSSSS ) yang, di antara 7 penyeleksi baru, mencakup keduanya:
<
(yang memungkinkan pemilihan berlawanan dengan>
)^
(yang memungkinkan pemilihan berlawanan dengan[SPACE]
)kapak saat ini dalam tahap pengembangan BETA yang relatif awal.
Lihat demo di sini:
http://rounin.co.uk/projects/axe/axe2.html
(bandingkan dua daftar di sebelah kiri dengan gaya selektor standar dan dua daftar di sebelah kanan dengan gaya selektor)
sumber
<script src="https://rouninmedia.github.io/axe/axe.js"></script>
di bagian paling akhir dokumen html Anda, tepat sebelumnya</body>
.Setidaknya hingga dan termasuk CSS 3 Anda tidak dapat memilih seperti itu. Tetapi ini dapat dilakukan dengan cukup mudah di JavaScript saat ini, Anda hanya perlu menambahkan sedikit vanilla JavaScript, perhatikan bahwa kodenya cukup pendek.
sumber
CSS 4 akan lebih bagus jika menambahkan beberapa kait dalam berjalan mundur . Hingga saat itu dimungkinkan (walaupun tidak disarankan) untuk menggunakan
checkbox
dan / atauradio
input
s untuk mematahkan cara yang biasa hal-hal yang terhubung, dan melalui itu juga memungkinkan CSS untuk beroperasi di luar ruang lingkup normal ...... cukup kasar , tetapi hanya dengan CSS dan HTML dimungkinkan untuk menyentuh dan menyentuh kembali apa pun kecuali dari
body
dan:root
dari mana saja dengan menautkanid
danfor
propertiradio
/checkbox
input
s danlabel
pemicu ; kemungkinan seseorang akan menunjukkan cara menyentuh kembali mereka di beberapa titik.Saya tidak yakin dengan
:
penyeleksi lain , tetapi saya:checked
untuk pra-CSS 3. Jika saya ingat dengan benar, itu adalah sesuatu[checked]
yang mengapa Anda dapat menemukannya dalam kode di atas, misalnya,... tetapi untuk hal-hal seperti
::after
dan:hover
, saya sama sekali tidak yakin di mana versi CSS yang pertama kali muncul.Itu semua menyatakan, tolong jangan pernah menggunakan ini dalam produksi, bahkan tidak dalam kemarahan. Sebagai lelucon tentu saja, atau dengan kata lain hanya karena sesuatu dapat dilakukan tidak selalu berarti harus demikian .
sumber
Tidak, Anda tidak dapat memilih induk hanya di CSS.
Tetapi karena Anda tampaknya sudah memiliki
.active
kelas, akan lebih mudah untuk memindahkan kelas itu keli
(bukan kea
). Dengan begitu Anda dapat mengakses keduanyali
dana
melalui CSS saja.sumber
Mengubah elemen induk berdasarkan elemen anak saat ini hanya dapat terjadi ketika kita memiliki
<input>
elemen di dalam elemen induk. Saat input mendapatkan fokus, elemen induk yang terkait dapat terpengaruh menggunakan CSS.Contoh berikut akan membantu Anda memahami penggunaan
:focus-within
dalam CSS.sumber
Mungkin dengan ampersand di Sass :
Output CSS:
sumber
h3
induk, yang merupakan tujuannya. Ini akan memilihh3
s yang merupakan keturunan.some-parent-selector
.Saya akan menyewa beberapa kode JavaScript untuk melakukan itu. Misalnya, dalam Bereaksi saat Anda mengulangi array, tambahkan kelas lain ke komponen induk, yang menunjukkannya berisi anak-anak Anda:
Dan kemudian secara sederhana:
sumber
Tidak ada pemilih induk css (dan karenanya dalam preprosesor css) karena "Alasan utama Kelompok Kerja CSS sebelumnya menolak proposal untuk penyeleksi induk terkait dengan kinerja browser dan masalah render tambahan."
sumber