Gaya dinamis - Kontrol CSS dengan JavaScript. Mengubah gaya elemen javascript Css diatur

Dan apa yang mereka katakan, suara-suara ini. Satu dan. Sama: Saya vendornya, saya vendornya. Apa yang akan kamu lakukan. Apa yang bisa kau lakukan. Ya, bawang Hydra di Rusia 2016. Dan itu berarti Bull Gates tidak melakukan kontak. Tidak berhasil. Atau mungkin dia akan datang. Tapi kamu tidak mengerti. Mungkin Minotaur adalah tikus mati di langit-langit. . Mungkin begitu.

Dan mereka tidak menjelaskan apa pun kepada Anda. Dan itu berarti ada prosedur khusus. Jadi aku pergi dalam kegelapan. Kambing yang malang... Baiklah, kami akan mencari tahu dan menghukum pelakunya. Itu untuk mereka instruksi lilin nigella sativa, gaji ketigabelas dalam mata uang keras... Dia menaikkannya. Saya meletakkan buku catatan di atas meja dengan profil Dante Alighieri di sampulnya dan menghabiskan beberapa waktu berkonsentrasi pada kertas dengan pena, dan saya langsung menebak bahwa dia menggambar profil Dante yang sama di dalamnya, hanya yang kecil. Untuk beberapa alasan, orang-orang ini berpikir bahwa selama abad kedua puluh, instruksi lilin Nigella Sativa belum mempelajari metode kerja mereka. Meletakkan buku catatan. Dia melangkah ke arahku, seolah-olah dia akan menyembuhkan semua luka emosionalku dengan pelukannya yang terlambat, tapi kemudian telepon di mejanya berdering. Shmyga mengutuk dan mengangkat telepon. Dia mendengarkan selama beberapa detik, lalu wajahnya menjadi muram dan penuh perhatian. Ya pak, . Dia berkata dan menutup telepon. Menatapku, dia mengangkat tangannya dengan rasa bersalah. Lihat apa yang terjadi.

Rahasia dagang. Para pelaut tidak punya pertanyaan,” jawab Malyuta. Stepa memandangnya dengan aneh. Tepat tiga jam kemudian Kapten Lebedkin menelepon. Mengapa kamu membutuhkan hidupku? Diselamatkan? - dia bertanya dengan nada mengancam. - Agar Anda terlibat dalam politik. Saya... - Styopa memulai. “Jangan kencing,” kata sang kapten riang. - Bercanda.

Mengharapkan. Kalau begitu silakan,. kata Chapaev sambil bangkit dari belakang hotel ekstasi. Setelah meninggalkan gerbong markas, kami menuju bagian belakang kereta. Apa yang terjadi terasa semakin aneh bagiku. Beberapa gerbong yang kami lewati tampak gelap dan gelap. Kosong. Tidak ada cahaya di mana pun; Tidak ada satu suara pun yang terdengar dari balik pintu. Saya hampir tidak dapat mempercayai hal itu di balik panel kenari, di permukaan yang dipoles yang memantulkan cahaya cerutu Chapaev. Tentara merah sedang tidur, tapi aku berusaha untuk tidak memikirkan hal ini.

Pada tahun 2003, spesialis Jepang. Dimungkinkan untuk mengembangkan serangkaian beberapa mikroprob yang secara langsung menghubungkan otak dan memungkinkan, sampai batas tertentu, untuk mengobjektifikasi gambaran persepsi manusia. Peralatan Jepang tidak dapat menentukan apa yang sebenarnya dirasakan dan dipikirkan orang yang diamati. Tapi itu memungkinkan untuk mendapatkan gambar berwarna (walaupun buram) dari apa yang dia lakukan vape hydra. Dan tidak hanya di dunia nyata, tapi juga di fase tidur REM. Hal ini dimungkinkan karena sinyal diambil bukan dari saraf optik, tetapi dari zona tersebut. Otak yang bertanggung jawab atas representasi langsung. Peralatan tersebut segera dibeli oleh tim Potashinsky. Sinyal dari seperangkat alat yang ditanamkan di otak dapat dikirim tanpa kabel. Koneksi yang memungkinkan bablonaut menjalani kehidupan normal, sama sekali tidak dibatasi oleh partisipasi dalam eksperimen. Penerima sinyal hanya perlu ditempatkan di suatu tempat di dekatnya. Yang kemudian mengirimkan informasi ke komputer secara real time. Secara singkat, skema eksperimen Potashinsky terlihat seperti ini: Pertama, satu set elektroda kontrol ditanamkan ke otak eksperimen bablonaut (sukarelawan, seperti biasa, dipilih dari kalangan perwira muda FSB untuk peran ini).

Dari titik mati. Dengar, Saudaraku,” katanya, “sifat macam apa ini?” Apa yang kamu bicarakan? - tanya Yesus. Nah, di dalam mobil tadi kamu bilang kalau bodi pecahan pecahan peluru itu sifatnya sama dengan pelangi. Dan sifat macam apa ini? Sebaiknya Anda tidak menanyakan hal ini. Saudaraku,” Isa mengerutkan kening. Mengapa. Anda belum siap untuk ini. Bagaimana tidak siap. Dan amfetamin dan ganja pada saat bersamaan. Jika saya siap, saya tidak akan bertanya. Jadi Anda bisa menjawab. Atau.

