Saya ingin mengembalikan string dengan semua konten aturan CSS, seperti format yang Anda lihat dalam gaya sebaris. Saya ingin dapat melakukan ini tanpa mengetahui apa yang terkandung dalam aturan tertentu, jadi saya tidak bisa begitu saja menariknya dengan nama gaya (seperti .style.width
dll.)
CSS:
.test {
width:80px;
height:50px;
background-color:#808080;
}
Kode sejauh ini:
function getStyle(className) {
var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules
for(var x=0;x<classes.length;x++) {
if(classes[x].selectorText==className) {
//this is where I can collect the style information, but how?
}
}
}
getStyle('.test')
javascript
html
css
Diodeus - James MacFarlane
sumber
sumber
Jawaban:
Diadaptasi dari sini , berdasarkan jawaban scunliffe:
sumber
var classes
harus adadocument.styleSheets[0].rules[0].cssRules
di Chrome. Ini bisa (secara kreatif) ditambahkan ke shim dalam jawaban.Karena jawaban yang diterima dari "nsdel" hanya tersedia dengan satu lembar gaya dalam dokumen, ini adalah solusi kerja lengkap yang disesuaikan:
Pemberitahuan: Selektor harus sama seperti di CSS.
sumber
global_
ist hanya alias untuk objek jendela. Saya telah mengedit potongan kode. Seharusnya sekarang berfungsiSOLUSI 1 (CROSS-BROWSER)
SOLUSI 2 (CROSS-BROWSER)
sumber
Beberapa perbedaan browser yang harus diperhatikan:
Diberikan CSS:
dan diberikan contoh InsDel, kelas akan memiliki 2 kelas di FF dan 3 kelas di IE7 .
Contoh saya menggambarkan ini:
sumber
Berikut adalah kode untuk mengulang melalui semua aturan di halaman:
sumber
Catatan: "menu" adalah ID elemen yang telah Anda terapkan CSS. "className" nama kelas css yang kita butuhkan untuk mendapatkan teksnya.
sumber
item
metode ini mengambil indeks integer, bukan className).Saya tidak menemukan satu pun saran yang benar-benar berfungsi. Ini yang lebih kuat yang menormalkan jarak saat menemukan kelas.
Ini dia beraksi dari konsol Chrome.
sumber
Saya membuat fungsi helper serupa yang menunjukkan gaya yang tidak dibutuhkan untuk halaman ini. menambahkan a
<div>
ke isi daftar semua gaya yang tidak digunakan.(untuk digunakan dengan konsol firebug)
sumber
Telah menyesuaikan jawaban julmot agar mendapat hasil yang lebih lengkap. Metode ini juga akan mengembalikan gaya di mana kelas adalah bagian dari selektor.
Selain itu, saya telah membuat fungsi yang mengumpulkan definisi gaya css ke sub-pohon dari simpul akar yang Anda sediakan (melalui pemilih jquery).
Perhatikan bahwa jika sebuah kelas ditentukan beberapa kali dengan selektor yang sama, fungsi di atas hanya akan mengambil yang pertama. Perhatikan bahwa contoh menggunakan jQuery (tetapi cab relatif mudah ditulis ulang untuk tidak menggunakannya)
sumber
// berfungsi di IE, tidak yakin dengan browser lain ...
sumber
Versi ini akan melalui semua stylesheet pada sebuah halaman. Untuk kebutuhan saya, gaya biasanya berada di urutan ke-2 hingga terakhir dari 20+ lembar gaya, jadi saya memeriksanya mundur.
sumber
Saya menambahkan pengembalian objek di mana atribut diuraikan gaya / nilai:
sumber
style.cssText.match(...).1
adalah nol atau bukan sebuah objekUncaught ReferenceError: classStyleTxt is not defined
Saya membuat versi yang mencari semua stylesheet dan mengembalikan kecocokan sebagai objek kunci / nilai. Anda juga dapat menentukan beginWith untuk mencocokkan gaya anak.
kembali:
dari:
Kode:
Saya menggunakan ini dalam produksi sebagai bagian dari proyek bentuk murni . Semoga membantu.
sumber
Saya menghadapi masalah yang sama. Dan dengan bantuan teman-teman, saya mendapatkan solusi yang sangat cerdas yang menyelesaikan masalah itu sepenuhnya (berjalan di chrome).
Ekstrak semua gambar dari jaringan
sumber
Dalam satu baris, mencetak css yang dihasilkan untuk kueri apa pun.
sumber
Berdasarkan jawaban @dude, ini harus mengembalikan gaya yang relevan dalam sebuah objek, misalnya:
Ini akan mengembalikan:
Kode:
sumber
_.pickBy(classes[x].style, (k,v) => isNaN(parseInt(k)) && typeof(v) == 'string' && v && v != 'initial' && k != 'cssText' )