28173 sujets

CSS et mise en forme, CSS3

Salut,

voilà j'ai un petit souci qui peut avoir l'air bête, mais çà me gêne pas mal ...

En fait j'ai une toute petite ligne de texte à placer dans un div, sauf que le texte ne veut pas aller où je lui demande ... Il est collé en bas, et seule la moitié est dans le div

.titre_news {
top:0px;
font-family:Arial, Verdana, Tahoma, Comic Sans MS;
font-size:7pt;
color:#FFFFFF;
text-decoration:none;
text-transform: uppercase;
}


#barre_noire {
padding-top:0px;
float:left;
height: 15px;
width:345px;
background-color:#000000;
margin:0px;
}


Merci d'avance Smiley smile
Salut,

Deux classes CSS sans contexte HTML ç'est peu explicite.

Donne-nous le HTML pour qu'on puisse t'aider.
<!-- BEGIN new -->

	<div id="barre_noire"><p class="titre_news">{TITRE}</p></div>

		  <div id="barre_rouge"><p class="titre_news">{DATE}</p></div>



Pas grand chose dans le html Smiley ohwell

Je viens de penser que c'est peut-être dû au <P> qui fait sauter une ligne, mais je devrais pouvoir le positionner, non ? Smiley sweatdrop
Modifié par antonin.design (26 Aug 2007 - 02:33)
Tiens, en utilisant une balise <span>, le titre est à bonne hauteur, par contre pour le réglage horizontal ...
Modifié par antonin.design (26 Aug 2007 - 02:38)
Salut,

mets margin:0px; à ton p et ça ira mieux. En effet le span prend les valeurs de p en héritage, d'où ta rematque.
Ton problème a avancé mais permet-moi de t'interroger sur le besoin de coder une div pour contenir lr paragraphe ?

Le paragraphe suffit pour faire ce que souhaites. Il est de type block, il supporte un background, un width...

Ton code n'en sera que plus propre et surtout, si tu le rends accessible en codant des polices en % ou en em, ça suivra ce qui n'est pas vrai avec une div englobante.

À réfléchir... Smiley cligne
Modérateur
Salut,

Arf... J'avais commencé à taper mon message mais je suis trop long... Smiley lol bref...

Je me trompe peut-être mais il me semble, comme papyjo te l'a fait remarquer, que tu ne gères pas les id et les classes correctement. Si on se limite au code que tu montres, il suffirait de faire ceci :
<!-- BEGIN new -->
<div id="ident1">
     <p>{TITRE}</p>
</div>
<div id="ident2">
     <p>{DATE}</p>
