Saya mencari cara untuk memasukkan <style>
tag ke halaman HTML dengan JavaScript.
Cara terbaik yang saya temukan sejauh ini:
var divNode = document.createElement("div");
divNode.innerHTML = "<br><style>h1 { background: red; }</style>";
document.body.appendChild(divNode);
Ini berfungsi di Firefox, Opera dan Internet Explorer tetapi tidak di Google Chrome. Juga agak jelek dengan <br>
di depan untuk IE.
Adakah yang tahu cara membuat <style>
tag itu
Lebih baik
Bekerja dengan Chrome?
Atau mungkin
Ini adalah hal yang tidak standar yang harus saya hindari
Tiga browser yang berfungsi hebat dan siapa yang menggunakan Chrome?
javascript
html
css
Ameena sana
sumber
sumber
document.head
didukung di semua browser utama.document.querySelector("head")
? Acara ini didukung oleh IE8 oleh sumberquerySelector()
; hari ini, saya mungkin akan ikutdocument.head
, tersedia sejak IE9style.styleSheet.cssText
. Sebelum itu ditambahkanstyle.styleSheet
adalah nol.Berikut ini skrip yang menambahkan IE-style
createStyleSheet()
danaddRule()
metode ke browser yang tidak memilikinya:Anda dapat menambahkan file eksternal melalui
dan secara dinamis membuat aturan melalui
sumber
Saya berasumsi bahwa Anda ingin menyisipkan
style
tag versuslink
tag (mereferensikan CSS eksternal), jadi itulah yang dilakukan contoh berikut:Juga, saya perhatikan dalam pertanyaan Anda yang Anda gunakan
innerHTML
. Ini sebenarnya cara non-standar untuk memasukkan data ke halaman. Praktik terbaik adalah membuat simpul teks dan menambahkannya ke simpul elemen lain.Sehubungan dengan pertanyaan terakhir Anda, Anda akan mendengar beberapa orang mengatakan bahwa pekerjaan Anda harus bekerja di semua browser. Itu semua tergantung pada audiens Anda. Jika tidak ada seorang pun di audiens Anda yang menggunakan Chrome, maka jangan khawatir; namun, jika Anda ingin menjangkau pemirsa sebesar mungkin, maka yang terbaik adalah mendukung semua browser kelas A utama
sumber
styleNode.styleSheet.cssText = ...
<style>
tag harus ditempatkan di dalam<head>
elemen, dan setiap tag yang ditambahkan harus ditambahkan ke bagian bawah<head>
tag.Menggunakan insertAdjacentHTML untuk menyuntikkan tag gaya ke tag kepala dokumen :
DOM asli:
jQuery :
sumber
Contoh yang berfungsi dan sesuai dengan semua browser:
sumber
style
tidak memilikirel
atauhref
atribut - maksud Andalink
?link
elemen dengan pertanyaan? OP memintastyle
elemen. Jawaban ini tidak ada hubungannya dengan pertanyaanstyle
adalah untuk menambahkan gaya sebaris,link
benar untuk sumber stylesheet dan ini memiliki keuntungan menghindari masalah lintas-peramban.Seringkali ada kebutuhan untuk mengesampingkan aturan yang ada, jadi menambahkan gaya baru ke HEAD tidak berfungsi dalam setiap kasus.
Saya datang dengan fungsi sederhana ini yang merangkum semua pendekatan "append to the BODY" yang tidak valid dan hanya lebih nyaman untuk digunakan dan debug (IE8 +).
Demo: codepen , jsfiddle
sumber
<style>
tag di luar<head>
tag. Tag gaya harus muncul di tempat lain selain di dalam<head>
tag. Itu standar html yang diadopsi secara luas. Ada atribut style untuk style inline dan atribut style dapat diterapkan ke tag apa pun di dalam<body>
tag, termasuk<body>
tag itu sendiri.Variabel objek ini akan menambahkan tag gaya ke tag kepala dengan atribut tipe dan satu aturan transisi sederhana di dalam yang cocok dengan setiap id / kelas / elemen. Jangan ragu untuk memodifikasi properti konten dan menyuntikkan sebanyak mungkin aturan yang Anda butuhkan. Pastikan saja aturan css di dalam konten tetap berada dalam satu baris (atau 'lepas' setiap baris baru, jika Anda mau).
sumber
Berikut adalah varian untuk menambahkan kelas secara dinamis
sumber
Semua baik, tetapi untuk styleNode.cssText untuk bekerja di IE6 dengan simpul yang dibuat oleh javascipt, Anda perlu menambahkan node ke dokumen sebelum Anda mengatur cssText;
info lebih lanjut @ http://msdn.microsoft.com/en-us/library/ms533698%28VS.85%29.aspx
sumber
Fungsi ini akan menyuntikkan css setiap kali Anda memanggil fungsi
appendStyle
seperti ini:appendStyle('css you want to inject')
Ini berfungsi dengan menyuntikkan
style
simpul ke kepala dokumen. Ini adalah teknik yang mirip dengan apa yang biasa digunakan untuk memuat JavaScript. Ini bekerja secara konsisten di sebagian besar browser modern.Anda juga dapat malas memuat file CSS eksternal dengan menggunakan cuplikan berikut:
sumber
Kau menulis:
Kenapa tidak ini?
Karenanya, Anda dapat menambahkan aturan CSS dengan mudah ke kode HTML:
... atau langsung ke DOM:
Saya berharap ini bekerja di mana saja kecuali browser kuno.
Pasti berfungsi di Chrome pada tahun 2019.
sumber
Sejauh ini solusi paling mudah. Yang harus Anda lakukan adalah mengetikkan sama seperti bagaimana Anda biasanya mendeklarasikan
style
tag, di antara backtickssumber
Jika masalah yang Anda hadapi adalah menyuntikkan string CSS ke halaman, lebih mudah melakukan ini dengan
<link>
elemen daripada<style>
elemen.Berikut ini menambahkan
p { color: green; }
aturan ke halaman.Anda dapat membuat ini dalam JavaScript hanya dengan URL yang menyandikan string CSS Anda dan menambahkannya
HREF
atribut. Jauh lebih sederhana daripada semua kebiasaan<style>
elemen atau secara langsung mengakses stylesheet.Ini akan bekerja di IE 5.5 ke atas
sumber
http://jonraasch.com/blog/javascript-style-node
sumber