Segera. diminta. Beli ganja di Vladivostok sekarang, kataku, ini... Ada yang pilih-pilih. Seorang kekasih mungkin tersinggung karena dia tidak diperbolehkan lebih jauh dari lorong jaringan. Tapi Porfiry tidak seperti itu. Hal pertama yang saya lakukan adalah menyambungkan kacamata ogmentnya. Bagus, katanya. Cambang apa... Sementara itu, saya sedang memasang gambar kacamatanya di panel. Mengubahnya dengan pemandangan dari kamera langit-langit. Ifak ​​​​meningkatkan morf apa pun tanpa memaksakan kekuatannya. Itu sangat mengerikan. Sekarang Mara melihatku dengan kacamata ogmentnya menggantikan aifak dan pada saat yang sama bisa mengamati.

Sandi yang dikembangkan. Kadang-kadang dia mencatat bahwa dia kembali tersiksa oleh mimpi yang berulang menurut skema 1. Atau menurut skema 2. Dan tiba-tiba, dalam teks terbuka, seperti tangisan yang keluar: Bermimpi campuran rokok sepanjang waktu, dibunuh olehku di masa kecil... Sebuah suara di balik layar. Dia terdiam. Apa yang dia lakukan? - Sam bertanya. "Aku tertidur," jawab Natasha. Sam dengan lembut membelai ujung perutnya yang berduri dan bersandar di sofa. Natasha menelan ludahnya pelan. Sam menarik kotak di lantai ke arahnya, membukanya, dan mengeluarkan kotak kaca kecil. Stoples itu, dia meludahinya dengan warna merah, mengencangkannya dan melemparkannya kembali - seluruh operasi ini membutuhkan waktu yang lama untuk menghisap campuran tersebut sepanjang waktu. “Kau tahu, Natasha,” katanya.

Setelah itu dia santo hasis Hei, Tatarsky. Tidak ada Jawaban. Tatarsky menunggu satu menit lagi dan menyadari bahwa dia ditinggalkan sendirian. Sendirian dengan pikirannya yang siap menjadi liar. Saya sangat perlu menyibukkan diri dengan sesuatu. Panggil, bisiknya. - Kepada siapa. Gireev. Dia tahu apa yang harus dilakukan. Untuk waktu yang lama. Tidak ada yang menjawab telepon. Akhirnya, pada dering kelima belas atau kedua puluh, Gireev menjawab dengan murung: Halo. Andryusha.

Tidak, katanya. Ada seorang pria yang duduk di ruangan terkunci yang tidak bisa berbahasa Mandarin. Mereka memberinya catatan berisi pertanyaan dalam bahasa Mandarin melalui jendela. Baginya, ini hanyalah selembar kertas dengan coretan-coretan yang tidak dia mengerti maksudnya. Tapi kamarnya penuh dengan buku yang berbeda. Aturan yang menjelaskan secara rinci bagaimana dan dalam urutan apa menjawab hanya dengan coretan. Dan dia, bertindak sesuai aturan ini, memberikan jawaban dalam bahasa Mandarin di jendela lain. Mereka menciptakan keyakinan penuh pada setiap orang yang berdiri di luar bahwa dia tahu bahasa Mandarin. Meskipun dia sendiri tidak mengerti sama sekali apa yang mereka tanyakan padanya. Alamat hydra bawang browser apa maksud jawabannya. Diperkenalkan. Ya, saya memperkenalkannya. Sura adalah ruangan Cina yang sama, hanya otomatis. Alih-alih seseorang dengan buku referensi, ada pemindai yang membaca hieroglif. Basis data referensi dan aturan yang sangat besar yang memungkinkan Anda memilih hieroglif untuk jawabannya.

Ironisnya, inilah yang memberi saya kejelasan. Setidaknya dalam hal praktis. Saya menyadari masalah yang saya hadapi. Ini tidak hanya rumit, tapi juga sulit dipahami. Bahkan sulit untuk merumuskan pertanyaan-pertanyaan terkait dengan benar. Satu-satunya penghiburan tampaknya adalah Bagaimana menemukan situs Hydra dalam bahasa Torus, situasinya sama licinnya. Dengan kesadaran manusia. Saya tidak mampu menghadapi hal ini. Dan saya memutuskan bahwa jalan keluar terbaik dari situasi ini adalah dengan kembali. Bertindak seperti biasa, meninggalkan latihan eksistensial untuk nanti atau melupakannya.

Tak lama kemudian, jalan itu menuju ke sebuah desa kaya dengan gereja putih yang baru dicat. Seorang tentara sedih berkaki satu dengan seragam abu-abu pudar duduk di dekat pagar gereja. Anda tidak tahu di mana Optina Pustyn berada. tanya T. sambil membungkuk ke arahnya dari kudanya. Inilah yang dibicarakan orang-orang. tanya prajurit itu. Yang baru-baru ini didirikan sebagai sebuah pendirian. Saya memutuskan bahwa prajurit itu sudah gila. Bagaimana tempat ini baru saja didirikan. Artinya, bagaimanapun juga, semuanya baik-baik saja, Yang Mulia, kata prajurit itu dan Rolet hidra tangan, kamu masih akan jauh. Hanya ada dua jalan di sini, dan keduanya mengarah ke satu arah. Ambil rute pertama atau kedua. Jika ingin rute yang lebih pendek, maka lewati hutan. Ada garpu di sana, jadi Anda bisa mengambil kedua sisinya.

