XHTML 1.1 Strict: aligner autre chose que du texte

XHTML 1.1 Strict: aligner autre chose que du texte - HTML/CSS - Programmation

Marsh Posté le 07-01-2003 à 20:41:15    

Bonjour,
 
  Voila, j'ai un tableau qui contient plusieurs types d'éléments, tel que des images, du textes, des formulaires, ... Malheureusement, j'ai constaté qu'en XHTML l'attribut align="" n'existait plus. Alors pour le texte pas de problèmes, il y a text-align en CSS, mais pour les autres types de données, comment faut-il faire?
 

Reply

Marsh Posté le 07-01-2003 à 20:41:15   

Reply

Marsh Posté le 07-01-2003 à 21:02:46    

Avec les CSS :  
 

text-align: center;


 
ça devrait centrer tout ce qui est texte/images/champs d'un formulaire (autres valeurs : left ou right)


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 07-01-2003 à 21:08:35    

merci  :jap:  
 
et pour ce qui est de l'attribut align sur la balise <img>?

Reply

Marsh Posté le 07-01-2003 à 21:10:20    

Toujours avec les CSS :
 

float: right;


ou left :D


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 07-01-2003 à 21:18:44    

et une petite dernière pour la route (promis après je te fous la paix pendant au moins 15 minutes  ;) ).
 
Quand je met un CSS display: block sur une image, le text-align: center n'a pas d'influence sur l'élément. Tu as une solution a proposé (et peut-être une explication du phénomène?)
Le problème ne se pose pas dans IE qui l'interprète correctement, mais mozilla/Netscape ne le font pas.
Hard de passer du HTML au XHTML strict  :pt1cable: , mais ça fait du bien  ;)
 
En tout cas, tu es un chefv  :hello:


Message édité par souljacker le 07-01-2003 à 21:19:51
Reply

Marsh Posté le 07-01-2003 à 21:36:27    

SoulJacker a écrit :

Quand je met un CSS display: block sur une image, le text-align: center n'a pas d'influence sur l'élément. Tu as une solution a proposé (et peut-être une explication du phénomène?)
Le problème ne se pose pas dans IE qui l'interprète correctement, mais mozilla/Netscape ne le font pas.


Non, c'est IE qui se plante. Si ton image est un bloc elle n'est plus concernée par text-align, qui comme son nom l'indique aligne  du texte et pas des blocs (et les images par défaut sont considérés comme du texte, display: inline)
 
Donc il faut utiliser autre chose. Par exemple le positionnement absolu, mais après ça dépend comment est conçue ta mise en page...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 07-01-2003 à 21:41:27    

Merci, j'ai essayer avec float et ça marche. Je m'en doutais un peu que c'était IE qui était dans le faux.
 
Tu es vraiment un as, avec toi dans le coin, on comprend mieux les dessous du xhtml.
 
Encore merci  :jap:  :love:  
 
Bon il me reste plus qu'à le faire fonctionner sous IE 5, NS 6 et NS 7.

Reply

Marsh Posté le 07-01-2003 à 22:42:02    

Bon voila, presque 1 heure sans t'emmerdé.
 
J'ai un petit soucis avec IE5.
 
