Bonsoir,

J'ai un décalage dans mon site qui ne peut se résoudre seulement avec l'utilisation d'un css spécifique à IE7 et inférieur.
Mais j'utilise un StyleSwitcher (tuto Alsacreations) et comment puis-je utiliser un "If IE" alors que mon style est utilisé grâce a un php.

Voici mon code :



<?php 
header('Content-type: text/html; charset=iso-8859-1'); 
require_once './styles/styleswitcher.inc.php'; 
?> 

<link rel="stylesheet" media="screen, projection" type="text/css" id="css" href="<?php echo $url; ?>" />




et le code de mon fichier php styleswitcher :

<?php 
function construire_url($dossier) 
{ 
    return 'http://www.highlightedproject.com/projects/bioshock/styles/' . htmlspecialchars($dossier) . '/style.css'; 
} 
 
$dossiers = array( 
    'columbia', 
    'rapture'
); 
 
$actuel = htmlspecialchars($_SERVER['PHP_SELF']); 
$new_style = (isset($_GET['style'])) ? $_GET['style'] : ''; 
$cookie_style = (isset($_COOKIE['style'])) ? $_COOKIE['style'] : ''; 
 
if(in_array($new_style, $dossiers, true)) 
{ 
    setcookie('style', $new_style, time() + (365 * 24 * 3600), '/'); 
    $url = construire_url($new_style); 
} 
 
else if(in_array($cookie_style, $dossiers, true)) 
{ 
    $url = construire_url($cookie_style); 
} 
 
else 
{ 
    $url = construire_url($dossiers[0]); 
} 
?>




Comment puis-je faire pour utiliser "If IE" avec ca ?


Merci Smiley smile
Bonjour,
Je vois mieux comment faire a mon avis
dans chaque repertoires tu places deux CSS
style.css et style_ie.css
et dans ta fonction tu mets

<?php
function construire_url($dossier)  {  
$Cie="N";
$Ciexx=$_SERVER["HTTP_USER_AGENT"]; //  L'identifiant du navigateur 
if (strpos($Ciexx, "MSIE")  != FALSE ) $Cie="O";
if (strpos($Ciexx, "MSIE 8")  != FALSE ) $Cie="N"; // elimine 8
//======== et alors 
if($Cie=="O") {
 return 'http://www.highlightedproject.com/projects/bioshock/styles/' . htmlspecialchars($dossier) . '/style_ie.css';   }
else {
return 'http://www.highlightedproject.com/projects/bioshock/styles/' . htmlspecialchars($dossier) . '/style.css';   }
}
?>

Whaou j'ais corrigée ma bourde Smiley confused
Modifié par Christele (26 Feb 2011 - 19:49)
Tu es un chef haha !
Vraiment bien joué !
Par contre juste, que remplacer pour que le style_ie soit uniquement pour IE7 et inférieur ?

Merci encore !
Whaou quelle belle page, je ne connaissais pas le détail de cette syntaxe,
merci Smiley smile
Mais dans ce cas ce n'est pas possible puisqu' il sagit d'avoir le php
qui place dans un cookie le style de fond choisi !
Salut,

pas sûr d'avoir bien compris ta question mais...

1) tout d'abord un petit rappel :
* la feuille de style générale doit être utilisée pour tous les navigateurs (supposés être respectueux des standards).
* on place ensuite un (ou des) commentaire(s) conditionnel(s) pour ne corriger que les problèmes de rendu dans les versions anciennes d'IE.

Ce qui pourrait donner quelque chose comme ça :
<link rel="stylesheet" type="text/css" href="style.css" />
<!--[if lte IE 7]> 
<link rel="stylesheet" type="text/css" href="style_ie.css" />
<![endif]--> 
Cela évite d'avoir à maintenir 2 feuilles de style complètes (une générale et une pour IE) puisque les déclarations ciblant IE vont venir écraser les précédentes.

2) en supposant que tu aies dans chaque répertoire une feuille de style générale (style.css) et une pour IE <= 7 (style_ie.css) tu pourrais faire par exemple :
<link rel="stylesheet" type="text/css" href="<?php echo $url; ?>" />
<!--[if lte IE 7]> 
<link rel="stylesheet" type="text/css" href="<?php echo str_replace('style.css', 'style_ie.css', $url); ?>" />
<![endif]--> 
Oui je te comprends 100%, mais il sagit si j'ais compris de
a écrit :
j'utilise un StyleSwitcher (tuto Alsacreations)