begin process at 2012 05 28 13:56:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > MODIFIER SES FEUILLES DE STYLES .CSS À LA VOLÉE AVEC JAVASCRIPT

MODIFIER SES FEUILLES DE STYLES .CSS À LA VOLÉE AVEC JAVASCRIPT


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Classé sous :css, stylessheet, styles, modifier, propriétés Niveau :Débutant Date de création :11/01/2010 Date de mise à jour :13/01/2010 09:32:32 Vu :4 220

Auteur : Phildepantin

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Permet de modifier n'importe quel style CSS défini dans ses feuilles de style CSS à l'aide de la syntaxe :

CSS.setProperty('nom_de_mon_fichier_css', 'selecteur_par_ex_div', 'class_par_ex_font-size', 'valeur_par_ex_12px');

Ou de récupérer la valeur d'une propriété par :

CSS.getProperty('nom_css_file', 'selecteur', 'classe');

Enjoy

On peut voir une utilisation de ce code sur les sites :
- http://www.atelier-icare.net/paradigme.php
- http://www.atelier-icare.net/narration

Source

  • /*----------------------------------------------------------------------
  • Auteur : Phil Perret (philippe.perret@yahoo.fr)
  • Date : décembre 2009
  • Pré-requis : framework prototype.js (http://prototypejs.org/)
  • FONCTIONS PERMETTANT DE MODIFIER EN JAVASCRIPT LES RÈGLES DES FEUILLES CSS EN FICHIER
  • = Syntaxe =
  • CSS.setProperty({fcss}, {selecteur}, {propriété}, {valeur});
  • où :
  • {fcss} est le nom de la feuille de styles (string)
  • {selecteur} est le selector (p.e. "body" ou "div.trait")
  • {propriété} est la propriété (p.e. "font-size")
  • {valeur} est la nouvelle valeur à appliquer à la propriété, p.e. "12pt"
  • = Requis =
  • ATTENTION : IL FAUT QUE LES IMPLÉMENTATIONS DES FEUILLES DE STYLES DANS LE DOCUMENT AIENT RESPECTÉES LA RÈGLE SUIVANTE :
  • Les fichiers css doivent avoir été implémentées avec :
  • <link id="css-{nom du fichier}" index="{index du fichier}" rel="stylesheet" type="text/css" href="{dossier}/{nom fu fichier}" />';
  • {index du fichier} doit correspondre à l'index de la feuille de style dans le document. Si la relève des feuilles est faite en automatique en PHP, il suffit d'avoir une variable $icss qu'on incrémente.
  • Note : c'est l'index qui permet d'atteindre les différentes feuilles de style, par : document.styleSheets[index]
  • NB : on pourrait tout aussi bien faire une lecture du DOM pour relever les correspondances index<->feuille de styles, mais je préfère personnellement l'implémentation "en dur" à la création à la volée du code par php.
  • ----------------------------------------------------------------------*/
  • var CSS = {
  • setProperty: function (fcss, selecteur, classe, valeur){
  • /*===
  • Permet de changer la balise (selector) SELECTEUR dans la feuille de style FCSS, en mettant la propriété CLASSE à la valeur VALEUR.
  • ===*/
  • if (!this[fcss]) {
  • this.getCss(fcss);
  • if (!CSS[fcss]) return alert("Impossible de trouver la feuille de style voulue.");
  • }
  • if (!this[fcss]['is_defined']){
  • this.getSelectorOfCss(fcss);
  • }
  • var Rule = this[fcss][selecteur] ;
  • if (!Rule) return alert("La feuille a été trouvée, mais impossible de mettre la main sur le sélecteur `"+selecteur+"`&#8230;");
  • // On applique la propriété
  • Rule.style.setProperty(classe, valeur, null);
  • },
  • getCss: function( fcss ){
  • var index = $('css-'+fcss).readAttribute('index');
  • this[fcss] = document.styleSheets[parseInt(index, 10)];
  • },
  • getSelectorOfCss: function(fcss){
  • var dcss = this[fcss] ;
  • var drule;
  • for(var i=0, len=dcss.cssRules.length; i<len; i++){
  • drule = dcss.cssRules[i];
  • this[fcss][drule.selectorText] = drule ;
  • this[fcss][drule.selectorText]['index'] = i;
  • }
  • this[fcss]['is_defined'] = true ;
  • },
  • }
