Jak dodać reguły CSS (np. strong { color: red }
) Za pomocą JavaScript?
javascript
css
nickf
źródło
źródło
<strong>
do dokumentu zostanie dodany nowy element.Odpowiedzi:
Możesz to również zrobić za pomocą interfejsów DOM Level 2 CSS ( MDN ):
... we wszystkich oprócz (naturalnie) IE8 i wcześniejszych, które używają własnego marginalnie innego sformułowania:
Jest to teoretyczna zaleta w porównaniu z metodą createElement-set-innerHTML polegającą na tym, że nie musisz martwić się o umieszczanie specjalnych znaków HTML w innerHTML, ale w praktyce elementami stylu są CDATA w starszym HTML i '<' i „&” są i tak rzadko używane w arkuszach stylów.
Musisz mieć arkusz stylów na miejscu, zanim będziesz mógł zacząć dodawać do niego w ten sposób. Może to być dowolny istniejący aktywny arkusz stylów: zewnętrzny, osadzony lub pusty, to nie ma znaczenia. Jeśli takiego nie ma, jedynym standardowym sposobem jego utworzenia jest w tej chwili createElement.
źródło
sheet = window.document.styleSheets[0]
(musisz mieć tam co najmniej jeden <style type = "text / css"> </style>).SecurityError: The operation is insecure.
Prostym i bezpośrednim podejściem jest utworzenie i dodanie nowego
style
węzła do dokumentu.źródło
document.body
jest również krótszy dodocument.getElementsByTagName("head")[0]
wpisania i szybszy do wykonania niż i pozwala uniknąć problemów z różnymi przeglądarkami w insertRule / addRule.document.head.appendChild
.document.body.appendChild(css);
ciebie, upewnij się, że nowy CSS zawsze jest ostatnią regułą.Rozwiązanie autorstwa Bena Blanka nie działałoby dla mnie w IE8.
Jednak to zadziałało w IE8
źródło
head
poprzedniego ustawienia.cssText
lub IE6-8 ulegnie awarii, jeślicssCode
zawiera @ -directive, na przykład@import
lub@font-face
, zobacz Aktualizacja do phpied.com/dynamic-script-and-style-elements-in-ie i stackoverflow .com / a / 7952904Oto nieco zaktualizowana wersja rozwiązania Chrisa Herringa , biorąc pod uwagę, że możesz również użyć
innerHTML
zamiast tworzenia nowego węzła tekstowego:źródło
head
poprzedniego ustawienia.cssText
lub IE6-8 ulegnie awarii, jeślicode
zawiera @ -directive, na przykład@import
lub@font-face
, zobacz aktualizację do phpied.com/dynamic-script-and-style-elements-in-ie i stackoverflow .com / a / 7952904Najkrótsza jedna wkładka
źródło
Możesz dodawać klasy lub atrybuty stylu element po elemencie.
Na przykład:
Gdzie możesz to zrobić.style.background, this.style.font-size, itp. Możesz również zastosować styl używając tej samej metody ala
Jeśli chcesz to zrobić w funkcji javascript, możesz użyć metody getElementByID zamiast „this”.
źródło
Ten prosty przykład dodania
<style>
nagłówka htmlStyl dynamiczny źródła - manipulowanie CSS za pomocą JavaScript
źródło
YUI niedawno dodał narzędzie specjalnie do tego celu. Zobacz stylesheet.js tutaj.
źródło
Oto moje rozwiązanie, aby dodać regułę css na końcu ostatniej listy arkuszy stylów:
źródło
Inną opcją jest użycie JQuery do przechowywania właściwości stylu wbudowanego elementu, dołączenie do niej, a następnie zaktualizowanie właściwości style elementu o nowe wartości. Następująco:
Następnie wykonaj go z nowymi atrybutami CSS jako obiektem.
Może to niekoniecznie najskuteczniejsza metoda (jestem otwarty na sugestie, jak to poprawić. :)), ale zdecydowanie działa.
źródło
Oto przykładowy szablon, który pomoże Ci rozpocząć
Wymaga bibliotek 0 i używa tylko javascript do wstrzykiwania HTML i CSS.
Funkcja została zapożyczona od użytkownika @Husky powyżej
Przydatne, jeśli chcesz uruchomić skrypt tampermonkey i chcesz dodać nakładkę przełączającą na stronie internetowej (np. Aplikację do notatek)
źródło
jeśli wiesz, że na
<style>
stronie istnieje co najmniej jeden tag, użyj tej funkcji:stosowanie :
źródło
Oto moja funkcja ogólnego przeznaczenia, która parametryzuje selektor CSS i reguły oraz opcjonalnie przyjmuje nazwę pliku css (z uwzględnieniem wielkości liter), jeśli zamiast tego chcesz dodać do konkretnego arkusza (w przeciwnym razie, jeśli nie podasz nazwy pliku CSS, utworzy nowy element stylu i dołączy go do istniejącej nagłówka. Stworzy co najwyżej jeden nowy element stylu i użyje go ponownie w przyszłych wywołaniach funkcji). Działa z FF, Chrome i IE9 + (może też wcześniej, nieprzetestowane).
źródło
używać
.css
w Jquery, takich jak$('strong').css('background','red');
źródło