Centrer mes images en CSS sans bloc

Centrer mes images en CSS sans bloc - HTML/CSS - Programmation

Marsh Posté le 02-08-2006 à 19:52:56    

Salut tout le monde,
un problème assez embêtant se pose à moi.
En effet, je voudrais centrer les images présentent dans les news de mon site, gérées via php et syntaxe wiki.
 
Il m'est impossible d'utiliser le text-align: center; vu que je ne peux pas encadrer les images d'un div.
 
Je ne peux donc qu'appliquer un style à chaque image, et j'ai essayé pas mal de chose sans succès.
 
Si quelqu'un a une idée, elle serait la bienvenue, merci :).


---------------
Twitter
Reply

Marsh Posté le 02-08-2006 à 19:52:56   

Reply

Marsh Posté le 02-08-2006 à 21:57:44    

Tu as essayé ça:
 

img {display:block; margin:0 auto;}


 
?

Reply

Marsh Posté le 02-08-2006 à 22:04:29    

Oui, c'est d'ailleurs ce que j'ai essayé en premier, les images se centrent bien, mais les une en dessous des autres.
 
En gros ça fait une colonne centrée.


---------------
Twitter
Reply

Marsh Posté le 02-08-2006 à 22:08:00    

He oui, on arrive très vite aux limites du CSS (dès la deuxième ligne!).
Je ne vois pas d'autre solution que de trifouiller dans le générateur PHP/Wiki pour encadrer les images d'un div.

Reply

Marsh Posté le 02-08-2006 à 22:34:51    

koskoz a écrit :

Oui, c'est d'ailleurs ce que j'ai essayé en premier, les images se centrent bien, mais les une en dessous des autres.
 
En gros ça fait une colonne centrée.


 
Euh sorry j'ai pas exactement compris ce que tu entendais par "image centrée" alors...?
Tu voudrais qu'il y ait plusieures images sur une ligne, mais qu'elles soient centrées dans la page ?
Tu connais à l'avance le nombre d'images en largeur et ce nombre est fixe quelque soit les modifs de la taille de la fenêtre du navigateur?
Tu peux attribuer un style différent à chaque image ?
 
edit:
 
Oublie mes question ;), Mon idée était la suivante (pour autant que j'aie compris le problème cette fois):
- additionner le width des images sur une ligne. Ex: 100px + 200px + 150px = 450px + 60px de padding pour faire joli (10px de chaque côté) = 510px
- positionner toutes les images en relative et left 50%, attribuer à la première un margin-left de -255 (510/2)
 
 
ça donnerait ceci pour mon exemple:
 

img1,img2,img3 {position:relative; left:50%; padding:10px;}
img1 {margin-left:-275px;}


 
Mais bon IE foire sur ce coup là ;)


Message édité par Pitsy le 02-08-2006 à 23:03:38
Reply

Marsh Posté le 02-08-2006 à 22:58:52    

Bah, je veux que mes images soit centrés sur la même ligne.
Genre j'ai une news avec deux images cote à cote (séparées par un espace), j'aimerai qu'elles soient centrées l'une à côté de l'autre, sur la même ligne.
Je ne connais pas à l'avance le nombre d'image vu que ça change à chaque news, et je ne peux pas attribuer un style différent par image.


---------------
Twitter
Reply

Marsh Posté le 02-08-2006 à 23:06:57    

koskoz a écrit :

je ne peux pas attribuer un style différent par image.


 
Oky bon, là, je pense que c'est mort ;)

Reply

Marsh Posté le 02-08-2006 à 23:08:08    

C'est pas possible, il doit bien y avoir un moyen de centrer mes images :ouch:
 
Pitsy => ta technique dans ton edit ne fonctionne pas, je ne peux pas changer la css à chaque news, ni préciser la taille des images.
D'ailleurs les images n'ont pas forcément la même taille d'une news à l'autre.

Message cité 1 fois
Message édité par koskoz le 02-08-2006 à 23:13:22

---------------
Twitter
Reply

Marsh Posté le 02-08-2006 à 23:20:51    

koskoz a écrit :

C'est pas possible, il doit bien y avoir un moyen de centrer mes images :ouch:
 
Pitsy => ta technique dans ton edit ne fonctionne pas, je ne peux pas changer la css à chaque news, ni préciser la taille des images.
D'ailleurs les images n'ont pas forcément la même taille d'une news à l'autre.


 
Vivi je sais bien que cela ne va pas, j'ai édité avant l'autre réponse.
 
Je me doutais bien que la taille change etc... c'était au cas où tu pouvais donner un css précis à une image précise. Tu dis aussi que c'est généré par php, tu pouvais donc peut-être aussi lui faire calculer le css d'après la taille des images. Comme je ne sais pas exactement à quoi tu as accès ou non, j'aurais essayé...
 
Bref, bonne chance ! (pas sûr que ça suffise ;) )

Reply

Marsh Posté le 02-08-2006 à 23:29:53    

J'ai accès à tout vu que c'est codé avec mes petites mimines :love:.
 
T'as même le lien dans ma signature si tu veux voir ce que ça donne (avec les images pas centrées :fou:).


---------------
Twitter
Reply

Marsh Posté le 02-08-2006 à 23:29:53   

Reply

Marsh Posté le 02-08-2006 à 23:32:55    

Et... pourquoi tu ne pourrait pas ajouter un div autour des images+textes?

Reply

Marsh Posté le 02-08-2006 à 23:33:43    

Bah je peux ajouter un div autour des images +textes, mais dans ce cas le texte sera centré lui aussi non ?


---------------
Twitter
Reply

Marsh Posté le 02-08-2006 à 23:40:43    

voui, sauf si.. tu mets le texte dans un autre div. me trompe-je?
PS: ou tu laisse tomber les divs et tu mets des tables :D


Message édité par nargy le 02-08-2006 à 23:42:09
Reply

Marsh Posté le 02-08-2006 à 23:45:20    

Je peux pas séparer le texte des images puisque tout le texte et les images sont contenus ensemble dans la bdd.


---------------
Twitter
Reply

Marsh Posté le 02-08-2006 à 23:50:36    

koskoz a écrit :

J'ai accès à tout vu que c'est codé avec mes petites mimines :love:.


 
Mais arf!!!  
Je croyais que tu ne pouvais pas du tout toucher à la structure html moi...  :cry:  
 
Comme suggéré par nargy, tu mets, par exemple, un div autour de tes images avec un
 

<div class="centre"></div>

et dans ton css
 

.centre {text-align:center;}


 
Quelque chose come ça tu peux ?
 

koskoz a écrit :

Je peux pas séparer le texte des images puisque tout le texte et les images sont contenus ensemble dans la bdd.


 
Euh, là je ne vois pas le raport avec la choucroute ni le blem vu que tu codes tout toi-même  :heink:  
Je dois être trop fatiguée; je vais me coucher, bonne nuit :)
 
et j'espère que nargy pourra t'aider

Reply

Marsh Posté le 02-08-2006 à 23:51:56    

Ben... tu as toujours les expression régulières qui peuvent venir à ton secours:
<img[^>]*>
 
Si tu fait du PHP par exemple:
ereg_replace("(<img[^>]*> )","<div class=img>\\1</div>" );

Reply

Marsh Posté le 02-08-2006 à 23:54:27    

Bon, en gros voilà comme ça se passe

Code :
  1. <ma structure avec tout mes div>
  2. <? echo $news['news']; ?>
  3. </ma structure avec tout mes div>


 
Donc, chaque news est contenu dans la bdd, et elle est enregistrer au format wiki.
 
Ensuite, le petit bout de code php appelle ma news.
Je ne peux pas rajouter de div ou quoi que se soit dans la news (celle qui contient le texte ET les url des images), mais autour si.
 
Compris ou pas ?


---------------
Twitter
Reply

Marsh Posté le 02-08-2006 à 23:55:58    

nargy a écrit :

Ben... tu as toujours les expression régulières qui peuvent venir à ton secours:
<img[^>]*>
 
Si tu fait du PHP par exemple:
ereg_replace("(<img[^>]*> )","<div class=img>\\1</div>" );


 
Via la configuration de wikirender je peux très bien entourer chaque image d'un div, ça c'est tout à fait faisable.
Mais je trouve cette solution un peu ballot parce que si j'ai 5 images j'aurais 5 div.
 
Enfin bon, en dernier recours... [:spamafote]


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 00:00:45    

Heu...

Code :
  1. <?
  2.   echo ereg_replace("(<img[^>]*> )","<div class=img>\\1</div>", $news['news']);
  3. ?>


Sauf si, tu n'utilise pas <<echo>> mais une autre fonction Lambda d'une bibliothèque Bêta. Auquel cas, il faut bidouiller Lambda.

Reply

Marsh Posté le 03-08-2006 à 00:02:02    

> Enfin bon, en dernier recours... [:spamafote]
[:ouais2] ouais, c'est le CSS.

Reply

Marsh Posté le 03-08-2006 à 00:32:56    

nargy a écrit :

Heu...

Code :
  1. <?
  2.   echo ereg_replace("(<img[^>]*> )","<div class=img>\\1</div>", $news['news']);
  3. ?>


Sauf si, tu n'utilise pas <<echo>> mais une autre fonction Lambda d'une bibliothèque Bêta. Auquel cas, il faut bidouiller Lambda.


 
Pas besoin d'une regexp, je peux le faire directement dans la conf wikirender, mais c'est juste que ça va me foutre pleins de div partout (une par image en fait).


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 09:59:17    

bon
normalement chaque news est au moins dans un bloc
tu centres ce bloc avec text-align center
et normalement ton texte est dans des <p> et eux se bouffent un text-align:left
 
et tes images sont centrees et ton texte a gauche
[:barthaliastoxik]

Reply

Marsh Posté le 03-08-2006 à 11:37:49    

Ouais, c'est tout à fait faisable ça.
Super sale, mais tout à fait faisable :D.


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 11:46:44    

sale ?

Reply

Marsh Posté le 03-08-2006 à 11:53:56    

En fait c'est pas faisable car les images aussi sont entre <p></p> [:matleflou]


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 12:17:18    