/*----------------------------------------------------------------------
Auteur : Phil Perret (philippe.perret@yahoo.fr)
Date : décembre 2009

Pré-requis : framework prototype.js (http://prototypejs.org/)

	FONCTIONS PERMETTANT DE MODIFIER EN JAVASCRIPT LES RÈGLES DES FEUILLES CSS EN FICHIER
	
	
	= Syntaxe =
	
		CSS.setProperty({fcss}, {selecteur}, {propriété}, {valeur});
		
		où :
			{fcss} est le nom de la feuille de styles (string)
			{selecteur} est le selector (p.e. "body" ou "div.trait")
			{propriété} est la propriété (p.e. "font-size")
			{valeur} est la nouvelle valeur à appliquer à la propriété, p.e. "12pt"
	
	= Requis =
	
	ATTENTION : IL FAUT QUE LES IMPLÉMENTATIONS DES FEUILLES DE STYLES DANS LE DOCUMENT AIENT RESPECTÉES LA RÈGLE SUIVANTE :
	
	Les fichiers css doivent avoir été implémentées avec :
	
	<link id="css-{nom du fichier}" index="{index du fichier}" rel="stylesheet" type="text/css" href="{dossier}/{nom fu fichier}" />';
	
		{index du fichier} doit correspondre à l'index de la feuille de style dans le document. Si la relève des feuilles est faite en automatique en PHP, il suffit d'avoir une variable $icss qu'on  incrémente.
	
	Note : c'est l'index qui permet d'atteindre les différentes feuilles de style, par : document.styleSheets[index]

NB : on pourrait tout aussi bien faire une lecture du DOM pour relever les correspondances index<->feuille de styles, mais je préfère personnellement l'implémentation "en dur" à la création à la volée du code par php.
	

----------------------------------------------------------------------*/

var CSS = {
	
	setProperty: function (fcss, selecteur, classe, valeur){
		/*===
			Permet de changer la balise (selector) SELECTEUR dans la feuille de style FCSS, en mettant la propriété CLASSE à la valeur VALEUR.
		===*/
		if (!this[fcss]) {
			this.getCss(fcss);
			if (!CSS[fcss]) return alert("Impossible de trouver la feuille de style voulue.");
		}
		
		if (!this[fcss]['is_defined']){
			this.getSelectorOfCss(fcss);
		}
		
		var Rule = this[fcss][selecteur] ;
		
		if (!Rule) return alert("La feuille a été trouvée, mais impossible de mettre la main sur le sélecteur `"+selecteur+"`&#8230;");
		
		// On applique la propriété
		Rule.style.setProperty(classe, valeur, null);
		
	},
	
	getCss: function( fcss ){
		var index = $('css-'+fcss).readAttribute('index');
		this[fcss] = document.styleSheets[parseInt(index, 10)];
	},
	
	getSelectorOfCss: function(fcss){
		var dcss = this[fcss] ;
		
		var drule;
		for(var i=0, len=dcss.cssRules.length; i<len; i++){
			drule = dcss.cssRules[i];
			this[fcss][drule.selectorText] = drule ;
			this[fcss][drule.selectorText]['index'] = i; 
		}
		this[fcss]['is_defined'] = true ;
	},
}

 Conclusion

Bien entendu, si `CSS` est déjà une de vos variables, constantes ou fonction, il suffit de renommer la classe ci-dessus (p.e. CSS -> NEWCSS) .


 Historique

13 janvier 2010 09:29:20 :
Suppression du code inutile - explication sur l'implémentation php - adresses
13 janvier 2010 09:32:32 :
Suppression de liens inutiles

 Sources du même auteur

