Zwykle mam plik CSS, który ma następującą zasadę:
#my-window {
position: fixed;
z-index: 102;
display:none;
top:50%;
left:50%;
}
Jak mogę uniknąć tworzenia takiego statycznego pliku CSS, dodając informacje CSS podczas działań środowiska wykonawczego do ciała lub coś podobnego? (tylko przy użyciu jQuery)
Chcę to zdefiniować raz, ale za pomocą jQuery i użyć go wiele razy później; dlatego nie chcę dodawać go za każdym razem do określonych elementów DOM.
Znam proste funkcje ( css("attr1", "value");
), ale jak mogę stworzyć kompletną regułę CSS wielokrotnego użytku?
body
. tj.$("<style>...</style>").appendTo("body");
Po prostu
Zauważyłeś ukośniki? Służą do łączenia ciągów znaków w nowych liniach. Pozostawienie ich powoduje błąd.
źródło
możesz zastosować css i obiekt. Możesz więc zdefiniować swój obiekt w javascript w następujący sposób:
A następnie po prostu zastosuj go do wszystkich wymaganych elementów
To jest wielokrotnego użytku. W jakim celu byś to zrobił?
źródło
Możesz użyć insertRule, jeśli nie potrzebujesz obsługi IE <9, zgodnie z dottoro . Jest tam również trochę kodu dla różnych przeglądarek.
źródło
Oto wtyczka jquery, która pozwala wstrzyknąć CSS:
https://github.com/kajic/jquery-injectCSS
Przykład:
źródło
To nie jest nic nowego w porównaniu z innymi odpowiedziami, ponieważ wykorzystuje koncepcję opisaną tutaj i tutaj , ale chciałem skorzystać z deklaracji w stylu JSON:
Stosowanie:
Nie jestem pewien, czy obejmuje on wszystkie możliwości CSS, ale jak dotąd działa dla mnie. Jeśli nie, uważaj to za punkt wyjścia do własnych potrzeb. :)
źródło
Jeśli nie chcesz na stałe kodować CSS w bloku / pliku CSS, możesz użyć jQuery do dynamicznego dodawania CSS do elementów HTML, identyfikatorów i klas.
źródło
Dodanie niestandardowych reguł jest przydatne, jeśli utworzysz widget jQuery, który wymaga niestandardowego CSS (np. Rozszerzenie istniejącej struktury jQueryUI CSS dla konkretnego widżetu). To rozwiązanie opiera się na odpowiedzi Tarasa (pierwsza powyżej).
Zakładając, że twój znacznik HTML ma przycisk z identyfikatorem „addrule” i div z identyfikatorem „target” zawierający trochę tekstu:
Kod jQuery:
Zaletą tego podejścia jest to, że można ponownie wykorzystywać zmienne cssrule w kodzie, aby dowolnie dodawać lub odejmować reguły. Jeśli cssrules jest osadzony w trwałym obiekcie, takim jak widget jQuery, masz do dyspozycji stałą lokalną zmienną.
źródło
Pamiętaj, że
jQuery().css()
nie zmienia reguł arkusza stylów, zmienia jedynie styl każdego dopasowanego elementu.Zamiast tego oto funkcja javascript, którą napisałem, aby zmodyfikować same reguły arkuszy stylów.
Zalety:
<head>
skrypcie przed utworzeniem elementów DOM, a zatem przed pierwszym renderowaniem dokumentu, unikając irytującego wizualnie renderowania, a następnie obliczania, a następnie renderowania. W jQuery musisz poczekać na utworzenie elementów DOM, a następnie zmienić ich styl i zrenderować.jQuery(newElement).css()
Ostrzeżenia:
s.cssRules
zdefiniować, więc wrócą do tego,s.rules
co ma pewne osobliwości, takie jak dziwne / błędne zachowanie związane z selektorami rozdzielanymi przecinkami, jak"body, p"
. Jeśli ich unikniesz, możesz być w porządku w starszych wersjach IE bez modyfikacji, ale jeszcze tego nie przetestowałem."first, second"
tzn. separatorem jest przecinek, po którym następuje spacja.!important
modyfikatora bez większych problemów.Jeśli chcesz ulepszyć tę funkcję, znajdziesz tutaj przydatne dokumenty API: https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet
źródło
W (nietypowych) przypadkach, w których chcesz często dynamicznie zmieniać style - np. Aplikacja do budowania motywów - dodanie tagów <style> lub wywołanie CSSStyleSheet.insertRule () spowoduje powstanie arkusza stylów, który może mieć wydajność i wygląd implikacje debugowania.
Moje podejście pozwala tylko na jedną regułę na kombinację selektora / właściwości, usuwając wszelkie istniejące po ustawieniu dowolnej reguły. Interfejs API jest prosty i elastyczny:
Stosowanie:
źródło
Co jeśli dynamicznie napisałeś sekcję <skrypt> na swojej stronie (z twoimi dynamicznymi regułami), a następnie użyłeś jQuerys .addClass (klasa), aby dodać te dynamicznie tworzone reguły?
Nie próbowałem tego, po prostu oferując teorię, która może zadziałać.
źródło
Trochę leniwa odpowiedź na to pytanie, ale następujący artykuł może pomóc: http://www.javascriptkit.com/dhtmltutors/externalcss3.shtml
Spróbuj także wpisać „zmodyfikuj reguły css” w Google
Nie jestem pewien, co by się stało, gdybyś próbował zawinąć document.styleSheets [0] za pomocą jQuery (), choć możesz spróbować
źródło
Możesz użyć wtyczki cssRule . Kod był wtedy prosty:
W jednym z dotychczasowych komentarzy zapytano, dlaczego ktoś chciałby zrobić coś takiego. Na przykład tworzenie stylów dla listy, w której każdy element potrzebuje odrębnego koloru tła (np. Lista kalendarzy GCal), w której liczba kolumn nie jest znana do czasu uruchomienia.
źródło
div:before{content:'name: ';}
Oto konfiguracja, która daje kontrolę nad kolorami za pomocą tego obiektu Json
ta funkcja
aby stworzyć ten element stylu
źródło
jeśli nie chcesz przypisywać display: none do klasy css, odpowiednie podejście do dołączenia do stylu, jQuery.Rule wykona zadanie.
W niektórych przypadkach chcesz zastosować słupki przed zdarzeniem dołączającym zawartość ajax i zanikać zawartość po dołączeniu i to jest to!
źródło
Tutaj masz funkcję, aby uzyskać pełną definicję klasy CSS:
źródło
Możesz użyć tej biblioteki o nazwie cssobj
W dowolnym momencie możesz zaktualizować swoje reguły w ten sposób:
Potem zmieniłeś regułę. jQuery nie robi tego lib.
źródło
Niedawno miałem z tym problem i przy programowaniu witryny iPhone / iPod zastosowałem dwa różne podejścia.
Pierwszy sposób, w jaki natrafiłem, szukając zmian orientacji, aby zobaczyć, czy telefon jest pionowy, czy poziomy, jest to bardzo statyczny sposób, ale prosty i sprytny:
W CSS:
W pliku JS:
W PHP / HTML (najpierw zaimportuj plik JS, a następnie w tagu body):
Zasadniczo wybiera inny wstępnie ustawiony blok CSS do uruchomienia w zależności od wyniku zwróconego z pliku JS.
Również bardziej dynamiczny sposób, który wolałem, to bardzo prosty dodatek do znacznika skryptu lub pliku JS:
Działa to w większości przeglądarek, ale w IE najlepiej jest zabrać amunicję za pomocą czegoś mocniejszego:
Lub możesz użyć
getElementByClass()
i zmienić zakres przedmiotów.Mam nadzieję że to pomoże!
Popiół.
źródło
Być może możesz umieścić informacje o stylu w osobnej klasie w pliku css, np .:
a następnie użyć jQuery w punkcie, w którym chcesz dodać tę nazwę klasy do elementu?
źródło
Możesz po prostu stworzyć klasę css o nazwie coś takiego jak .fixed-object, w którym jest cały twój css ...
Następnie w jquery, kiedy chcesz, aby coś miało ten styl, po prostu dodaj do niego tę klasę ...
To chyba najłatwiejszy sposób, chyba że nie rozumiem, co należy zrobić.
źródło
Używając .addClass () w jquery, możemy dynamicznie dodawać styl do elementów na stronie. na przykład. mamy styl
Teraz w stanie gotowości jquery możemy dodać css jak .addClass (myStyle)
źródło