Dans une cellule d'un tableau en plein milieu de la page, j'affiche une image que j'aligne avec float: right. Sur cette image, j'y applique aussi display: block. Mais voila, avec les autres navigateurs (IE6, NS6, NS7, Mozilla), ça fonctionne. Mais pas dans IE5, j'ai un espace entre le bord gauche de la cellule et l'image. J'ai essayer en appliquand margin-right: 0px, padding-right: 0px, right: 0px ainsi qu'avec différente système de positions, mais rien à faire cet espace reste  :( . Aurais-tu une idée?  :??:  
 
Voici la partie du code incriminé (entre autre car ce le fait à d'autres endroits).
 

Code :
  1. <table style="width: 640px; height: 15px" cellpadding="0" cellspacing="0">
  2. <tr>
  3. <td valign="top" style="width: 320px; height: 15px">
  4.  <img src="<?php echo $image_path; ?>/bord-haut-gauche.gif" width="15" height="15" class="design" alt=""/>
  5. </td>
  6. <td valign="top" style="width: 320px; height: 15px">
  7.  <img src="<?php echo $image_path; ?>/bord-haut-droit.gif" width="15" height="15" class="design" style="float: right"/>
  8. </td>
  9. </tr>
  10. </table>

Reply

Marsh Posté le 08-01-2003 à 00:01:42    

euh... je comprend pas bien pourquoi tu fais une table si ce n'est que pour mettre deux images. Pourquoi tu ne les mets pas simplement côte à côte?

Reply

Marsh Posté le 08-01-2003 à 00:07:46    

Je confirme, dans 99% des situations on peut se passer de tableaux... :D


---------------
1732 : Giacinto Paoli rédige un projet de constitution, dont le préambule decrète pour la première fois dans l'histoire de l'Humanité "Les Hommes naissent libres et égaux en droit"...
Reply

Marsh Posté le 08-01-2003 à 00:07:46   

Reply

Marsh Posté le 08-01-2003 à 00:26:05    

Au fait concernant IE5 qui a du mal à floater à fond une image à gauche ou à droite : c'est un bug connu et reconnu... perso je contourne cela en employant pas la balise <img> mais un <div> dont on définit les propriétés CSS ainsi (c un exemple, à toi d'indiquer de bonnes valeurs) :
 
div#img{
border-style:none;
float:left;
width:55px;
height:32px;
background-image:url(img/truc.gif);
}
 
Et curieusement, ça marche...
 


---------------
1732 : Giacinto Paoli rédige un projet de constitution, dont le préambule decrète pour la première fois dans l'histoire de l'Humanité "Les Hommes naissent libres et égaux en droit"...
Reply

Marsh Posté le 08-01-2003 à 00:38:57    

En fait IE se débrouille bien avec les flottants mais à la condition d'indiquer dans le CSS la largeur du bloc. Dans le cas d'une image, il faut donc répéter la largeur de celle-ci dans le style.


Message édité par gm_superstar le 08-01-2003 à 00:39:13

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 08:30:44    

Pourquoi j'utilise un tableau? Parce que là, c'est un ancien design que je récupère qui fonctionnait avec ce tableau et que je n'ai pas voulu me casser le cul  :sweat:  
 
Puis aussi, une veille habitude du html  :pfff:

Reply

Marsh Posté le 08-01-2003 à 11:14:42    

Avec les attributs qu'il a ton tableau il passera pas la validation en XHTML 1.1


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 11:20:18    

Ah pas de pot  :non: , il y est passé à la validation xhtml 1.1: http://guillaume.lesur.free.fr/generation-nt/. Mais je sais que l'utilisation des tableaux que je fait est abusive, mais le design vient d'un truc fait avec DreamWeaver et comme l'optimisation du code urge un peu, je fait au plus vite.
 
Sur le prochain design, je compte eviter le plus possible l'utilisation des tableaux pour le design et seulement les utiliser pour afficher des tables, comme ça devrait l'être.
 
Mais bon comme je l'ai déjà dit, ça fait 3-4 ans que je travaille en HTML et j'ai pris les mauvaises habitudes de la liberté laisser. Donc la transistion au niveau de réflexion HTML->XHTML n'est pas évidente et ne se fait pas en un jour  :(  :non:  :sweat: . Il faut se remettre en question complètement.


Message édité par souljacker le 08-01-2003 à 11:22:31
Reply

Marsh Posté le 08-01-2003 à 11:27:51    

Heu... oui c'est moi qui ai bu, j'ai cru voir des attributs dépréciés dans ton code :whistle:
 
Bon sinon c'est dans cette page que tu as un problème d'espace avec IE 5 ? Tu peux faire un screenshot parce que je n'ai pas d'IE 5 sous la main là....
 
Sinon quelque conseils :
 
- évite de mettre les styles dans un attribut style="..." utilise des classes dans un fichier CSS séparé plutôt
 
- un élément qui a la propriété float: right|left obtient automatiquement la propriété display: block; donc pas la peine de la rajouter.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 11:32:58    

Oui mais pour les width et height, je fais comment, car j'en pratiquement pas deux les mêmes, je ne dois quand même pas faire une classe pour toutes les possibilités rencontrés?
 
Au fait, est-il possible d'appliquer plusieurs classe à un même élément? Parce que sinon, le css va faire 3 km de long  :ouch: .
 
Au fait, tu penses que mettre un float: left est nécessaire si l'image se trouve déjà au bon endroit?
 
Et une petite dernière, est-il possible de faire une page aux normes compatibles avec Opera?
 
le screenshot, je te l'envois pas mail?


Message édité par souljacker le 08-01-2003 à 11:38:53
Reply

Marsh Posté le 08-01-2003 à 11:42:52    

SoulJacker a écrit :

Oui mais pour les width et height, je fais comment, car j'en pratiquement pas deux les mêmes, je ne dois quand même pas faire une classe pour toutes les possibilités rencontrés?
 
Au fait, est-il possible d'appliquer plusieurs classe à un même élément? Parce que sinon, le css va faire 3 km de long  :ouch: .


Oui :
 
class="classe1 classe2 classe3"
 
Donc effectivement dans une première classe tu peux mettre tout ce qui est aspect (couleurs, fond, bordures) et dans l'autre tout ce qui est dimensions.
 
Sinon, pour alléger ton code :
valign -> vertical-align (style s'appliquant aux TD)
cellspacing -> border-spacing
cellpadding -> padding (au niveau des TD)
 

SoulJacker a écrit :

Au fait, tu penses que mettre un float: left est nécessaire si l'image se trouve déjà au bon endroit?


Je dirais non, mais attention la différence sera qu'avec une propriété float le texte ira se mettre autour de l'image, alors que sans l'image sera alignée sur la ligne de base du texte (comme les smileys ici)

SoulJacker a écrit :

Et une petite dernière, est-il possible de faire une page aux normes compatibles avec Opera?


Heu oui, en faisant des pages aux normes :D Bon il y a quelques trucs à vérifier mais si tu n'en dit pas plus...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 11:43:45    

le screenshot, tu peux pas le mettre sur ton site ?


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 11:50:27    

chut c pas mon site ;) , je squatte de l'espace web.
 
voila, le screenshot est dispo sur http://guillaume.lesur.free.fr/generation-nt/ie5.jpg. Dessus il y a le test avec le tableau et sans le tableau pour les deux petites images.
 
Le problème est exactement le même en bas de page.

Reply

Marsh Posté le 08-01-2003 à 12:23:33    

Pour ton problème d'espace, vire les différents attributs styles que tu a placé sur tes éléments <td> et <img> et pour la cellule de droite contente toi de lui appliquer le style text-align: right;
 
Donc au final, on a :
 

<td>
  <img src="<?php echo $image_path; ?>/bord-haut-gauche.gif" width="15" height="15" class="design" alt="" />
</td>
<td class="droite">
  <img src="<?php echo $image_path; ?>/bord-haut-droit.gif" width="15" height="15" class="design" />
</td>


 
Avec :
 

.droite {
  text-align: right;
}


 
Indiquer les dimensions pour les cellules est ici inutile vu que tu les as déjà indiqué pour le tableau (bien que je pense que la hauteur soit superflue) et les images.


Message édité par gm_superstar le 08-01-2003 à 12:23:59

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 12:37:05    

Maintenant ca fonctionne sous IE, mais plus sous Mozilla car dans la classe design, je transforme l'image en block et non pas en texte. Donc à part faire un CSS pour chaque browser, tu vois une autre solution?

Reply

Marsh Posté le 08-01-2003 à 13:03:16    

Mais tu n'as aucune raison de mettre cette image en bloc...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 13:15:04    

Celle là non, mais le problème va se poser pour une image qui se trouve plus bas et qui doit être collé au bord haut d'une cellule. Donc, pour celle là, le problème est résolu, mais pas pour celle d'en bas. Et donc par soucis d'uniformité, je préfere toutes les mettres en block.

Reply

Marsh Posté le 08-01-2003 à 13:37:08    

Je répète tu n'as aucune raison de mettre tes images en block. Si tu veux les aligner à droite tu as 2 solutions :
 
- Avec float: right; ce qui, implicitement, met l'image en block
- Avec text-align: right; (qui ne marche pas avec les blocks)
 
Le fait que ton image d'en-bas doit être collé au bord haut d'une cellule n'a rien à voir avec le fait qu'elle soit un block ou non. De quelle image parles-tu ?


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 13:51:34    

Si tu vas sur le lien que je t'ai donnée et que tu scrolls jusqu'en bas, tu trouveras le texte "Ce site est la propriété exclusive de www.generation-nt.com © 2001-2002. Pour tout contact: Webmaster" et juste au dessus de la cellule qui contient le texte, il y a 2 images qui marquent les arrondis et il y a aussi les deux dernier grand arrondis qui complète le design. Si elle ne sont pas en block, je me retrouve avec un espace en dessous de l'image, donc pour l'alignement c ok mais alors le design est quand même peter à cause de ça  :cry:  
 
résultat dans Mozilla: http://guillaume.lesur.free.fr/gen [...] -casse.jpg

Reply

Marsh Posté le 08-01-2003 à 14:01:04    

Et pourquoi tu veux pas les foutre en "display:block"  :??: J'ai du mal à te suivre...


---------------
1732 : Giacinto Paoli rédige un projet de constitution, dont le préambule decrète pour la première fois dans l'histoire de l'Humanité "Les Hommes naissent libres et égaux en droit"...
Reply

Marsh Posté le 08-01-2003 à 16:42:56    

Bon essaye ça :
 
Tu vires tout ton bazar de tableau et tu mets tes 2 images dans un DIV :
 


<div class="coins"><img src="images/design/bord-haut-gauche.gif" width="15" height="15" alt="" /><img class="coinDroite" src="images/design/bord-haut-droit.gif" width="15" height="15" alt="" /></div>


 
(tous les éléments doivent être collés)
 
Avec les styles suivants :
 

.coins {
  height: 15px;
}
 
.coinDroite {
  position: relative;
  left: 610px;
}


 
ET LES IMAGES NE DOIVENT PAS ETRE DES BLOCS !
 
Le "position relative; left 610px;" a pour but de pousser le coin de droite... à droite de 610 pixels, vu que ta cellule conteneur fait 640 pixels.
 
Ca devrait marcher aussi pour les petits coins du bas.


Message édité par gm_superstar le 08-01-2003 à 16:43:39

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 16:48:15    

A ton avis, si je supprime tous les tableaux et que je les remplaces par des <div>, ca a plus de chance de fonctinner?


Message édité par souljacker le 08-01-2003 à 16:48:36
Reply

Marsh Posté le 08-01-2003 à 16:49:24    

Salut pluton  :D   ;)  
On bosse bien ?  :D  :D

Reply

Marsh Posté le 08-01-2003 à 16:51:42    

SoulJacker a écrit :

A ton avis, si je supprime tous les tableaux et que je les remplaces par des <div>, ca a plus de chance de fonctinner?


C'est comme tu veux mais il vaut mieux repartir de zéro là... donc plus de travail... Mais la solution que j'ai donnée fonctionne...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 16:53:32    

Tu ne m'aides pas beaucoup je constate surtout  ;)  :D  :D  :D

Reply

Marsh Posté le 08-01-2003 à 16:58:33    

gm_superstar, tu vas rire.
 
J'ai essayé et ça fonctionne.. mais à moitié. Pour IE6, NS6, NS7 et mozilla, j'ai du mettre 606px au lieu de 610px. Et pour IE5, je dois mettre 607px.
 
Au fait, tu dis que les images ne doivent pas être des blocks, je veux bien te croire. Mais si elle ne sont pas des blocks, mon design se casse la gueule. Comment dois-je faire alors?
 
EDIT: ca va j'ai compris, il faut qu'elles soient dans un div et pas dans un tableau.


Message édité par souljacker le 08-01-2003 à 17:00:49
Reply

Marsh Posté le 08-01-2003 à 17:02:00    

Ben un <div> qui floate à droite, et un autre qui floate à gauche, et c réglé non ?  :heink:


---------------
1732 : Giacinto Paoli rédige un projet de constitution, dont le préambule decrète pour la première fois dans l'histoire de l'Humanité "Les Hommes naissent libres et égaux en droit"...
Reply

Marsh Posté le 08-01-2003 à 17:05:12    

SoulJacker a écrit :

gm_superstar, tu vas rire.
 
J'ai essayé et ça fonctionne.. mais à moitié. Pour IE6, NS6, NS7 et mozilla, j'ai du mettre 606px au lieu de 610px. Et pour IE5, je dois mettre 607px.
 
Au fait, tu dis que les images ne doivent pas être des blocks, je veux bien te croire. Mais si elle ne sont pas des blocks, mon design se casse la gueule. Comment dois-je faire alors?
 
EDIT: ca va j'ai compris, il faut qu'elles soient dans un div et pas dans un tableau.


J'ai testé à 610 pixels et ça marche pour tous les navigateurs :heink: Par contre n'hésite pas à virer les largeurs superflues, vu que les largeurs de tes colonnes sont déterminées par tes 3 images du haut, pas la peine de spécifier 162, 640, 162 partout... Mieux vaut laisser le navigateur se dévrouiller à ce niveau.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 08-01-2003 à 17:35:27    

de toute façon, il y a toujours le problème de l'espace en dessous de l'image qui casse tout  :cry: . Franchement, je comprends plus rien. Avec les div, c pas demain la veille que j'aurais fini. Non, je pense qu'il me reste le suicide, adieu monde cruel  :cry:  :cry:  :cry:

Reply

Marsh Posté le 08-01-2003 à 17:39:42    

'tain c pourtant pas compliqué... je vois pas ce qui te bloque dans toutes les solutions qui t'ont été proposées plus haut...


---------------
1732 : Giacinto Paoli rédige un projet de constitution, dont le préambule decrète pour la première fois dans l'histoire de l'Humanité "Les Hommes naissent libres et égaux en droit"...
Reply

Marsh Posté le 08-01-2003 à 17:45:33    

C'est peut-être pas compliqué, mais dans les solutions, soit ca passe pas sous IE5, soit ca passe pas sous Mozilla. Mais bon, c'est surement du au mélange table-div


Message édité par souljacker le 08-01-2003 à 17:46:39
Reply

Marsh Posté le 08-01-2003 à 17:47:07    

tu as essayé en mettant tout en position absolue, ca en général ca passe partout

Reply

Marsh Posté le 08-01-2003 à 17:50:48    

SoulJacker a écrit :

C'est peut-être pas compliqué, mais dans les solutions, soit ca passe pas sous IE5, soit ca passe pas sous Mozilla. Mais bon, c'est surement du au mélange table-div


 
Un bon <div style="float:left;width:gnagna;height:gnagna;background-image:url(truc);"></div>
<div style="float:right;width:gnagna;height:gnagna;background-image:url(bidule);"></div>
 
Normalement ca passe sous IE5, Mozilla...


---------------
1732 : Giacinto Paoli rédige un projet de constitution, dont le préambule decrète pour la première fois dans l'histoire de l'Humanité "Les Hommes naissent libres et égaux en droit"...
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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