Dan seringai lainnya, yang menurutku sudah sering kamu dengar... Lena tidak mengerti seperti apa ayah-ibu bodoh berusia delapan belas tahun itu (pemuda itu menggumamkan kata-kata ini dengan cepat dan pelan), tapi segera melupakannya - dia tiba-tiba ingin menyesap anggur senilai dua puluh ribu euro hingga mulutnya berair. Desahan pelan melewati aula, memastikan bahwa mereka yang berkumpul tidak hanya mendengar tentang seringai. Dan kami berhasil mempelajari dengan sangat rinci semua informasi yang tersedia tentang mereka. “Baru-baru ini, badan-badan intelijen Barat telah melancarkan perburuan nyata terhadap orang-orang kaya idiot kita,” lanjut pemuda itu. - Anda tentu saja pernah mendengar tentang skandal besar alamat hydra bawang tk okey situs hydra di torus penangkapan: pertama Courchevel, lalu Fiji, lalu butik Hermes, dan sekarang Saint Moritz, Maladewa, dan Antartika. Kampanye ini direncanakan dengan hati-hati dan memiliki dua tujuan utama – pertama, untuk mendiskreditkan. Peradaban Rusia - untuk membangun kendali atas sumber dayanya dengan mengumpulkan bukti-bukti yang membahayakan pemilik aset utamanya. Elit kita telah menjadi target, dan realitas obyektif dari titik ruang-waktu saat ini adalah sedemikian rupa. Kami menjadi target bersamanya. Sambil mengerutkan kening, dia terdiam, seolah memberikan kesempatan kepada pendengarnya untuk menyadari keseriusan situasi. Kemudian senyuman sedih kembali terlihat di wajahnya dan dia melanjutkan: Kita harus menjaga situasi tetap terkendali.

Dia menyeringai. Setidaknya Anda tidak perlu berpura-pura tersinggung dan tidak bersalah di depan orang-orang Anda sendiri. Tentang apa. Saat aku memprovokasi dia. Saat dia melompat keluar dengan telanjang Pintu masuk bawang Hydra dan berdiri di depannya dengan gaya doggy. Anda menganggap ini sebagai provokasi. Tentu. Aku bertanya-tanya, kenapa kamu membelakangi dia? Saya mengangkat bahu. Untuk keandalan. Apa yang bisa diandalkan dalam hal ini? Ekornya lebih dekat ke sasaran,” kataku kurang percaya diri. Dengan baik. Dan Anda harus melihat ke belakang.

Ketiga ekstasi montal vanilla sebagai berikut: Kepada Yang Mulia O. Konstantin Petrovich Pobedonostsev, pejabat. Dengan ini saya menyampaikan kepada Yang Mulia terjemahan dari prasasti Mesir kuno. Selembar daun emas ditemukan di medali ekstasi montal vanilla jenazah Pastor Varsonofiy Netrebko sebagai bagian dari penyelidikan kasus Count T. Menurut para ahli dari Museum Mesir, garis besar hieroglif memungkinkan kita menentukan penanggalan teks tersebut ke era dinasti ke-18 atau beberapa saat kemudian. Prasasti itu berbunyi: Nama rahasia hermafrodit berkepala kucing, yang memberi kekuasaan atasnya, itulah hakikatnya. ANGC. Jika Anda bisa mengendalikan hermafrodit dengan nama ini. Bagus. Penerjemah ANGC juga dapat diterjemahkan sebagai BHGV tradisional (atau sebaliknya, tergantung pada pilihan tabel korespondensi saat menggunakan register hieroglif). Namun, medali itu sendiri tidak dapat ditransfer ke Yang Mulia meskipun Anda memintanya.

Navigasi pos

Halo semua! Pada artikel ini kita akan melihat cara mengatur gaya dalam javascript dengan benar dan lintas browser.

Jadi, bagi Anda yang setidaknya sudah sedikit familiar dengan javascript pasti tahu bahwa elemen memiliki properti style, yang menyimpan objek, yang dengannya Anda dapat mengatur gaya CSS tertentu. Namun, tidak semuanya sesederhana kelihatannya pada pandangan pertama. Dan itulah kenapa. Mari kita buat dua blok div yang sangat biasa, tetapi untuk satu blok kita akan mengatur gaya melalui atribut style, dan untuk blok lainnya melalui tag style.


div(
lebar: 150 piksel;
tinggi: 150 piksel;
}

#div1 (
latar belakang: #f00;
}


Sekarang mari kita coba menampilkan nilai properti background untuk blok ini.

Var div1 = dokumen.getElementById("div1");
var div2 = dokumen.getElementById("div2");
peringatan(div1.gaya.latar belakang);
peringatan(div2.gaya.latar belakang);

Dalam kasus pertama, kami tidak akan menerima apa pun, tetapi untuk blok div2 gaya akan ditampilkan. Mengapa? Masalahnya adalah javascript hanya dapat menampilkan nilai properti yang diatur langsung di markup html menggunakan atribut style, dan yang diatur melalui javascript. Kalau sekarang kita setting properti backgroundnya seperti ini

Div1.style.background = "#f00";

Sekarang nilainya akan ditampilkan melalui alert .

Peringatan(div1.style.background);

Gaya yang sama yang kita atur di tag gaya atau di lembar gaya eksternal disebut "gaya yang dihitung" atau "gaya yang dihitung". Mereka mendapat nama ini karena suatu alasan. Masalahnya adalah browser terlebih dahulu membaca markup html, lalu menghitung gaya yang kita atur di lembar gaya eksternal dan menerapkannya ke markup ini.

Namun, kami masih bisa mengaksesnya. Spesifikasi DOM Level2 memiliki fungsi khusus getComputedStyle() untuk ini. Mari kita lihat cara kerjanya.

Var gaya = getComputedStyle(div1);
alert(styles.latar belakang);

Anda harus meneruskan elemen yang gayanya ingin Anda dapatkan, dan itu akan mengembalikan objek kepada Anda. Sekarang tinggal tentukan properti yang Anda butuhkan, dan Anda akan segera mendapatkan nilainya.

