2009-10-28 5 views
1

J'ai une feuille de style avec un nom de classe "changebackgroundcolor" Je veux changer la classe css au moment de l'exécution que la couleur change.Est-il possible de modifier ou de modifier le fichier css lors de l'exécution?

.changebackgroundcolor{ 
background-color: #21606E;} 

si je change le code du sol dans mon sélecteur de couleur, alors il fera le changement ici en permanence.

Y at-il des jquery pour ce code ou n'importe quel code asp.net.

Qu'est-ce que je fais pour cela?

+0

Quand vous dites 'définitivement' voulez-vous dire 1) jusqu'à ce que l'utilisateur quitte cette page, 2) pour cet utilisateur, pour toujours, ou 3) pour tous les utilisateurs, pour toujours? –

+0

pour cet utilisateur pour toujours je veux éditer le CSS en même temps pour cet utilisateur –

+0

Si vous voulez juste le faire pour cet utilisateur, vous pouvez suivre vos modifications css, les soumettre au serveur via AJAX ou une telle méthode quand l'utilisateur a fini de personnaliser, de stocker les modifications dans votre base de données, puis de générer dynamiquement le CSS par chargement de page en fonction de l'utilisateur connecté. Un peu de travail, mais assez simple. –

Répondre

4

Est-il possible d'éditer ou de modifier le fichier css au moment de l'exécution?

C'est possible, mais ce n'est pas conseillé. Ce que vous proposez est de faire votre application asp.net dans un éditeur de fichiers.Cela impliquerait d'augmenter les privilèges pour le contexte de sécurité de votre application (l'utilisateur sous lequel il s'exécute) qui ouvre une grosse boîte de Pandore.

L'alternative la plus simple consiste à injecter des classes dans votre page asp.net en écrivant un nouvel élément <style type="text/css"> sur votre page qui inclut les classes css que vous voulez produire dynamiquement.

Par exemple, vous pourriez sauver le background-color à une table UserSettings (ou tout autre par utilisateur mécanisme de persistance), puis chargez-le dans votre page .aspx comme ceci:

<style type="text/css"> 
    .changebackgroundcolor { 
     background-color: <%= user.BackgroundColor %>; 
    } 
</style> 

Ou vous pouvez garder le définitions de classe dans un fichier css. Au lieu d'émettre les classes directement dans la page, écrivez dynamiquement du code jQuery pour modifier la définition de la classe, en suivant certains des exemples d'autres réponses.

+0

Ne semble pas vouloir modifier le fichier .css - juste la version que le navigateur a en mémoire pour la page en cours. –

+0

@David - Je pense le contraire, basé sur le nom de la question et le désir de "faire changer ici définitivement". Je vais supprimer ce droit rapidement s'il s'avère que sinon! –

+0

J'ai raté "définitivement". Je n'ai jamais appris à lire! =/ –

0

Vous ne pouvez pas modifier la classe css existante. mais vous pouvez redéfinir - ajouter une nouvelle <style></style> à tête avec votre nouvelle classe quelque chose comme ceci:

$('head').append('<style>YOUR NEW STYLE</style>'); 

Note pour les critiques: Eh bien, l'auteur pose des questions sur la façon de changer la définition du style de l'ensemble. Pas sur la façon de remplacer les paramètres de l'élément particulier (ce qui bien sûr peut être fait avec la fonction jQuery css).

Mon conseil: créer deux classes différentes avec différentes couleurs d'arrière-plan, puis utilisez Ajout/removeClass

1

Vous pouvez changer tous les éléments avec la classe « changebackgroundcolor » en jquery utilisant:

$(".changebackgroundcolor").css("background-color", "#21606E"); 

Cela prendra Effet jusqu'à ce que votre page soit actualisée, il ne sera pas enregistré dans le fichier .css.

+0

merci pour la réponse, mais je veux enregistrer dans le fichier .css. Avez-vous une autre méthode pour cela? –

+0

Vous pouvez enregistrer la couleur de fond dans un cookie et la charger. De cette façon, elle sera différente par utilisateur et chargera la couleur appropriée lorsque l'utilisateur reviendra sur votre site Web. Je suggère d'utiliser le plugin $ .cookie() pour cela. –

1

Toutes les modifications que vous effectuez en ajustant le DOM (disons avec jQuery) ne peuvent pas être permanentes. Vous devrez réécrire le fichier CSS à chaque changement, ou peut-être générer un fichier CSS, section de style dans votre code HTML ou jQuery dynamiquement à chaque coup.

+0

peut expliquer s'il vous plaît ceci ou avez-vous n'importe quel type d'exemple pour ceci –

1

Vous pouvez ajouter, supprimer et modifier des styles CSS lors de l'exécution. Here est un aperçu rapide, la documentation de jQuery est également très utile.

+0

Ce poste se rapporte à la modification des styles assignés à un objet, ne modifiant pas le contenu du style, lui-même. Je pense que le PO cherchait un moyen de changer la définition de style afin que tous les objets qui ont hérité de ce style soient affectés par ces changements. –

+0

Et par "contenu du style", je veux dire des classes explicitement créées en CSS. –

+0

En fait, je veux modifier la classe en fonction de la couleur et il prendra effet sur le fichier. Css aussi –

1

Je ne suis pas au courant d'une façon de modifier la définition CSS lui-même, mais vous pouvez modifier en fonction de la classe:

$('.changebackgroundcolor').css('background-color', '#21606e'); 

Si vous souhaitez revenir à la valeur par défaut, utilisez

$('.changebackgroundcolor').css('background-color', ''); 

Dans le cas où on ne sait pas - ces deux objets de changement qui ont une classe de « changebackgroundcolor », comme

<span id="mySpan" class="changebackgroundcolor"></span> 

b y ajoutant un attribut de style.

Mise à jour: Trouvé un correspondant Thread avec un lien vers un jQuery plugin qui pourrait faire l'affaire: jQuery equivalent of YUI StyleSheet Utility?

+0

Qu'est-ce que le -1? C'est un message clair qui répond à la question. –

+0

+1 parce que c'est correct –