28172 sujets

CSS et mise en forme, CSS3

Bonjour,

Je souhaiterais savoir s'il est possible de mettre une position absolue dans une liste ?


<ul>
   <li><img1 />
      <p>monTexte1</p>
   <li>
   <li><img2 />
      <p>monTexte2</p>
   <li>
   <li><img3 />
      <p>monTexte3</p>
   <li>
</ul>


Avec une taille définie en largeur et en hauteur pour UL et/ou LI et le texte venant se positionner à l'intérieur de cet espace.

Voir l'image suivante : upload/25209-li.png

Merci de votre aide car je ne suis pas convaincu de la faisabilité.
Modifié par Yes_Papa (23 Nov 2009 - 20:46)
J'ai fait un essai mais cela ne donne rien :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans nom</title>
<style type="text/css">
<!--
body {
}
#block {
	/*width:275px;
	height:300px;*/
	background:#F93;
}

#block ul{
	list-style-type: none;
}
#block ul li {
	float: left;
	width: 300px;
	background:#F00;
}
#block ul li p {
	position:absolute;
	top:0px;
	right:0px;
}

-->
</style>
</head>
<body>
<div id="block">

<ul>
  <li><img src="" alt="" name="img1" width="240" height="120" id="img1" />
    <p>monTexte1</p>
  </li>
  <li><img src="" alt="" name="img2" width="240" height="120" id="img1" />
    <p>monTexte1</p>
  </li>
  <li><img src="" alt="" name="img3" width="240" height="120" id="img1" />
    <p>monTexte1</p>
  </li>
  <li><img src="" alt="" name="img4" width="240" height="120" id="img1" />
    <p>monTexte1</p>
  </li>
</ul>
</div>
</body>
</html>


On dirait que comme j'ai dit ca ne va pas le faire.

Une idée ?
Bonjour,

C'est tout à fait possible, mais il faut définir l'élément référent de l'absolu (le li je suppose dans ton cas) en le positionnant en relatif ; sinon l'élément p se positionnera par rapport au viewport.
Bonjour Yes_Papa,

Quand tu insères des images dans une page web, pense à bien utiliser l'attribut alt.
Ce dernier est important en terme d'accéssibilité Smiley cligne .
Ok merci de vos commentaires, je vais mettre en pratique vos conseils. Pour le "alt", j'essaie autant que ce peut de jamais l'oublier. Là, j'ai juste utiliser la fonction image réservé de dream pour le test.
Merci bcp de votre aide cela marche. Va falloir que je potasse encore les CSS. Smiley biggrin

Ci-joint la modification :


#block ul li { 
    float: left;
position:relative; 
    width: 300px; 
    background:#F00; 
} 
#block ul li p { 
    position:absolute; 
    top:0px; 
    right:0px; 
} 


Je regarde une dernière option sinon je le mets en "résolu".
Modifié par Yes_Papa (21 Nov 2009 - 15:12)
Bon ben voilà, ma nouvelle problématique.

Je voudrais écrire dans ce bloc "absolute" deux phrases avec des styles différents et un background différent mais là je sèche encore ... et je ne sais pas s'il est possible d'utiliser des div à cet endroit.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans nom</title>
<style type="text/css">
<!--
body {
}
#block {
	/*width:275px; 
    height:300px;*/ 
    background:#F93;
}
#block ul {
	list-style-type: none;
}
#block ul li {
	float: left;
	position:relative;
	width: 300px;
	background:#F00;
}
#block ul li p {
	position:absolute;
	top:100px;
	right:0px;
}
#block ul li p .titre {
	position:?;
	background:#00F;
}
#block ul li p .sous-titre {
	position:?;
	background:#0F0;
}
-->
</style>
</head>
<body>
<div id="block">
  <ul>
    <li><img src="" alt="" name="img1" width="240" height="120" id="img1" />
      <p>
      <div class="titre">monTexte1</div>
      <div class="sous-titre">monTexte2</div>
      </p>
    </li>
    <li><img src="" alt="" name="img2" width="240" height="120" id="img1" />
      <p>
      <div class="titre">monTexte1</div>
      <div class="sous-titre">monTexte2</div>
      </p>
    </li>
    <li><img src="" alt="" name="img3" width="240" height="120" id="img1" />
      <p>
      <div class="titre">monTexte1</div>
      <div class="sous-titre">monTexte2</div>
      </p>
    </li>
    <li><img src="" alt="" name="img4" width="240" height="120" id="img1" />
      <p>
      <div class="titre">monTexte1</div>
      <div class="sous-titre">monTexte2</div>
      </p>
    </li>
  </ul>
