<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapitre SYSTEM "../ressources/chapitre22.dtd">

<chapitre typecourssiteweb="dhtml">
	<cours nomfichier="feuilledestyle">Cours de manipulation du DOM et DHTML</cours>
	<entete>
		<titre>Accès aux feuilles de style par le DOM</titre>
		<auteur email="Gilles.Chagnon@upmc.fr">G. Chagnon</auteur>
		<resume>Le DOM offre des propriétés et méthodes permettant d'accéder et modifier les propriétés des feuilles de style CSS.</resume>
		<motsclefs>dhtml, dom, javascript, css, propriété, style</motsclefs>
	</entete>
	<corpus>
		<partie titre="Généralités" ancre="generalites">
			<paragraphe titre="Introduction" ancre="introgen">
				<texte>Le DOM permet d'accéder aux feuilles de style d'un document, grâce à un objet de feuille de style. Mais une difficulté -importante- réside dans le fait que la syntaxe CSS n'est pas arborescente. On doit donc utiliser des méthodes et propriétés spécifiques.</texte>
			</paragraphe>
			<paragraphe titre="Accès à l'objet de feuille de style" ancre="acces">
				<texte>On définit simplement un objet de feuille de style à l'aide de la collection <code>document.styleSheets</code>. Par exemple, <code>feuille1=document.styleSheets[0]</code> permet d'accéder à la première feuille de style du document, qu'elle soit interne ou externe. On peut alors obtenir plusieurs informations.</texte>
			</paragraphe>
		</partie>
		
		<partie titre="Propriétés générales de la feuille de style" ancre="proprietesgenerales">
			<paragraphe titre="Accès aux attributs de l'élément style" ancre="attrstyle">
				<texte>Chaque attribut <code>type</code>, <code>href</code>, <code>media</code>, <code>title</code> et <code>disabled</code> est accessible directement par une propriété. Par exemple, une fois l'objet <code>feuille1</code> défini, <code>feuille1.href</code> permet de consulter ou changer le lien vers la feuille de style (et donc, éventuellement, d'en appliquer une autre).</texte>
			</paragraphe>
			<paragraphe titre="Tableau des propriétés de style" ancre="tableaurules">
				<texte>On peut accéder à la liste des règles de la feuille à l'aide du tableau <code>cssRules</code>. Par exemple, feuille1.cssRules[0] désigne la première règle de la feuille de style.</texte>
			</paragraphe>
		</partie>
		
		<partie titre="Modification, ajout et suppression de règles" ancre="modifregles">
			<section titre="Ajout et suppression de règles" ancre="ajoutsupprime">
				<paragraphe titre="Suppression d'une règle" ancre="supprime">
					<texte>Une fois une règle sélectionnée, on peut la supprimer à l'aide de la méthode <code>deleteRule(index)</code>. Par exemple, <code>feuille1.deleteRule(0)</code> supprime la première règle de la feuille.</texte>
				</paragraphe>
				<paragraphe titre="Ajout d'une règle" ancre="ajoute">
					<texte>On peut ajouter une règle à la feuille de style avec la méthode <code>insertRule(propriete, index)</code>. <code>index</code> donne la position où doit être insérée la règle. Par exemple, <code>feuille1.insertRule("#blanc { color: white }", 0)</code> ajoute une propriété au tout début de la feuille de style.</texte>
				</paragraphe>
			</section>
			<section titre="L'élément de propriété de feuille de style" ancre="propriete">
				<paragraphe>
					<texte>Dans toute la suite, on suppose défini un objet de propriété de feuille de style par <code>regle=feuille1.cssRules[1]</code>.</texte>
				</paragraphe>
				<paragraphe titre="Avoir des informations">
					<texte>La propriété <code>regle.cssText</code> renvoie le texte entier de la règle (par exemple <code>p{text-align:justify;}</code>).</texte>
					<texte>La propriété <code>regle.parentStyleSheet</code> renvoie une référence à la feuille de style à laquelle appartient la propriété.</texte>
				</paragraphe>
				<paragraphe titre="Sélecteur et propriété" ancre="selecteurpropriete">
					<texte>La propriété <code>regle.style.cssText</code> retourne le texte de la propriété (par exemple <code>text-align:justify;</code>), tandis que <code>regle.style.selectorText</code> permet d'accéder (en lecture <valeur>et</valeur> <valeur>écriture</valeur>) au sélecteur (par exemple <code>p</code>).</texte>
				</paragraphe>
			</section>
			<exercice titre="Ajout et suppression de règles" ancre="exoajoutsupprime">
				<enonce href="exercices/exo16.html"/>
				<correction href="exercices/exo16cor.html"/>
			</exercice>
		</partie>
		
	</corpus>
</chapitre>