Namun, fitur ini tidak berfungsi pada browser lama (IE8- ), jadi jika Anda ingin kode Anda kompatibel lintas-browser, gunakan kode di bawah ini.

Fungsi getStyle(elemen) (
kembalikan jendela.getComputedStyle ? getComputedStyle(elemen) : elemen.currentStyle;
}

Penggunaannya serupa

Var gaya = getStyle(div1); alert(styles.latar belakang);

Jadi, hari ini kita belajar cara bekerja dengan gaya dalam javascript dan cara mendapatkan gaya lintas browser.

Interoperabilitas antara JavaScript dan CSS

Cascading Style Sheets (CSS) adalah standar untuk presentasi visual dokumen HTML. Lembar gaya berjenjang dirancang untuk digunakan oleh desainer: lembar ini memungkinkan Anda menentukan font, warna, margin, perataan, opsi batas, dan bahkan koordinat elemen dalam dokumen secara tepat.

Namun mereka juga menarik bagi pemrogram yang menulis dalam JavaScript sisi klien karena memungkinkan efek animasi, seperti konten dokumen memudar dari tepi kanan, misalnya, atau daftar diciutkan dan diperluas, sehingga memungkinkan pengguna mengontrol berapa banyak konten yang ditampilkan. .informasi.

Mengelola Gaya Inline

Cara termudah untuk mengontrol gaya CSS adalah dengan memanipulasi atribut gaya elemen dokumen individual. Seperti kebanyakan atribut HTML, atribut style berhubungan dengan properti dengan nama yang sama pada objek Elemen dan dapat dimanipulasi dalam skrip JavaScript. Namun, properti style memiliki satu ciri khas: nilainya bukan string, melainkan objek CSSStyleDeclaration. Properti objek ini mewakili properti CSS yang ditentukan dalam atribut gaya HTML.

Misalnya, untuk menampilkan konten elemen teks e dalam font besar, tebal, dan berwarna biru, Anda dapat melakukan hal berikut untuk menulis nilai yang diinginkan ke properti yang sesuai dengan ukuran font, berat font, dan gaya warna properti:

E.style.fontSize = "24px"; e.style.fontWeight = "tebal"; e.style.color = "biru";

Saat bekerja dengan properti gaya objek CSSStyleDeclaration, ingatlah bahwa semua nilai harus ditentukan sebagai string. Dalam style sheet atau atribut style Anda dapat menulis:

Posisi: mutlak; keluarga font: sans-serif; warna latar belakang: #ffffff;

Untuk melakukan hal yang sama pada elemen e di JavaScript, Anda perlu mengapit semua nilai dalam tanda kutip:

E.style.position = "mutlak"; e.style.fontFamily = "sans-serif"; e.style.backgroundColor = "#ffffff";

Perhatikan bahwa titik koma tidak disertakan dalam nilai string. Ini adalah titik koma yang digunakan dalam sintaksis JavaScript. Titik koma yang digunakan dalam style sheet CSS tidak diperlukan dalam nilai string yang disetel menggunakan JavaScript.

Selain itu, ingat bahwa semua properti pemosisian harus menyertakan satuan ukuran. Itu adalah:

E.style.kiri = 300; // Salah: ini angka, bukan string e.style.left = "300"; // Salah: unit hilang e.style.left = "300px"; // Benar

Unit diperlukan saat menyetel properti gaya di JavaScript - sama seperti saat menyetel properti gaya di lembar gaya.

Banyak properti gaya CSS, seperti ukuran font, berisi tanda hubung di namanya. JavaScript menafsirkan tanda hubung sebagai tanda minus, sehingga ekspresi berikut tidak dapat ditulis:

E.style.font-size = "24px"; // Kesalahan sintaks!

Jadi, nama properti objek CSSStyleDeclaration sedikit berbeda dari nama properti CSS sebenarnya. Jika nama properti CSS berisi tanda hubung, nama properti objek CSSStyleDeclaration dibentuk dengan menghilangkan tanda hubung dan menggunakan huruf kapital tepat setelah masing-masing tanda hubung. Dengan kata lain, properti CSS border-left-width diakses melalui properti borderLeftWidth, dan properti CSS font-family dapat diakses melalui properti fontFamily.

Selain itu, ketika properti CSS, seperti float, memiliki nama yang cocok dengan kata cadangan JavaScript, nama tersebut diawali dengan "css" untuk membuat nama properti objek CSSStyleDeclaration yang valid. Artinya, untuk membaca atau mengubah nilai properti float CSS suatu elemen, Anda harus menggunakan properti cssFloat dari objek CSSStyleDeclaration.

Atribut gaya elemen HTML adalah gaya sebarisnya, dan mengesampingkan aturan gaya apa pun di lembar CSS. Gaya sebaris umumnya mudah digunakan untuk menetapkan nilai gaya, dan ini adalah pendekatan yang digunakan dalam semua contoh di atas. Skrip dapat membaca properti objek CSSStyleDeclaration yang mewakili gaya sebaris, tetapi skrip mengembalikan nilai yang berarti hanya jika sebelumnya disetel oleh skrip JavaScript atau jika elemen HTML memiliki atribut gaya sebaris yang menyetel properti yang diinginkan.

Misalnya, dokumen mungkin menyertakan lembar gaya yang menetapkan margin kiri untuk semua paragraf menjadi 30 piksel, namun membaca properti leftMargin dari salah satu elemen ini akan mengembalikan baris kosong kecuali paragraf tersebut memiliki atribut gaya yang mengesampingkan nilai yang ditetapkan oleh lembar gaya.