</div>
</body>
</html>

Modifié par Yes_Papa (21 Nov 2009 - 17:32)
Bon, j'ai essayé d'avancer en relisancer le cours d'Alsacréation sur les flux et les positions mais je vois toujours pas. Et comme la demande précédente, je ne sais pas si cela est possible.

J'ai donc essayer les "DIV" et la balise titre HTML "H2 ou H3" pour essayer de reproduire la mise en forme. Mais voilà à chaque fois, le texte est envoyé en dehors du bloc paragraphe.

D'où ma question :
Est il possible ou quel type de balise peut être utiliser dans un bloc positionné en absolu ?


    <li><img src="img.jpg" alt="" name="img1" width="240" height="180" id="img4" />
      <p> 
      <h3>monTexte1</h3> 
      <h2>monTexte2</h2> 
      </p> 
    </li> 
Bonjour,

A lire : http://www.alsacreations.com/tuto/lire/530-La-structure-des-balises-bloc-et-en-ligne.html
A faire : Valider son code
(Pas de div dans tes paragraphes, pas plus que de titre de niveau (Hn) )
Lien utile : hierarchie
S'interroger sur la pertinence de l'utilisation d'une liste dans ton cas de figure :

<div>
	<img src="#" alt="blabla" />
	<h2>Ton texte</h2> ou <p>Ton texte</p> 
	<h3>Ton texte</h3> ou <p>Ton texte</p>
</div>

En utilisant tes nouvelles connaissances sur le positionnement, tu devrais t'en sortir comme un grand Smiley cligne

Ceci étant dit, cela fonctionne bien évidemment dans une liste, peux-tu faire une page de test et nous fournir une adresse pour que nous puissions regarder de quoi il retourne ?

Cdt,
Sylvain
Ok, merci pour tes infos je vais regarder tes liens (j'avais parcouru ton lien concernant les balises bloc et en-ligne mais pas assez attentivement à ce que je vois et celle de Developpez que j'ai compris maintenant)

Malheureusement, je suis contraint par l'utilisation de liste (c'est pour la mise en page d'un slideshow utilisant la fonction liste).

Je dois donc comprendre qu'il n'y a pas de solutions à mon problème pour une mise en page de la sorte ? Ha ben, non en fait c'est tout con !

Puis j'ai trouvé ça :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Document sans nom</title> 
<style type="text/css"> 
<!-- 
body { 
} 
#block { 
    /*width:275px;  
    height:300px;*/  
    background:#F93; 
} 
#block ul { 
    list-style-type: none; 
} 
#block ul li { 
    float: left; 
    position:relative; 
    width: 240px; 
    background:#F00; 
} 
#block ul li h3 {
	margin:0px;
    position:absolute; 
    background:#00F; 
    top:100px; 
    right:0px; 
} 
#block ul li h2 {
	margin:0px;
    position:absolute; 
    background:#00F; 
    top:125px; 
    right:0px; 
} 
--> 
</style> 
</head> 
<body> 
<div id="block"> 
  <ul> 
    <li><img src="img.jpg" alt="" name="img1" width="240" height="180" id="img1" /> 
      <h3>monTexte1</h3> 
      <h2>monTexte2</h2> 
    </li> 
    <li><img src="img.jpg" alt="" name="img1" width="240" height="180" id="img2" />
      <h3>monTexte1</h3> 
      <h2>monTexte2</h2> 
    </li> 
    <li><img src="img.jpg" alt="" name="img1" width="240" height="180" id="img3" />
      <h3>monTexte1</h3> 
      <h2>monTexte2</h2> 
    </li> 
    <li><img src="img.jpg" alt="" name="img1" width="240" height="180" id="img4" />
      <h3>monTexte1</h3> 
      <h2>monTexte2</h2> 
    </li> 
  </ul> 
</div> 
</body> 
</html> 


C'est validé XHTML par contre je suis preneur de vos remarques.

En tout cas merci de votre aide. Je finalise et je viens mettre le résolu (d'ailleurs comment, on fait Smiley cligne )
Re,

Et bien tu vois quand tu veux Smiley cligne
Pas de soucis particulier à utiliser une liste si c'est pertinent dans ton document.
Petite remarque en passant h2 avant h3 semble plus logique dans la hierachie du document, non ?
Pour marquer ton sujet comme [résolu] : édite ton premier message (en étant connecté, en haut à droite de ton message) et rajoute manuellement le tag [résolu]
((re)Lire la page AIDE pourra t'aider à te familiariser avec les us et coutumes de ce forum Smiley cligne )

Bonne journée,
Cdt,
Sylvain