Saya memiliki variabel JavaScript berikut:
var fontsize = "12px"
var left= "200px"
var top= "100px"
Saya tahu bahwa saya dapat mengaturnya ke elemen saya secara berulang seperti ini:
document.getElementById("myElement").style.top=top
document.getElementById("myElement").style.left=left
Apakah mungkin untuk menyatukan semuanya sekaligus, seperti ini?
document.getElementById("myElement").style = allMyStyle
javascript
coding-style
Mircea
sumber
sumber
allMyStyle
ada dalam contoh Anda? Pada awalnya Anda memiliki daftar variabel tunggal ...cssText
.Jawaban:
Jika Anda memiliki nilai CSS sebagai string dan tidak ada CSS lain yang telah ditetapkan untuk elemen (atau Anda tidak peduli tentang menimpa), manfaatkan
cssText
properti :Ini bagus dalam arti karena menghindari pengecatan ulang elemen setiap kali Anda mengubah properti (entah bagaimana Anda mengubah semuanya "sekaligus").
Di sisi lain, Anda harus membuat string terlebih dahulu.
sumber
display: block; position: absolute;
.Menggunakan Object.assign :
Ini juga memberi Anda kemampuan untuk menggabungkan gaya, alih-alih menulis ulang gaya CSS.
Anda juga dapat membuat fungsi pintasan:
sumber
document.querySelector('html').style = Object.assign({}, document.querySelector('html').style, { color: 'red'})
tetapi tidak ada yang terjadi.Object.assign(document.querySelector('html').style, { color: 'red' });
... Pastikan gaya tidak ditimpa dalam elemen yang lebih rendah. Ini sangat mungkin saat menggunakannya padahtml
elemen.@ Mircea: Sangat mudah untuk mengatur beberapa gaya untuk elemen dalam satu pernyataan. Itu tidak mempengaruhi properti yang ada dan menghindari kompleksitas untuk loop atau plugin.
HATI-HATI: Jika nanti Anda menggunakan metode ini untuk menambah atau mengubah properti gaya, properti sebelumnya yang disetel menggunakan 'setAttribute' akan dihapus.
sumber
removeAttribute
mungkin berguna bagi mereka yang mungkin berpikir untuk menggunakansetAttribute
untuk mengatur ulang gayaBuat fungsi untuk merawatnya, dan berikan parameter dengan gaya yang ingin Anda ubah ..
dan menyebutnya seperti ini
untuk nilai properti di dalam propertyObject, Anda dapat menggunakan variabel ..
sumber
Pustaka JavaScript memungkinkan Anda melakukan hal-hal ini dengan sangat mudah
jQuery
Objek dan for-in-loop
Atau, metode yang jauh lebih elegan adalah objek dasar & untuk-loop
sumber
setel beberapa properti style css di Javascript
atau
Contoh:
sumber
Saya hanya tersandung di sini dan saya tidak melihat mengapa ada begitu banyak kode yang diperlukan untuk mencapai ini.
Tambahkan kode CSS Anda sebagai string.
sumber
Anda dapat memiliki kelas individu dalam file css Anda dan kemudian menetapkan classname ke elemen Anda
atau Anda dapat mengulangi properti gaya sebagai -
sumber
Jangan berpikir itu mungkin.
Tapi Anda bisa membuat objek dari definisi gaya dan hanya mengulanginya.
Untuk mengembangkan lebih lanjut, buat fungsi untuk itu:
sumber
Menggunakan Javascript biasa, Anda tidak dapat mengatur semua gaya sekaligus; Anda perlu menggunakan satu baris untuk masing-masingnya.
Namun, Anda tidak perlu mengulang
document.getElementById(...).style.
kode berulang-ulang ; buat variabel objek untuk referensi, dan Anda akan membuat kode Anda lebih mudah dibaca:... dll. Jauh lebih mudah dibaca daripada contoh Anda (dan terus terang, sama mudahnya dengan membaca sebagai alternatif jQuery).
(jika Javascript telah dirancang dengan benar, Anda juga bisa menggunakan
with
kata kunci, tetapi sebaiknya dibiarkan sendiri, karena dapat menyebabkan beberapa masalah namespace yang buruk)sumber
cssText
.cssText
tidak masalah untuk mengatur nilai stylesheet inline. Namun jika Anda juga memiliki kelas, atau jika Anda hanya ingin menimpa beberapa nilai tetapi tidak semua, itu bisa sangat sulit untuk digunakancssText
. Jadi kamu benar; Anda dapat melakukannya, tetapi saya akan merekomendasikan untuk sebagian besar kasus penggunaan.obj.top
atauobj.style.color
juga hanya menetapkan nilai inline stylesheet. Dan ya, dalam jawaban saya, saya mengatakan bahwa seseorang akan menimpa nilai-nilai ... itu tergantung pada konteksnya apakah itu berguna atau tidak.Taruhan terbaik Anda adalah membuat fungsi yang mengatur gaya Anda sendiri:
Perhatikan bahwa Anda masih harus menggunakan nama properti yang kompatibel dengan javascript (karenanya
backgroundColor
)sumber
Lihat untuk .. di
Contoh:
sumber
Ini adalah utas lama, jadi saya mencari orang yang mencari jawaban modern, saya sarankan menggunakan Object.keys ();
sumber
Ada skenario di mana menggunakan CSS bersama javascript mungkin lebih masuk akal dengan masalah seperti itu. Lihatlah kode berikut:
Ini hanya beralih di antara kelas-kelas CSS dan menyelesaikan begitu banyak masalah yang terkait dengan gaya-gaya utama. Itu bahkan membuat kode Anda lebih rapi.
sumber
Anda dapat menulis fungsi yang akan mengatur deklarasi satu per satu agar tidak menimpa deklarasi yang ada yang tidak Anda berikan. Katakanlah Anda memiliki daftar parameter objek deklarasi ini:
Anda mungkin menulis fungsi yang terlihat seperti ini:
yang membutuhkan
element
danobject
daftar properti deklarasi gaya untuk diterapkan ke objek itu. Berikut ini contoh penggunaan:Tampilkan cuplikan kode
sumber
Saya pikir ini cara yang sangat sederhana sehubungan dengan semua solusi di atas:
sumber
Gunakan
CSSStyleDeclaration.setProperty()
metode di dalamObject.entries
objek gaya.Kami juga dapat mengatur prioritas ("penting") untuk properti CSS dengan ini.
Kami akan menggunakan nama properti CSS "hypen-case".
sumber
Apakah innerHtml di bawah ini valid
sumber
Dengan ES6 + Anda juga dapat menggunakan backticks dan bahkan menyalin css langsung dari suatu tempat:
sumber
sumber
Kami dapat menambahkan fungsi gaya ke prototipe Node:
Kemudian, cukup panggil metode styles pada Node apa pun:
Ini akan mempertahankan gaya lain yang ada dan menimpa nilai yang ada di parameter objek.
sumber