Source avec Zip SLEEP() SANS BOUCLE D'ATTENTE CONSOMMATRICE

 Sources de la même categorie

Source avec Zip JDMATH-MINI.JS : GÉNÉRATION D'EXPRESSION MATHÉMATIQUE par jdmcreator
Source avec une capture SPHERE 3D DÉFORMABLE par phm
Source avec Zip Source avec une capture EFFET DE ROTATION A 360° D'IMAGE AVEC ACCELERATION DECELERAT... par kazma
Source avec Zip Source avec une capture PETIT LOGICIEL DE DESSIN, RETOUCHE AVEC CANVAS par kazma
Source avec Zip Source avec une capture CALCULATRICE HEURE par m22001111

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture UN MENU EN CSS par Julien39
Source avec une capture PRÉSENTOIR PAGE/SUJET par tiranus
Source avec Zip IMPRIMER UNE PARTIE DE PAGE NON SÉLECTIONNABLE par lecurieux41
Source avec Zip MODIFIER LE CONTENU D'UN DIV AVEC JAVASCRIPT par lecurieux41
Source avec Zip QUIZ HTML CSS ET JAVASCRIPT par lecurieux41

Commentaires et avis

Commentaire de jdmcreator le 13/01/2010 02:11:50

J'avais écrit un code pour récupérer les adresses des feuilles CSS dans le document peut importe la façon, y compris @import. Si tu veux, je peux te passer le code

Commentaire de Phildepantin le 13/01/2010 09:16:25

Salut @jdmcreator, un grand merci pour ta proposition.
mais je n'en ai pas besoin. une lecture du DOM peut facilement récupérer les adresses et les indices, c'est élémentaire. mais comme je relève toujours mes feuilles en php pour implémenter le '<link. />', c'est plus facile comme ça (en mode débuggage, parce que sinon j n'ai qu'un seul css).

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

javascript et css [ par err747 ] je fais du javascript en d&#233;butant et je voudrais modifier les propri&#233;t&#233;s css de ma page de mani&#232;re dynamique Je sais qu'il faut ut Changement de CSS d'élement parents [ par octominou ] Bonjour à tous ! [^^clinoeil1] Je suis confronté à un problème, qui m&#8217;agace... Je cherche à modifier le CSS d'un site grâce à un bloc encapsule Problèmes de chargement CSS [ par Darktruff ] Bonjour à tous,J'ai un petit problèmes avec un des sites que je développe actuellement... En effet le chargement des feuilles de styles CSS est beauco Css et javascripts ? [ par tofman ] Bonjour, Je recherche une piste privil&#233;gi&#233;e CSS, sinon en javascript (mais l&#224; je suis une grosse bille). J'ai plusieurs styles pour mon modifier l'apercu des css par javascript [ par Urukai1 ] bonjour,j'ai un formulaire qui permet de creer des css qui seront ensuite enregistré dans une bdd, afin de permettre de voir le résultatpour chaque cl modifier l'atribut d'une clas css [ par JJDai ] Bonjour ----------------- Je souhaite modifier l'attribut d'une classe directement dans l'objet CSS Je pourrais modifier le "className" ou l'attribut Div en quantité énorme ... [ par jeanmorelle ] Salut, y-a-t-il un moyen pour gérer des div en quantité ? J'ai un site assez gros avec 1000 div (identiques au départ et qui, par la suite et pour cer css et window.print [ par Vlatiss ] Bonjour, j'ai un fichier jsp dans lequel j'écris du html: [code=js] <link rel="stylesheet" type="text/css" href=". Menu avec cotès arrondis | HTML - CSS | [ par darksam ] [b]Bonsoir,[/b] Comme le titre l'indique, j'aimerais créer un menu avec cotés arrondis ([i]HTML - CSS[/i]). J'ai visualiser beaucoup de sites Web qui Creer une page CSS à partir d'une page html [ par karimfellah ] slt tous le monde, j'aimerai bien vous posez une question:j'ai besoin d'un code source qui permet de creer une page css à partir d'une page html je m'


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,633 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales