28173 sujets

CSS et mise en forme, CSS3

Tout d'abord, bonjour à tous, et comme vous le voyez je suis nouveau ici ... donc enchanté & bravo pour ce que vous faites ! Smiley smile

J'essaye depuis plus de 4 heures de centrer une img horizontalement dans 1 DIV, et aussi de l'aligner en meme temps sur le bas de ce même div ... Smiley biggol

J'ai bien compris qu'il y avait un problème d'elements inline (img) et de block(div), mais je suis certain qu'il doit y avoir une solution.

J'ai bien parcouru TOUT GOOGLE (lol), parcouru votre forum vos tutoriaux en rapport avec l'alignement & le centrage, (vraiment tout essayé), mais là ca devient vraiment dur.
J'ai même essayé de retourner a mes vieilles tables mais même là, IE & FF ne sont toujours pas d'accord.

Voici un exemple d'où j'en suis : EDITEE (url temporaire... voir ici pour résultat : http://fotoworks.free.fr/photos-couchers-de-soleil-14-11.html)

et ce que j'aimerais avoir est http://img53.imageshack.us/img53/4103/exlw9.jpg

Vous remarquerez que les images n'ont pas toutes les mêmes dimensions (hauteur & largeur), donc je ne peux malheureusement pas utiliser de position:absolute & bottom:0px

Bien sur, je ne veux pas non plus de javascript, et j'aimerais un code qui soit valide & compatible IE & FF au minimum.

Voilà Smiley smile J'aimerais donc savoir si un guru du coin aurait une solution pour ce pb! Smiley smile


pour ceux qui veulent éviter le afficher SRC :

INDEX.HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="revisit-after" content="1 days" />
<meta name="Subject" content="" />
<meta name="Description" content="" />
<meta name="Keywords" content="" />
<meta name="robots" content="all" />
<meta name="audience" content="all" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>FOTOWORKS</title>

</head>
<body>
	<div class="ThumbsWrapper">
        	<div class="photosDIV">
                <a href="../photo-tes-14-79.html"><img src="../photos/thumbs/PB250008.JPG" alt="tes" title="tes" /></a>
                </div>
                <div class="thumbsDescr">
                tes
                </div>
        </div>
	<div class="ThumbsWrapper">

        	<div class="photosDIV">
                <a href="../photo-calton-hill-edimbourg-14-71.html"><img src="../photos/thumbs/PB250001.JPG" alt="Calton Hill, Edimbourg" title="Calton Hill, Edimbourg" /></a>
                </div>
                <div class="thumbsDescr">
                Calton Hill, Edimbourg
                </div>
        </div>
....
</body>
</html>


STYLE.CSS
.ThumbsWrapper {
	width:176px;
	height:172px;
	margin-bottom:15px;
	margin-right:1px;
	float:left;
	background:#272727;
	border:1px solid #4f4f4f;
}
.ThumbsWrapper div.photosDIV{
        position:relative;
        width:176px;
	height:139px;
	text-align: center;
}

.ThumbsWrapper div.photosDIV img{
	border:1px solid #bcbcbc;
}
.ThumbsWrapper div.thumbsDescr {
	padding:3px;
	text-align:center;
        border-top:1px solid #4f4f4f;
        color:#D6D4D4;
        font-size:10px;
        height:30px;
}


Milles merci d'avance pour avoir lu (et peut etre répondu à mon pb) ce post Smiley cligne

Baudouin aka b0b0
Modifié par b0b0 (09 Jan 2007 - 20:32)
Bonjour et bienvenue à toi!

Tu as une piste à exploiter dans le positionnement absolue
qui te permet de centrer toutes tes image en format paysage (150px)
en les callant en bas.

.ThumbsWrapper div.photosDIV img{
border:1px solid #bcbcbc;
position:absolute;
bottom:0;
left:50%;
margin-left:-75px; /*moitié de la largeur de ton image*/
}

Mais cela implique de une nouvelle règle pour les image en portrait avec
une class supplémentaire qui t'éviterais de redeclarer les déclarations communes:
.ThumbsWrapper div.photosDIV.portrait img {
margin-left:-50px; /*la moitié de la largeur de ton image*/
}

et dans le html:
<div class="photosDIV portrait">
                <a href="../photo-tes-14-79.html"><img src="../photos/thumbs/PB250008.JPG" alt="tes" title="tes" /></a>
                </div>


Mais cela exige que tu ne dépasse pas 2 formats d'image et que tu
ajoutes manuellement la class portrait div correspondant.
Une autre solutions si tu as la possibilité d'avoir toutes tes images à la
même hauteur est de leur attribuer à chacune via une régle css une marge
haute qui les calle en bas du div.

Concernant la structuration html, je te conseillerais cet article:
http://pompage.net/pompe/listesdefinitions/
Modifié par Hermann (09 Jan 2007 - 18:54)
"Bonjour et bienvenue à toi!"
Merci beaucoup Smiley smile

...et mille mercis pour ta réponse rapide Smiley cligne

En effet, ta solution est bonne, et j'avoue y avoir pensé aussi ...

Le seul problème est que tout le site est dynamique, et que les images sont redimensionnées proportionnellement lors de leur ajout ...

La plupart du temps elles auront des dimensions standards mais malheureusement certaines images auront parfois des dimensions différentes, car nous allons les "cropper", ce qui invalide complètement la possibilité que tu viens de présenter Smiley decu

J'espère qu'il y a quand même une solution à mon pb, car je commence à en douter et je n'ai aps envie de les aligner en haut ... Smiley decu (ça ferait trop moche, même avec un margin-top...)

Merci encore de ta réponse !!

Je suis sincèrement désolé qu'elle ne me convienne pas :'( (j'éspère que tu ne m'en veux pas ... j'avoue être souvent très/trop pointilleux...)

b0b0
a écrit :
Le seul problème est que tout le site est dynamique, et que les images sont redimensionnées proportionnellement lors de leur ajout ...


D'accord en effet j'aurais dû penser à cette possibilité mais tu aurais
dû le préciser, enfin c'est pas grave Smiley cligne
Dans ce cas la seule possibilité à ma connaissance et de convertir
ta structure html en un tableau même si ce n'est pas ce qu'il y de plus pertinent d'un point de vue sémantique.
Rien de t'interdit d'utiliser un tableau dans ce cas même si cela alourdit un peu ton balisage.
Ensuite tu dois aligner les images au niveau de la cellule à l'aide de la propriété vertical-align.

Exemple

td.photos {vertical-align: bottom}

Modifié par Hermann (09 Jan 2007 - 19:16)
Désolé de ne pas l'avoir précisé en effet cela aurait pu aider... Smiley decu

Pour le tableau j'avoue y avoir pensé (et j'ai même testé!), et le pb qui est survenu est que la hauteur d'un TD sous Firefox n'a pas été fixe Smiley ohwell FF2 l'a automatiquement mise à la taille de l'image contenue dans le TD au lieu de garder la taille que je lui avait fixée, alors que IE7 lui a tout compris ! (pour 1 fois!!!)

En effet moi non plus je n'ai pas vu d'autres solutions Smiley decu Merci d'avoir confirmé ma pensée, et je vais retenter d'y coller des tableaux & de fixer les hauteurs des cellules comme je l'avais fait ...

Merci beaucoup Hermann pour ton aide Smiley cligne

Je repasserais vous tenir au courant Smiley cligne

b0b0
a écrit :
Désolé mais utiliser un liste non ordonnée (ul) n'est pas le plus approprié
dans ton cas. Tu devrais lire http://pompage.net/pompe/listesdefinitions/

Merci de l'astuce Smiley cligne (j'avoue que ca fait un petit bout de temps que je me tue à m'améliorer en CSS, et j'en découvre tous les jours !!! Smiley lol )
Je vais bien sur y jeter un coup d'oeil ! Penses tu cependant qu'utiliser des UL/LI au lieu DL/DT pose un pb? (j'ai l'impression que non, et je ne vois pas l'avantage réél en ce qui concerne les DL/DT dans mon cas, mis à part avoir un site parfait selon la sémantique w3c! Smiley lol )

a écrit :
Mis appart ça tu as de belles photos Smiley cligne
Bonne continuation

Merci beaucoup ! Smiley cligne C'est pas fini, il nous en reste environ 400 à uploader, y compris la Guadeloupe & l'Espagne (qui sont mes préférées d'ailleurs je dois l'avouer)!

Merci encore pour ton aide qui me permettra de dormir moins bête ce soir ! Smiley cligne

A bientôt,


Baudouin
Modifié par b0b0 (10 Jan 2007 - 10:42)
Pense dorénavant à utiliser les balises de citation (bouton citer)
dés que tu veux citer un passage au lieu de mettre simplement des
guillemets. Même chose pour le code, etc.
a écrit :
Je vais bien sur y jeter un coup d'oeil ! Penses tu cependant qu'utiliser des UL/LI au lieu DL/DT pose un pb? (j'ai l'impression que non, et je ne vois pas l'avantage réél en ce qui concerne les DL/DT dans mon cas, mis à part avoir un site parfait selon la sémantique w3c! lol )

Ce n'est pas que l'utilisation d'une liste non-ordonnée pose problème
mais c'est ici un choix moins pertinent que la liste de définition qui pourra
éventuellement s'avérer dommageable pour des systèmes de prise ne
charge de la sémantique encore inconnus, mais peut-être est déjà le cas?
Je ne peux pas te dire, c'est un sujet très vaste que je ne connais pas
encore bien.
Tout ce que je peux te dire c'est qu'elle ne s'adresse pas à l'utilisateur final
puisqu'elle ne lui apporte rien, mais plutôt aux machines:
robots d'indexation, script permettant par exemple de créer
un TOC (table of content ou sommaire) à partir des titres Hn de la page
et sans doute d'autres applications.
Par exemple concernant l'utilité des liste de définitions, tu peux lire
cet article même si ça ne concerne pas ton cas de figure.

Il se peut que les lecteur d'écran (logiciel de synthèse vocal destiné aux
déficient visuels) puisse par exemple naviguer de <dt> en <dt>
comme il peut le faire avec les titres mais là mes maigres connaissances
en la matière ne me permettent pas de l'affirmer.
Modifié par Hermann (10 Jan 2007 - 02:09)
a écrit :
Pense dorénavant à utiliser les balises de citation (bouton citer)
dés que tu veux citer un passage au lieu de mettre simplement des
guillemets. Même chose pour le code, etc.

ok Smiley cligne

a écrit :
pourra
éventuellement s'avérer dommageable pour des systèmes de prise ne
charge de la sémantique encore inconnus

Je me disais la même chose en fait a propos du CSS en général... Si on regarde les sites de tous les grands (msg, google, yahoo,....), aucun n'est valide w3c ... Donc je me doute bien que pour l'instant ca passe, mais il faudra bien qu'un jour ca ne passe plus !!! Smiley lol

En tous cas merci, je vais me concentrer bientôt à faire les chose correctement Smiley cligne (c'est pas gagné !!! Smiley lol )

A plus tard Smiley cligne

b0b0