</div>
Le fait de mettre un span à la place d'un paragraphe n'est pas le plus judicieux car tu changes le sens de la balise pour des besoins de mise en page (En réalité, tu passes d'un élément de type "bloc" à un dit "en ligne"). Ca ne devrait pas être le cas ; c'est au CSS de s'adapter, pas à la structure HTML.
La div est avant tout faite pour englober plusieurs éléments et ne comporte pas de sens particulier. On peut effectivement en rajouter comme tu l'as fait pour entourer un paragraphe si la mise en page l'exige mais est-ce bien le cas ? J'en doute ici... Smiley smile Dans tous les cas, ce qui compte, c'est avant tout le sens donné aux éléments ; il faut que les balises représentent ce qu'elles contiennent.

Une explication sur la sémantique et ce que sont les types "bloc" et "en ligne" t'aideront à y voir plus clair :
http://openweb.eu.org/articles/respecter_semantique/
http://css.alsacreations.com/Bases-et-indispensables/La-structure-des-balises-bloc-et-en-ligne

Au sein de ton CSS, tu peux accéder à la structure proposée ci-dessus par :
div { ... }
div p { ... }
#ident1 { ... }
#ident2 { ... }
#ident1 p { ... }
#ident2 p { ... }
D'une manière générale, il faut toujours partir du plus généraliste pour spécialiser au fur et à mesure, c'est à dire :

- Commencer par définir les styles directement sur les balises et y accéder en cascade
- Spécialiser en mettant une classe sur l'élément.
- Spécialiser encore en mettant un identifiant.

Plus tu places tes classes et identifiants sur les conteneurs et non directement sur l'élément, mieux c'est... Ca te permet d'englober plus de cas.

Par exemple :
<div>
     <h2>titre</h2>
     <ul>
          <li><a href="#">lien1</a></li>
          <li><a href="#">lien1</a></li>
          <li><a href="#">lien1</a></li>
          <li><a href="#">lien1</a></li>
     </ul>
</div>
<div class="uneClasse">
     <h2>titre</h2>
     <ul>
          <li><a href="#">lien1</a></li>
          <li><a href="#">lien1</a></li>
          <li><a href="#">lien1</a></li>
          <li><a href="#">lien1</a></li>
     </ul>
</div>
<div class="uneClasse">
     <h2>titre</h2>
     <ul>
          <li><a href="#">lien1</a></li>
          <li id="unIdentifiant"><a href="#">lien1</a></li>
          <li><a href="#">lien1</a></li>
          <li><a href="#">lien1</a></li>
     </ul>
</div>
Dans ce code, tu peux affecter les styles comme suit :
div { ... }
div h2 { ... }
div ul { ... }
div ul a { ... }
.uneClasse { ... }
.uneClasse h2 { ... }
.uneClasse a { ... }
#unIdentifiant { ... }
#unIdentifiant a { ... }


La lecture de ces documents devrait t'aider à mieux cerner le principe :

http://developer.mozilla.org/fr/docs/CSS: Premiers_pas:Cascade_et_h%C3%A9ritage
http://developer.mozilla.org/fr/docs/CSS: Premiers_pas:Les_s%C3%A9lecteurs
http://developer.mozilla.org/fr/docs/CSS: Premiers_pas:Des_CSS_lisibles

(Pour les liens cités ci-dessus, supprime les espaces après ":" -> ça faisait des smileys Smiley confus )

Par ailleurs, tu indiques :
top:0px;
Cette instruction ne sert à rien lorsque tu restes en positionnement statique. Elle a de l'utilité dès lors que tu passes en relatif ou en absolu.
Et puis, 0 vaut toujours 0, que ce soit des patates, des kiwis ou des pixels donc c'est le seul cas où l'indication des unités est optionnel.

A un endroit, tu mets :
font-family:Arial, Verdana, Tahoma, Comic Sans MS;
Il faut terminer par une famille de polices des fois que celles indiquées ne soient pas disponibles sur le poste de l'utilisateur.

Voir ici :
http://www.accessiweb.org/fr/guide_accessiweb/guide-accessiweb-fiche-10-6.html

Tu mets aussi :
font-size:7pt;
L'unité pt est destinée à l'impression et non aux écrans. Particulièrement pour IE, il est nécessaire de se servir d'une unité qui permette de redimensionner tes écritures afin que quelqu'un, qui fatigue ou qui a un problème avec les petits caractères, puisse visualiser le contenu correctement.

Voir là (l'un des meilleurs tutos qu'on est, soit dit en passant Smiley cligne ) :
http://css.alsacreations.com/Tutoriels-et-articles-divers/gerer-la-taille-du-texte-avec-les-em

Pour le positionnement de tes éléments, tu peux commencer par tenter des définir des marges et du remplissage sur tes éléments. Si ce n'est pas assez souple, tu peux modifier le mode de positionnement en passant en relatif, ce qui permet de conserver l'élément dans le flux, ou bien en absolu, en flottant voire en fixe (l'élément sort alors du flux).

Les bases du positionnement :
http://openweb.eu.org/articles/initiation_flux/
http://openweb.eu.org/articles/initiation_float/
http://openweb.eu.org/articles/initiation_absolue/
Ok merci à vous deux ! koala merci d'avoir pris autant de temps Smiley cligne

Je vais aller voir en mettant un display:block; çà devrait marcher ! Merci encore Smiley biggrin
Alors j'ai un autre petit souci en fait ...

Le paragraphe est en fait un <h1> (titre de news), donc j'ai remplacé, sauf que je n'arrive pas à positionner mon texte dans le div Smiley ohwell

Surtout que les paddings hoizontaux sont apparement reconnus par IE6 comme des marges, je ne vois pas trop comment faire Smiley confus

.titre_news {
display:block;
padding-top:0px;
height: 15px;
width:345px;
background-color:#000000;
left:30px;
top:0;
font-family:Arial, Verdana, Tahoma, Comic Sans MS;
font-size:8pt;
color:#FFFFFF;
text-decoration:none;
text-transform: uppercase;
}


<!-- BEGIN new -->

<h1 class="titre_news">{TITRE}</h1>


Le premier problème est que je ne peux pas décaler horizontalement mon titre (enfin, je n'y arrive pas).
Le second est qu'une petite marge s'est créée au dessus du titre, marge qui doit disparaitre .. Smiley sweatdrop


PS:Je préfère d'abord mettre en page correctement, avant de changer les px pour les em, à moins que çà ait une importance pour cette mise en page .. Smiley confus



Merci Smiley biggrin
Pfff çà commence à m'enerver Smiley bawling

Quand je mets un margin:0; la marge supérieure disparait



Mais quand je veux éxprimer différentes marges pour "top" et "left", c'est comme si la marge n'éxistait pas ! Smiley decu


Help please Smiley confus





[EDIT] Est-ce que pour placer mon texte horizontalement, l'utilisation d'espaces insécables "&nbsp;" est une bonne solution ? Smiley sweatdrop
Modifié par antonin.design (26 Aug 2007 - 13:56)
Bon ... J'ai beau regarder un peu partout sur les liens que vous m'avez donné, je n'arrive vraiment pas à faire ce que je veux ... Smiley decu

Alors je me permet de vous demander une petite aide directe, ce serait vraiment sympa ... Smiley confused

Alors voilà mon code au grand complet :

Le HTML :

  	<div id="centre">
  	  
	  <img class="image_news" src="images/index/titre_news.png" alt="Nouveautés sur Japan Ride" />
	  


<?
include('news.php'); 
?>

  	</div>



Contenu de l'include (ce qui est entre {}, équivaut à la fonction indiquée, par exemple {TITRE} = titre que je tape pour la news, etc ...) :
<!-- BEGIN new -->

<h2 class="titre_news">{TITRE}</h1>

		  <div id="barre_rouge"><span>{DATE}</span></div>
	
	<p class="contenu_news">{TEXT}</p> </BR> {POSTER} {TIME}
<!-- END new -->



Le CSS :


#centre {
background-color:#FFFFFF;
margin-left: 15px;
margin-right: 245px;
}

.titre_news {
display:block;
padding-top:0px;
height: 15px;
width:345px;
background-color:#000000;
left:30px;
top:0;
font-family:Arial, Verdana, Tahoma, Comic Sans MS;
font-size:8pt;
color:#FFFFFF;
text-decoration:none;
text-transform: uppercase;
}






Comment faire pour que le résultat soit comme cela :

http://img210.imageshack.us/img210/4149/titrenewsrq8.png


Il faudrait en fait que le "news" soit en h1, et le "mise en ligne du site" en h2.

------------------------------------------------------

Désolé la demande peut paraitre excessive, mais là je suis vraiment bloqué, une aide serait vraiment gentille Smiley confused Smiley confused

Merci Smiley smile
Modifié par antonin.design (26 Aug 2007 - 14:58)