Membaca gaya sebaris suatu elemen sangat menantang ketika membaca properti gaya yang memiliki unit dan properti notasi steno: skrip harus menyertakan implementasi penguraian string gaya CSS yang canggih agar nilai dapat diekstraksi dan digunakan. Secara umum, gaya elemen sebaris nyaman digunakan hanya untuk mengatur gaya.

Terkadang lebih mudah untuk membaca atau menulis satu baris ke dalam gaya inline suatu elemen daripada mengakses objek CSSStyleDeclaration. Untuk melakukannya, Anda dapat menggunakan metode getAttribute() dan setAttribute() dari objek Element atau properti cssText dari objek CSSStyleDeclaration:

// Kedua pernyataan di bawah mengatur atribut style // dari elemen e ke string s: e.setAttribute("style", s); e.style.cssText = s; // Kedua pernyataan di bawah ini mendapatkan nilai atribut style elemen e // sebagai string: s = e.getAttribute("style"); s = e.style.cssTeks;

Membuat Efek Animasi Menggunakan CSS

Salah satu penggunaan CSS yang paling umum adalah dalam rendering efek animasi visual. Anda dapat mengimplementasikannya menggunakan metode setTimeout() atau setInterval(), menggunakannya untuk mengatur beberapa panggilan ke fungsi yang mengubah gaya sebaris suatu elemen.

// Membuat elemen e relatif dapat diposisikan dan memindahkannya ke kiri dan ke kanan. // Argumen pertama dapat berupa objek elemen atau nilai atribut id dari // elemen yang diinginkan. Jika Anda meneruskan fungsi sebagai argumen kedua, fungsi tersebut akan dipanggil dengan e // sebagai argumen saat animasi selesai diputar. Argumen ketiga menentukan //nilai offset elemen e. Defaultnya adalah 5 piksel. // Argumen keempat menentukan berapa lama efeknya akan berlangsung. // Secara default efeknya bertahan 500ms. function shake(e, oncomplete, distance, time) ( // Memproses argumen if (typeof e === "string") e = document.getElementByld(e); if (!time) time = 500; if (!distance) distance = 5; var originalStyle = e.style.cssText; // Pertahankan gaya asli e e.style.position = "relative"; // Jadikan posisi relatif dapat diposisikan var start = (new Date()).getTime(); / / Ingat saat animasi dimulai animate(); // Memulai animasi // Fungsi ini memeriksa waktu yang telah berlalu dan mengubah koordinat e. // Jika tiba waktunya untuk mengakhiri animasi, fungsi ini mengembalikan keadaan awal // dari animasi elemen e. Jika tidak, ia akan mengubah koordinat e dan menjadwalkan panggilan berikutnya. function animate() ( var now = (new Date()).getTime(); // Dapatkan waktu saat ini var elapsed = now-start; / / Berapa banyak waktu yang telah berlalu sejak awal? var fraksi = berlalu / waktu; // Fraksi waktu yang dibutuhkan? if (fraksi

Baik shake() dan fadeOut() menggunakan fungsi panggilan balik opsional sebagai argumen kedua. Jika fungsi ini ditentukan, maka akan dipanggil ketika efek animasi selesai diputar. Elemen yang efek animasinya diterapkan akan diteruskan ke fungsi panggilan balik sebagai argumen. Markup HTML berikut membuat tombol yang, ketika diklik, menghasilkan efek goyang dan kemudian efek larut:

Klik saya!

Perhatikan betapa miripnya fungsi shake() dan fadeOut() satu sama lain. Keduanya dapat berfungsi sebagai template untuk mengimplementasikan efek animasi serupa menggunakan properti CSS.

Gaya Terhitung

Properti style elemen menentukan gaya inline elemen. Ini memiliki keunggulan dibandingkan semua style sheet dan dapat berhasil digunakan untuk mengatur properti CSS untuk mengubah tampilan visual suatu elemen. Namun, secara umum tidak ada gunanya memanggilnya ketika Anda ingin mengetahui gaya sebenarnya yang diterapkan pada suatu elemen. Apa yang diperlukan dalam hal ini disebut gaya terkomputasi.

Gaya yang dihitung suatu elemen adalah kumpulan nilai properti yang diperoleh (atau dihitung) oleh browser dari gaya sebaris dan semua aturan dari semua lembar gaya yang berlaku untuk elemen: ini adalah kumpulan properti yang sebenarnya digunakan saat merender elemen elemen. Seperti gaya sebaris, gaya yang dihitung diwakili oleh objek CSSStyleDeclaration. Namun, tidak seperti gaya sebaris, gaya yang dihitung bersifat hanya-baca. Gaya ini tidak dapat diubah, tetapi objek CSSStyleDeclaration yang dihitung memungkinkan Anda mengetahui secara pasti nilai properti gaya yang digunakan browser saat merender elemen terkait.

Anda bisa mendapatkan gaya komputasi suatu elemen menggunakan metode getComputedStyle() pada objek Window. Argumen pertama untuk metode ini adalah elemen yang gaya terhitungnya ingin Anda kembalikan. Argumen kedua diperlukan dan biasanya meneruskan null atau string kosong, namun dapat juga meneruskan string dengan nama elemen semu CSS seperti "::before", "::after", ":first-line" atau " :surat pertama":

Var title = document.getElementById("section1title"); var titlestyles = window.getComputedStyle(elemen, null);