Petite explication sur le <<text-align:center>>
C'est un attribut qui fonctionne sur un conteneur. Par exemple un <div> ou un <p>. Donc, ça n'a pas d'effet sur une image, si ce n'est de centrer le texte alternatif (rêve pas, les navigateurs ne l'ont pas implémenté).
 
Tu ne peut donc pas t'en sortir sans mettre ton image dans un conteneur.
 
Comme tu utilise une fonction qui te génère plus ou moins le code HTML, c'est cette fonction que tu doit modifier, afin de lui faire prendre en compte que l'image doit être dans un conteneur particulier avec au moins une classe CSS définie.
 
J'en revient donc à mon point de départ:

Citation :


Je ne vois pas d'autre solution que de trifouiller dans le générateur PHP/Wiki pour encadrer les images d'un div.


 
Et non, ce n'est pas sale. Pense aux fleurs....

Reply

Marsh Posté le 03-08-2006 à 12:23:40    

koskoz a écrit :

En fait c'est pas faisable car les images aussi sont entre <p></p> [:matleflou]


 
 
ben c est ca qui est sale :/
pas ma solution
tes images n ont rien a foutre dans des paragraphes  :sweat:  
 
et non les images n ont pas a etre encadrées dans un div il y a deja un div qui gere tout ca :/
une image est un bloc en soi pas besoin d en rajouter :/

Reply

Marsh Posté le 03-08-2006 à 12:35:47    

C'est la syntaxe wikirender qui les encadre dans un paragraphe, j'y peux rien moi...
 
Je sais pas si je suis capable de trifouiller le code pour modifier ça...
 
Par contre, je peux modifier la config pour entourer chaque image d'un div, mais il y aura autant de div que d'image.


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 13:04:17    

bah pas grave on va t aider a modifier ton script wiki
t as plusieurs fichiers ou un seul ?

Reply

Marsh Posté le 03-08-2006 à 13:13:22    

J'ai deux fichier, wikirender.conf.php et wikirender.lib.php.
 
Vous pouvez télécharger le script ici.


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 13:59:43    

bon pas sur de moi du tout :D
 

Code :
  1. var $bloctags = array('title'=>true, 'list'=>true,
  2.    'pre'=>true,'hr'=>true, 'blockquote'=>true,'definition'=>true,'table'=>true, 'p'=>true);


 
dans le conf ligne 49
 
tu remplaces par  
 

Code :
  1. var $bloctags = array('title'=>true, 'list'=>true,
  2.    'pre'=>true,'hr'=>true, 'blockquote'=>true,'definition'=>true,'table'=>true,'image'=>true, 'p'=>true);


 
je vais faire quelques tests chez moi
(en fait j hésite entre image et img :/ donc essaie les deux et ca risque de foutre le bordel mais essaie quand meme ca sera facile de revenir en arriere )
 

Reply

Marsh Posté le 03-08-2006 à 14:10:12    

Bon, c'est aucun des deux noms, je cherche.
 
Edit : bon en fait c'est normal, pour l'instant elle n'existe pas cette classe.
Il faut en quelque sorte supprimer le fonction de génération des images dans la première partie du script et ensuite créer une classe WRB_image dans la seconde partie.


Message édité par koskoz le 03-08-2006 à 14:13:11

---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 15:00:21    

bon en fait il me faudrait une bonne semaine pour analyser le code :D
j arrive pas a voir non plus quand il entoure les images
enfin perso je trouve quand meme la gestion du bouzin assez etrange ^^;
mais j ai trouvé une sorte de bug que tu pourrais utiliser
si tu mets un espace *en debut de ligne* ca fait un <pre> au lieu d un <p>
donc tu t'arranges pour que tes images soient dans un <pre> dans ta css tu fous un text-align:center sur pre
et bingo ^^
 
edit:
ouais j avais pas calculé tout de suite qu il fallait une class pour les elements de bloctags
en fait je pensais que c etait juste une liste des elements qui ne doivent pas etre wrappés par un <p> ou un <pre>


Message édité par mIRROR le 03-08-2006 à 15:03:25
Reply

Marsh Posté le 03-08-2006 à 16:10:28    

Nous faudrait quelqu'un qui s'y connaît bien en php pour modifier le code de wikirender.


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 18:32:29    

dans la fonction wikibuildimage($contents, $attr), du fichier de conf, à la fin tu retourne:

Code :
  1. return '<div class="wikiimage"><img'.$attribut.' /></div>';


et le tour est joué!


Message édité par nargy le 03-08-2006 à 18:32:52
Reply

Marsh Posté le 03-08-2006 à 18:49:03    

C'est ce que je propose depuis le début, mais ça va me foutre pleins de div, c'est crade :/


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 18:59:16    

Ah ah, trop bon.
Quand j'entoure la balise img d'un div avec la propriété text-align: center, les images sont bien centrées, mais en colonne, comme avec :
 
img {display:block; margin:0 auto;}
 
La seule différence c'est qu'elles sont espacées les unes des autres.
 
Je désespère...


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 19:02:08    

bah evidemment ca regle pas le probleme [:pingouino]
 
t as bien lu ma soluce ? :sweat:
 
edit avant les remarques:
oui c est du bricolage mais en meme temps avec le code que genere ton script hein [:pingouino]


Message édité par mIRROR le 03-08-2006 à 19:03:38
Reply

Marsh Posté le 03-08-2006 à 19:07:19    

Bah, j'ai pas encore essayé le truc du pre, mais si je pouvais éviter :sweat:.
 
Enfin, en dernier recours si sa fonctionne...


---------------
Twitter
Reply

Marsh Posté le 03-08-2006 à 19:18:52    

je sais, c est semantiquement hideux :D
meme si c est pas pire qu un <p> entre nous :/
 
apres y a peut etre moyen de faire plus propre en js
mais je debute dans le domaine je pourrais pas t aider beaucoup :D
 
et pour ce qui est de modifier le script a la mano honnetement j ai pas le courage de m y plonger
ils ont pas un forum ?
il pourraient peut etre t aider

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed