Page 1 sur 1

Appel CSS Dynamique

Posté : 29 sept. 2009, 09:14
par bobmeers
Bonjour
Je cherche à développer mes CSS en PX plutôt que en %.
Peut-être me goure-je complètement, ce sont des calculs facilement évitables à l’appel de chaque page du site. Le site est 100% dynamique en php car multilingue et je cherche à éviter la saturation du serveur par des calculs intempestifs. (Beaucoup d’accès à la DB)
J’utilise pour le repérage de résolution
document.location="<?php echo $_SERVER['PHP_SELF']; >?W_width="+screen.width+"&W_height="+screen.height;
c’est du JS et ceci implique
1° JS n’est pas toujours activé coté utilisateur , et je n’ai aucun contrôle la dessus
2° il faut une parade ,j’utilise <noscript> pour relancer la page parade
3° j’ai besoin de cette information dans le <head> or l’information ne m’est connue que une fois <body> lancé, la aussi c’est de la bidouille
je cherche donc une méthode plus efficace . que suggérer vous ?

pour ma part j’oriente mes recherche dans ce sens mais je coince
Mon raisonnement est le suivant :
1° on peut faire une CSS dynamique en PHP ( css.php)
2° on peut définir body { width :100% ;}
3° on peut créer un $Mon_dessin de 1PX
4° $compteur=0 ;
il ne reste dès lors plus qu’a faire une boucle WHILE ( $Mon_Champ < $longueur_body) {$Mon_champ = $Mon_champ + $Mon_dessin ; $compteur++ ;)
Ma résolution est donc de $compteur pixel

Voila la théorie ; qui à une solution ? suis-je dans la bonne voie ? que suggèrer vous ?
Quelqu’un à quelque chose dans cette voie ? qui peut affiner mon raisonnement quelque peu foireux ?

Re: Appel CSS Dynamique

Posté : 29 sept. 2009, 15:42
par AB
Si j'ai bien compris tu veux personnaliser l'affichage en fonction de la résolution d'écran du visiteur.

A priori je récupérerais la résoltution en js puis je formaterais mes éléments html toujours en javascript avec DOM par exemple
En complément entre des balises noscript un affichage par défaut pour ceux qui n'ont pas js activé

Re: Appel CSS Dynamique

Posté : 29 sept. 2009, 17:30
par bobmeers
bonjour , merci de l'interet porté à ma question
en effet je souhaite personaliser en fonction de la taille d'ecran de chaque visiteur
l'emploi de css.php css dynamique permet également d'assigner une valeur à une variable couleur, padding, margin, margin-right etc
ex $_couleur_un= #0FA3FF par exemple et ainsi n'avoir qu'un seul endroit ou le modifiè plus tard

j'utilisais jusqu'a présent toujours la formule en javascript aussi pour repéré la résolution du visiteur
cette methode à deux lacunes
1° JS n'est pas toujours actif , la c'est quasi une obligation de définir en % donc une CSS supplémentaire pour se sortir de la ou assigner 1024 par défaut
2° je n'ai l'information qu'au moment de la balise <Body> or j'en ai besoin avant à la balise <HEAD> d'ou un certain bidouillage

pour cela je cherchais une formule me permettant de tester le moment de l'overflow en fait

en gros c'est cà l'idée de base , si quelqu'un à une suggestion c'est le bienvenu

Re: Appel CSS Dynamique

Posté : 29 sept. 2009, 19:26
par AB
2° je n'ai l'information qu'au moment de la balise <Body> or j'en ai besoin avant à la balise <HEAD> d'ou un certain bidouillage
Pourquoi en as-tu besoin avant la balise <HEAD>? Avec js tu peux l'avoir à l'intérieur de la balise head et modifier ton body et la mise en forme toujours en js suivant la valeur de résolution obtenue.

Re: Appel CSS Dynamique

Posté : 29 sept. 2009, 19:35
par bobmeers
j'utilise en général ceci
que proposez-vous pour amèlioré çà

<html>
	<head>
	<!--                        Recherche de la résolution d'écran           -->
		<script type="text/javascript">
		<!-- debut
		function resolution() 
		{  
		document.location="<?php echo $_SERVER['PHP_SELF']; ?>?W_width="+screen.width+"&W_height="+screen.height;
		}
		// fin -->
		</script>
	</head>
	<?php
			
			if(!isset($_GET['W_width']) and !isset($_GET['W_height']))
				{  
				echo '<body onload="resolution();">';
				}
			else
				{
				echo "<body>"; 
				$_SESSION['largeur']=$_GET['W_width'];
				$_SESSION['hauteur']=$_GET['W_height'];
 				}
				
		
		if(isset($_SESSION['largeur']))
				{
					$_SESSION['JS']='YES';
					
				}
				else
				{
					$_SESSION['JS']='NO';
					$_SESSION['largeur']='auto';
					$_SESSION['hauteur']='auto';
				}

Re: Appel CSS Dynamique

Posté : 29 sept. 2009, 23:17
par AB
Si tu souhaites passer par un reload (ce qui est plus facile) tu peux commencer par faire :
<?php

$_SESSION['largeur'] = isset($_GET['W_width'])? intval($_GET['W_width']) : 'auto';
$_SESSION['hauteur'] = isset($_GET['W_height'])? intval($_GET['W_height']) : 'auto';

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>

<script type="text/javascript">
<!-- debut
function resolution() 
{  
document.location="<?php echo $_SERVER['PHP_SELF']; ?>?W_width="+screen.width+"&W_height="+screen.height;
}
// fin -->
</script>

</head>

<body onload = "<?php if($_SESSION['largeur'] == 'auto') echo 'resolution()'?>">
Vérification <br />
<?php echo 'largeur ='.$_SESSION['largeur'].'<br />'.'hauteur ='.$_SESSION['hauteur']?>
</body>
</html>