Nilai kembalian metode getComputedStyle() adalah objek CSSStyleDeclaration yang mewakili semua gaya yang diterapkan ke elemen tertentu (atau elemen semu). Ada banyak perbedaan signifikan antara objek CSSStyleDeclaration yang mewakili gaya inline dan gaya yang dihitung:

    Properti gaya yang dihitung bersifat hanya baca.

    Properti gaya terhitung memiliki nilai absolut: satuan ukuran relatif, seperti persentase dan poin, dikonversi ke nilai absolut. Properti apa pun yang menentukan ukuran (seperti lebar margin atau ukuran font) akan memiliki nilai yang dinyatakan dalam piksel. Artinya, nilainya akan berupa string dengan akhiran "px", jadi Anda perlu menguraikannya, tetapi Anda tidak perlu khawatir tentang pendefinisian dan konversi satuan. Nilai properti yang menentukan warna akan dikembalikan dalam format "rgb(#,#,#)" atau "rgba(#,#,#,#)".

    Properti yang merupakan notasi singkat tidak dievaluasi - hanya properti fundamental yang mendasarinya. Misalnya, Anda tidak boleh mencoba mendapatkan nilai properti margin, melainkan mengakses properti marginLeft, marginTop, dll.

    Properti cssText dari gaya yang dihitung tidak ditentukan.

Bekerja dengan gaya terkomputasi bisa jadi cukup rumit, dan mengaksesnya mungkin tidak selalu memberikan informasi yang Anda harapkan. Pertimbangkan properti font-family sebagai contoh: ia menerima daftar nama keluarga font yang dipisahkan koma untuk kompatibilitas. Saat membaca properti fontFamily dari gaya yang dihitung, Anda menunggu nilai gaya font-family paling spesifik yang diterapkan ke elemen. Dan dalam kasus ini, nilai seperti “arial, helvetica, sans-serif” dapat dikembalikan, yang tidak menjelaskan apa pun tentang jenis huruf font sebenarnya yang digunakan.

Mengelola Style Sheet

Sejauh ini kita telah melihat cara menyetel dan mendapatkan nilai properti gaya CSS dan kelas elemen individual. Namun, ada juga kemungkinan memanipulasi style sheet CSS itu sendiri. Hal ini biasanya tidak diperlukan, namun terkadang berguna, dan bagian ini akan menjelaskan secara singkat teknik yang mungkin dilakukan.

Saat bekerja dengan style sheet itu sendiri, Anda akan menemukan dua jenis objek. Tipe pertama adalah objek Elemen, yang mewakili elemen dan berisi atau mereferensikan style sheet. Ini adalah elemen dokumen normal, dan jika Anda mendefinisikan atribut id pada elemen tersebut, Anda dapat memilihnya menggunakan metode document.getElementById().

Tipe objek kedua adalah objek CSSStyleSheet, yang mewakili style sheet itu sendiri. Properti document.styleSheets mengembalikan objek seperti array read-only yang berisi objek CSSStyleSheet yang mewakili style sheet dokumen. Jika Anda mendefinisikan atribut title pada elemen or yang mendefinisikan atau mereferensikan style sheet, objek tersebut akan tersedia sebagai properti objek CSSStyleSheet dengan nama yang ditentukan dalam atribut title.

Bagian berikut menjelaskan operasi apa yang dapat dilakukan pada elemen dan objek stylesheet ini.

Mengaktifkan atau menonaktifkan style sheet

Teknik paling sederhana untuk bekerja dengan style sheet juga paling portabel dan dapat diandalkan. Elemen dan objek CSSStyleSheet menentukan properti nonaktif yang dapat dibaca dan ditulis oleh skrip JavaScript. Seperti namanya, jika properti yang dinonaktifkan disetel ke true, stylesheet akan dinonaktifkan dan akan diabaikan oleh browser.

Hal ini ditunjukkan dengan jelas oleh fungsidisableStylesheet() di bawah. Jika Anda memberinya nomor, itu akan menafsirkannya sebagai indeks ke dalam array document.styleSheets. Jika Anda memberikannya sebuah string, ia akan menafsirkannya sebagai pemilih CSS, meneruskannya ke metode document.querySelectorAll(), dan menyetel properti nonaktif dari semua elemen yang diterima ke true:

Fungsi menonaktifkanStylesheet(ss) ( if (typeof ss === "angka") document.styleSheets.disabled = true; else ( var lembar = document.querySelectorAll(ss); for(var i = 0; i

Mendapatkan, menyisipkan, dan menghapus aturan dari style sheet

Selain menyediakan kemampuan untuk mengaktifkan atau menonaktifkan style sheet, objek CSSStyleSheet juga mendefinisikan API untuk mengambil, menyisipkan, dan menghapus aturan gaya dari style sheet. IE8 dan versi sebelumnya mengimplementasikan API yang sedikit berbeda dari API standar yang diterapkan oleh browser lain.

Secara umum, memanipulasi style sheet secara langsung jarang berguna. Daripada menambahkan aturan baru ke style sheet, biasanya lebih baik membiarkannya statis dan bekerja dengan properti className elemen. Namun, jika Anda ingin memberikan kontrol penuh kepada pengguna atas style sheet halaman web Anda, Anda mungkin ingin menerapkan manipulasi style sheet dinamis.

Objek CSSStyleSheet disimpan dalam array document.styleSheets. Objek CSSStyle Sheet memiliki properti cssRules yang menyimpan serangkaian aturan gaya:

Var firstRule = dokumen.styleSheets.cssRules;

Di IE properti ini disebut aturan, bukan cssRules.

Elemen cssRules atau array aturan adalah objek CSSRule. Dalam API standar, objek CSSRule dapat mewakili semua jenis aturan CSS, termasuk @rules seperti arahan @import dan @page. Namun, di IE, array aturan hanya dapat berisi aturan stylesheet yang sebenarnya.

Objek CSSRule memiliki dua properti yang dapat digunakan secara portabel. (Dalam API standar, aturan non-gaya tidak memiliki properti ini, jadi Anda mungkin harus melewatinya saat menelusuri style sheet.) Properti selectorText adalah pemilih CSS untuk aturan tersebut, dan properti style adalah referensi ke a objek CSSStyleDeclaration yang dapat ditulis yang menjelaskan gaya yang terkait dengan pemilih ini. Sebagai pengingat, CSSStyleDeclaration adalah tipe yang sama yang digunakan untuk mewakili gaya inline dan komputasi.

Objek CSSStyleDeclaration dapat digunakan untuk membaca aturan yang sudah ada atau membuat gaya baru. Seringkali, ketika menelusuri style sheet, teks dari aturan itu sendirilah yang menarik perhatian, bukan representasi yang diurai dari aturan tersebut. Dalam hal ini, Anda dapat menggunakan properti cssText dari objek CSSStyleDeclaration, yang berisi aturan dalam representasi teks.

Selain kemampuan untuk mengambil dan memodifikasi aturan style sheet yang ada, Anda memiliki kemampuan untuk menambahkan aturan dan menghapus aturan dari style sheet. Antarmuka aplikasi standar mendefinisikan metode insertRule() dan deleteRule() yang memungkinkan Anda menambah dan menghapus aturan:

Document.styleSheets.insertRule("H1 ( bobot teks: tebal; )", 0);

Browser IE tidak mendukung metode insertRule() dan deleteRule(), namun mendefinisikan fungsi addRule() dan deleteRule() yang hampir setara dengannya. Satu-satunya perbedaan utama (selain nama fungsi) adalah addRule() mengharapkan untuk menerima pemilih dan gaya sebagai teks dalam dua argumen terpisah.

Membuat Style Sheet Baru

Terakhir, Anda dapat membuat style sheet yang benar-benar baru dan menambahkannya ke dokumen Anda. Di sebagian besar browser, operasi ini dilakukan menggunakan teknik standar yang diterapkan di DOM: elemen baru dibuat dan dimasukkan ke dalam dokumen di bagian tersebut, kemudian konten style sheet ditambahkan menggunakan properti innerHTML. Namun, di IE8 dan versi sebelumnya, objek CSSStyleSheet baru harus dibuat menggunakan metode non-standar dokumen.createStyleSheet(), dan tambahkan teks style sheet menggunakan properti cssText.

Contoh di bawah ini menunjukkan pembuatan tabel baru:

// Menambahkan style sheet ke dokumen dan mengisinya dengan style yang ditentukan. // Argumen gaya dapat berupa string atau objek. Jika berupa string, // diinterpretasikan sebagai teks stylesheet. Jika itu adalah sebuah objek, maka setiap // propertinya harus mendefinisikan aturan gaya yang akan ditambahkan ke tabel. // Nama properti adalah penyeleksi, dan nilainya adalah fungsi gaya yang sesuai addStylesheet(styles) ( // Pertama, Anda perlu membuat lembar gaya baru var styleElt, styleSheet; if (document.createStyleSheet) ( //Jika IE API didefinisikan, gunakan styleSheet = document .createStyleSheet(); ) else ( var head = document.getElementsByTagName("head"); styleElt = document.createElement("style"); // Elemen baru head.appendChild(styleElt ); // Sisipkan ke // Sekarang tabel baru berada di akhir array styleSheet = document.styleSheets; ) // Sisipkan gaya ke dalam tabel if (typeof style === "string") ( // Argumen berisi definisi teks dari style sheet if (styleElt) styleElt.innerHTML = gaya; else styleSheet .cssText = gaya; // IE API ) else ( // Argumen objek dengan aturan untuk penyisipan var i = 0; for(pemilih dalam gaya) ( if (styleSheet.insertRule) ( var rule = pemilih + " (" + gaya + ")"; styleSheet.insertRule(rule, i++); ) else ( styleSheet.addRule(selector, gaya, i++); ) ) ) )

Abstrak: Akses ke style sheet. Properti lembar gaya. Menambah dan menghapus aturan. Mengubah gaya elemen. Nama kelas elemen.

Mari kita pertimbangkan (untuk saat ini) contoh teoretis - katakanlah ada situs web yang menyajikan serangkaian artikel teknis. Kami ingin menyorot beberapa artikel ini dengan carousel animasi yang keren, tetapi bagaimana dengan pengguna yang tidak mengaktifkan JavaScript karena alasan tertentu? Mengingat apa yang telah kami pelajari tentang JavaScript yang tidak mengganggu, kami ingin fungsionalitas situs Web berfungsi untuk pengguna tersebut juga, namun kami mungkin ingin mendesain situs secara berbeda untuk pengguna tersebut sehingga mereka dapat menggunakan situs dengan nyaman, bahkan tanpa carousel.

Jika Anda ingin menghapus aturan ini, Anda dapat memanggil fungsi stylesheet.deleteRule(index), dimana indeks akan menjadi indeks dari aturan yang akan dihapus.

Dalam contoh mendemonstrasikan artikel, Anda dapat membuat aturan yang membuat properti display sama dengan tidak ada untuk semua artikel tentang HTML dan JavaScript - lihat contoh carousel (http://dev.opera.com/articles/view/dynamic- style-css-javascript/carousel .html) untuk melihatnya beraksi.

Catatan: IE tidak menerapkan aturan sesuai standar. Ia menggunakan aturan alih-alih atribut cssRules. IE juga menggunakan deleteRule alih-alih deleteRule dan addRule( selector , rule, index) alih-alih insertRule .

Mengubah Gaya Elemen

Anda sekarang harus memahami cara mengedit style sheet yang terkait dengan halaman dan membuat serta memodifikasi aturan CSS di dalamnya. Bagaimana jika Anda ingin mengubah elemen tertentu di DOM? Menggunakan DOM API Anda dapat mengakses elemen halaman tertentu. Kembali ke contoh carousel, Anda dapat melihat bahwa fungsinya didefinisikan sedemikian rupa sehingga ketika Anda mengklik sebuah artikel, artikel tersebut akan disorot, sedangkan teks utama artikel tersebut ditampilkan di bawah.

Dengan menggunakan DOM, kita mengakses objek gaya, yang menjelaskan gaya dokumen. Objek gaya ini didefinisikan sebagai CSSStyleDeclaration; Penjelasan rinci mengenai hal ini dapat ditemukan dalam dokumentasi W3C pada antarmuka CSSStyleDeclaration (http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration). Objek gaya tidak bekerja dengan cara yang sama seperti beberapa properti lain yang ditentukan pada elemen HTML. Berbeda dengan element.href atau element.id yang mengembalikan string, element.style mengembalikan objek. Artinya, tidak mungkin menyetel gaya dengan menetapkan string ke element.style .

Objek gaya memiliki atribut yang sesuai dengan berbagai properti CSS yang ditentukan. Misalnya, style.color mengembalikan warna yang ditentukan pada elemen. Melakukan element.style.color = "red"; Anda dapat mengubah gaya secara dinamis. Di bawah ini adalah fungsi yang mengubah warna elemen menjadi merah ketika melewati id elemen.

fungsi colorElementRed(id) ( var el = document.getElementById(id); el.style.color = "red"; )

Anda juga dapat menggunakan setAttribute(key, value) untuk menata gaya suatu elemen. Misalnya, atur warna suatu elemen menjadi merah dengan memanggil element.setAttribute("style", "color: red"); , tapi hati-hati karena ini akan menghilangkan perubahan apa pun yang dibuat pada objek gaya.

Ketika gaya sebuah elemen ditentukan dengan cara ini, itu sama seperti jika kita menentukannya sebagai deklarasi atribut style dari elemen html. Gaya ini hanya akan diterapkan ketika kepentingan dan kekhususan aturan lebih besar daripada aturan lain yang diterapkan pada elemen (kekhususan dijelaskan dalam Bab 28 tentang Pewarisan dan Cascading CSS).

Beberapa dari Anda mungkin bertanya-tanya apa yang terjadi jika properti CSS tertentu memiliki tanda hubung. Pada kasus ini

Pembaruan terakhir: 11/1/2015

Ada dua pendekatan utama untuk bekerja dengan properti gaya elemen di JavaScript:

    Mengubah properti gaya

    Mengubah nilai atribut kelas

properti gaya

Properti style mewakili objek kontrol gaya yang kompleks dan memetakan langsung ke atribut style dari elemen html. Objek ini berisi sekumpulan properti CSS: properti element.style.CSS. Misalnya, mari kita atur warna font:

Var root = dokumen.documentElement; // atur gaya root.style.color = "biru"; // dapatkan nilai gaya document.write(root.style.color); //biru

Dalam hal ini, nama properti color sama dengan nama properti css. Demikian pula, kita bisa mengatur warna menggunakan css:

Html( warna:biru; )

Namun, sejumlah properti css memiliki tanda hubung di namanya, misalnya font-family . JavaScript tidak menggunakan tanda hubung untuk properti ini. Hanya huruf pertama setelah tanda hubung yang diubah menjadi huruf besar:

Var root = dokumen.documentElement; root.style.fontFamily = "Verdana";

properti namakelas

Menggunakan properti className, Anda dapat mengatur atribut kelas elemen html. Misalnya:

.blueStyle( color:blue; font-family:Verdana; ) .article( font-size:20px; ) Judul artikel

Paragraf pertama

Paragraf kedua

var articleDiv = document.querySelector("div.artikel"); // menyetel kelas baru articleDiv.className = "blueStyle"; // dapatkan nama kelas document.write(articleDiv.className);

Dengan menggunakan kelas, Anda tidak perlu mengonfigurasi setiap properti css menggunakan properti style.

Namun harus diperhatikan bahwa nilai atribut class sebelumnya dihapus. Oleh karena itu, jika kita perlu menambahkan sebuah kelas, kita perlu menggabungkan namanya dengan kelas lama:

ArticleDiv.className = artikelDiv.className + "blueStyle";

Dan jika Anda perlu menghapus semua kelas sepenuhnya, Anda dapat menetapkan string kosong ke properti:

ArticleDiv.className = "";

properti Daftar Kelas

Kita telah membahas di atas bagaimana menambahkan kelas ke sebuah elemen, tetapi untuk mengelola beberapa kelas akan lebih mudah menggunakan properti classList. Properti ini mewakili objek yang mengimplementasikan metode berikut:

    add(className) : menambahkan kelas className

    delete(className) : menghapus kelas className

    toggle(className) : Mengalihkan kelas elemen ke className. Jika tidak ada kelas maka ditambahkan, jika ada maka dihapus

Misalnya:

Var articleDiv = document.querySelector("div.artikel"); // menghapus kelas articleDiv.classList.remove("article"); // menambahkan kelas articleDiv.classList.add("blueStyle"); // alihkan kelas articleDiv.classList.toggle("article");