Por lo general, tengo un archivo CSS que tiene la siguiente regla:
#my-window {
position: fixed;
z-index: 102;
display:none;
top:50%;
left:50%;
}
¿Cómo puedo evitar crear un archivo CSS estático agregando la información CSS durante las acciones de tiempo de ejecución al cuerpo, o algo similar? (solo usando jQuery)
Quiero definirlo una vez pero con jQuery y usarlo muchas veces más tarde; Es por eso que no quiero agregarlo cada vez a los elementos DOM específicos.
Conozco las características simples ( css("attr1", "value");
), pero ¿cómo puedo crear una regla CSS reutilizable completa?
body
. es decir$("<style>...</style>").appendTo("body");
Simplemente
Notado las barras diagonales? Se usan para unir cadenas que están en nuevas líneas. Dejarlos fuera genera un error.
fuente
Puede aplicar CSS y un objeto. Para que pueda definir su objeto en su JavaScript de esta manera:
Y luego simplemente aplíquelo a todos los elementos que desee
Entonces es reutilizable. ¿Para qué propósito harías esto?
fuente
Puede usar insertRule si no necesita admitir IE <9, según dottoro . También hay un poco de código de navegador cruzado allí.
fuente
Aquí hay un complemento jquery que le permite inyectar CSS:
https://github.com/kajic/jquery-injectCSS
Ejemplo:
fuente
Esto no es nada nuevo en comparación con algunas de las otras respuestas, ya que utiliza el concepto descrito aquí y aquí , pero quería utilizar la declaración de estilo JSON:
Uso:
No estoy seguro de si cubre todas las capacidades de CSS, pero hasta ahora funciona para mí. Si no es así, considérelo un punto de partida para sus propias necesidades. :)
fuente
Si no desea codificar el CSS en un bloque / archivo CSS, puede usar jQuery para agregar dinámicamente CSS a elementos, identificaciones y clases HTML.
fuente
Agregar reglas personalizadas es útil si crea un widget jQuery que requiere CSS personalizado (como extender el marco CSS jQueryUI existente para su widget en particular). Esta solución se basa en la respuesta de Taras (la primera de arriba).
Suponiendo que su marcado HTML tiene un botón con una identificación de "addrule" y un div con una identificación de "destino" que contiene algo de texto:
Código jQuery:
La ventaja de este enfoque es que puede reutilizar cssrules variables en su código para agregar o restar reglas a voluntad. Si cssrules está incrustado en un objeto persistente como un widget jQuery, tiene una variable local persistente con la que trabajar.
fuente
Tenga en cuenta que
jQuery().css()
no cambia las reglas de la hoja de estilo, solo cambia el estilo de cada elemento coincidente.En cambio, aquí hay una función de JavaScript que escribí para modificar las reglas de la hoja de estilo.
Ventajas:
<head>
secuencia de comandos antes de que se creen los elementos DOM y, por lo tanto, antes de la primera representación del documento, evitando una representación visualmente molesta, luego computar y luego volver a representar. Con jQuery, tendrías que esperar a que se creen los elementos DOM, luego cambiarles el estilo y volver a representarlos.jQuery(newElement).css()
Advertencias:
s.cssRules
definido, por lo que recurrirán as.rules
algunas peculiaridades, como el comportamiento extraño / con errores relacionado con los selectores delimitados por comas, como"body, p"
. Si los evita, es posible que esté bien en versiones anteriores de IE sin modificación, pero aún no lo he probado."first, second"
es decir, el delimitador es una coma seguida de un carácter de espacio.!important
modificador sin demasiados problemas.Si tiene ganas de hacer algunas mejoras en esta función, encontrará algunos documentos API útiles aquí: https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet
fuente
En los casos (inusuales) en los que desea poder cambiar dinámicamente los estilos a menudo, por ejemplo, una aplicación de creación de temas, agregar etiquetas <style> o llamar a CSSStyleSheet.insertRule () dará como resultado una hoja de estilos en crecimiento, que puede tener rendimiento y diseño implicaciones de depuración.
Mi enfoque solo permite una sola regla por combinación de selector / propiedad, borrando cualquier existente al establecer cualquier regla. La API es simple y flexible:
Uso:
fuente
¿Qué sucede si escribiste dinámicamente una sección <script> en tu página (con tus reglas dinámicas) y luego usaste jQuerys .addClass (clase) para agregar esas reglas creadas dinámicamente?
No he intentado esto, solo ofreciendo una teoría que podría funcionar.
fuente
Es un poco flojo responder esto, pero el siguiente artículo puede ayudar: http://www.javascriptkit.com/dhtmltutors/externalcss3.shtml
Además, intente escribir "modificar reglas CSS" en Google
No estoy seguro de lo que sucedería si intentara envolver un document.styleSheets [0] con jQuery () aunque podría intentarlo
fuente
Puede usar el complemento cssRule . El código era simple entonces:
Uno de los comentarios hasta ahora preguntaba por qué uno querría hacer tal cosa. Por ejemplo, crear estilos para una lista donde cada elemento necesita un color de fondo distinto (por ejemplo, la lista de calendarios de GCal) donde el número de columnas no se conoce hasta el tiempo de ejecución.
fuente
div:before{content:'name: ';}
Aquí hay una configuración que da comando sobre los colores con este objeto json
esta función
para producir este elemento de estilo
fuente
si no desea asignar una pantalla: ninguna a una clase css, el enfoque correcto para agregar estilo, jQuery.Rule hace el trabajo.
En algunos casos, desea aplicar stiles antes del evento de agregar contenido de ajax y desvanecer el contenido después de agregar, ¡y esto es todo!
fuente
Aquí tiene una función para obtener la definición completa de una clase CSS:
fuente
Puedes usar esta lib llamada cssobj
En cualquier momento puede actualizar sus reglas de esta manera:
Entonces tienes la regla cambiada. jQuery no es la lib haciendo esto.
fuente
He estado jugando con algo de esto recientemente y he usado dos enfoques diferentes al programar un sitio de iPhone / iPod.
La primera forma en que me encontré al buscar cambios de orientación para que pueda ver si el teléfono es vertical u horizontal, esta es una forma muy estática pero simple e inteligente:
En CSS:
En archivo JS:
En PHP / HTML (Importe su archivo JS primero y luego en la etiqueta del cuerpo):
Básicamente, esto elige un bloque CSS preestablecido diferente para ejecutarse dependiendo del resultado devuelto por el archivo JS.
También la forma más dinámica que preferí fue una adición muy simple a una etiqueta de script o su archivo JS:
Esto funciona para la mayoría de los navegadores, pero para IE es mejor quitarle las municiones con algo más estricto:
O puede usar
getElementByClass()
y cambiar una variedad de artículos.¡Espero que esto ayude!
Ceniza.
fuente
Tal vez pueda poner la información de estilo en una clase separada en su archivo CSS, por ejemplo:
y luego use jQuery en el punto que elija para agregar este nombre de clase al elemento?
fuente
Podrías hacer una clase css llamada algo así como .fixed-object que tenga todo tu css en ella ...
Luego, en jquery cada vez que quieras que algo tenga ese estilo, solo agrega esa clase ...
Esa parece ser la forma más fácil de hacerlo, a menos que no entienda lo que necesita hacer.
fuente
Al usar .addClass () en jquery podemos agregar dinámicamente estilo a los elementos de la página. p.ej. tenemos estilo
Ahora en estado listo de jquery podemos agregar css como .addClass (myStyle)
fuente