28220 sujets

CSS et mise en forme, CSS3

Bonjour,
j'ai un petit soucis avec une ligne CSS.
A un moment dans mon code HTML je doit mettre <style type=text/css>#page{margin-left:0px}</style> car dans ma feuille de style j'ai #page{margin-left:180px} et doit être modifier à un moment bien précis mais le problème est que ce genre de ligne n'est pas accepter dans mon mozilla firefox car il m'indique l'erreur comme quoi que cette ligne n'est pas avant la balise <body>. Mais alors comment faire, y a t'il une solution ?
Oui, je sais, mais je suis obliger de le mettre en fin de page du code html et c'est là le problème car ce n'est pas valide xhtml. donc je voudrais savoir s'il y a une solution.

Genre :
if(blocdroit!=""){
echo "<style type=text/css>#page{margin-right:0px}</style>";
}
Modifié par Filipe (05 Jul 2005 - 20:19)
C'est pas une question d'être obligé de le mettre à la fin ou pas... les styles inclu dans un page doivent être placés dans une balise <style> elle même placée dans le head...

Je penses que tu ne comprend pas très bien ce que tu fais Smiley confus
Je comprend bien ce que je fait, là n'est pas la question. Mais mon site doit être comptatible XHTML et là ça va pas.
Filipe a écrit :
Oui, je sais, mais je suis obliger de le mettre en fin de page du code html et c'est là le problème car ce n'est pas valide xhtml. donc je voudrais savoir s'il y a une solution.

Genre :
if(blocdroit!=""){
echo "<style type=text/css>#page{margin-right:0px}</style>";
}


Pas d'élément style dans le corps (body) du document.

En revanche, rien ne t'empêche de rectifier localement le style de #page à l'aide d'un style interne en ligne. Si ton élément #page est une <div>, tu génères simplement un attribut style="margin-left:0":

if($blocdroit!=""){
  echo '<div id="page" style="margin-left:0">';
} else {
  echo '<div id="page">';
} [/quote]


Ce style interne en ligne aura priorité sur le style concurent de ta CSS.

Autre solution, plus élégante, car elle évite ce style interne : au lieu de générer un élément d'id #page, tu génère un élément #page_no_margin pour lequel tu indiques ta marge nulle dans ta feuille de style:

if($blocdroit!=""){
  echo '<div id="page">';
} else {
  echo '<div id="page_no_margin">';
} [/quote]


et dans ta CSS:


#page, #page_no_margin  {
... propriétés qui ne changent pas ...
margin-left:180px;
}
#page_no_margin
{
margin-left:0;
}


Une troisième solution consiste à ajouter à ta div #page une classe .nomargin modifiant la marge :

if($blocdroit!=""){
  echo '<div id="page">';
} else {
  echo '<div id="page" class="nomargin">';
} [/quote]


et dans ta CSS:


#page  {
... 
margin-left:180px;
}
.nomargin
{
margin-left:0 !important;
}


Dans tous les cas, le test doit être fait lors de la génération de ta div #page, ce qui nécessite sans doute que tu revois ton script pour déterminer le contenu de $blocdroit un peu plus tôt Smiley cligne
Modifié par Laurent Denis (06 Jul 2005 - 06:45)