IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

[CSS] utilisation de display:table


Sujet :

CSS

  1. #1
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut [CSS] utilisation de display:table
    Bonjour,

    J'essaie de faire une mise en page d'une barre de navigation simple (<- titre ->) pour faire défiler des photos, en utilisant display:table.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    CSS :
     
    #navphoto {
    	display: table;
    	border: 1px solid green;
    	width: 400px;
    	}
    #Fmoins, #Fplus {
    	display: table-cell;
    	cursor: pointer;
    	border: 1px dotted red;
    	width: 20%;
    	text-align: center;
    	}
    #texte {
    	display: table-cell;
    	cursor: pointer;
    	text-align: center;
    	}
     
    HTML :
     
    <div id="navphoto">
    	<div id="Fmoins"><img src="fleche-gauche.gif" alt="Photo précédente" title="Photo précédente" onclick="PhotoMove(-1);" width="17" height="17" border="0" align="absmiddle"></div>
    	<strong id="texte">Autres photos</strong>
    	<div id="Fplus"><img src="fleche-droite.gif" alt="Photo suivante" title="Photo suivante" onclick="PhotoMove(1);" width="17" height="17" border="0" align="absmiddle"></div>
    </div>
    L'affichage est bon sous FF : les cellules sont bien les unes à coté des autres.
    Sous IE par contre, les cellules sont les unes au dessus des autres

    C'est la première fois que j'utilise cette technique, alors j'ai peut-être oublié quelque chose.

    Merci[/img]
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  2. #2
    Membre confirmé
    Avatar de ilood
    Inscrit en
    Mars 2005
    Messages
    468
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 468
    Points : 529
    Points
    529
    Par défaut
    Salut,

    Etant donné que ie ne supporte pas bien la propriété css display cela risque d'etre difficile.

    Peut-être qu'en essayant d'appliquer à float: left et float: right pour ie et de l'annuler pour les autres navigateurs

    Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #Fmoins {float: left; }
    #Fplus {float: right; }
     
    html>body #Fmoins {float: none }
    html>body #Fplus {float: none }
    Qui aime bien, charrie bien

  3. #3
    Membre confirmé
    Avatar de giminik
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 303
    Points : 482
    Points
    482
    Par défaut
    enfin, à ce moment là autant faire du float pour tous, c'est plus facile à mettre en place. le display table n'est pas approprié dans ce cas là (sémantiquement parlant) puisqu'il ne s'agit pas à priori de données tabulaires... l'idéal serait d'utiliser soit float, soit display:inline...

  4. #4
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Ok, j'ai refait une version en div qui marche bien quant à la présentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    CSS :
     
    #navphoto {
    	border: 1px solid green;
    	width: 300px;
    	}
    #Fmoins, #Fplus {
    	float: left;
    	cursor: pointer;
    	width: 18%;
    	text-align: center;
    	border: 1px dotted red;
    	}
    #Fmoins img {
    /*	display: none;*/
    	}
    #texte {
    	float: left;
    	text-align: center;
    	width: 60%;
    	border: 1px dotted blue;
    	}
     
    HTML :
     
    <div id="navphoto">
    	<div id="Fmoins"><img src="fleche-gauche.gif" alt="Photo précédente" title="Photo précédente" onclick="PhotoMove(-1);" width="17" height="17" border="0" align="absmiddle"></div>
    	<div id="texte">Autres photos</div>
    	<div id="Fplus"><img src="fleche-droite.gif" alt="Photo suivante" title="Photo suivante" onclick="PhotoMove(1);" width="17" height="17" border="0" align="absmiddle"></div>
    </div>
    Mais maintenant, j'ai un problème d'affichage. Les flèches n'aparaissent que s'il y a des photos à faire défiler. Donc, au début, la flèche vers la gauche ne doit pas être visible.
    J'ai donc ajouter une ligne dans les CSS permettant de masquer l'image (celle en commentaire). Je cache l'image et non le div pour ne pas détruire la mise en page.
    Pourtant, s'il n'y a pas de bordure sur le div, sa taille est réduite à 0 si je masque l'image.
    Pour essayer, enlevez les bordures, regardez le résultat et enlever les commentaires => tout est décalé vers la gauche alors que seule l'image est sensée disparaitre, pas le div.
    :
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  5. #5
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Citation Envoyé par giminik
    le display table n'est pas approprié dans ce cas là (sémantiquement parlant) puisqu'il ne s'agit pas à priori de données tabulaires...
    Dans ce cas, quelle est l'utilité du display:float puisque, pour afficher des données tabulaires, le plus logique et le plus simple est d'utiliser les balises <table> ?
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  6. #6
    Membre confirmé
    Avatar de giminik
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 303
    Points : 482
    Points
    482
    Par défaut
    Citation Envoyé par Ricou13
    pour afficher des données tabulaires, le plus logique et le plus simple est d'utiliser les balises <table> ?
    certes.
    mais dans ton cas, il ne s'agit pas de données tabulaires...
    et comme cette propriété n'est malheureusement pas prise en compte, (tu fais comme tu veux) autant utiliser float qui je le rappelle est utilisée pour rendre des blocs flottants.

  7. #7
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Citation Envoyé par giminik
    mais dans ton cas, il ne s'agit pas de données tabulaires...
    et comme cette propriété n'est malheureusement pas prise en compte, (tu fais comme tu veux) autant utiliser float qui je le rappelle est utilisée pour rendre des blocs flottants.
    On est d'accord. J'ai laissé tombé les display:table.
    c'était juste une question pour savoir dans quels cas on peut utiliser ces règles css. :-)

    Mon pb, maintenant, se limite à pouvoir faire disparaitre la flèche de gauche sans tout décaler.
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  8. #8
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    J'ai une piste interessante :

    Au lieu de jouer sur un je vais utiliserqui masque le div sans "l'enlever" du flux. Ainsi son emplacement reste tel quel.

    Cependant, je sais qu'en Javascript, il faut mettre hidden ou hide selon le navigateur. En est-il de même pour le CSS ?
    Dans la doc, on en parle pas.
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  9. #9
    Membre confirmé
    Avatar de giminik
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 303
    Points : 482
    Points
    482
    Par défaut
    ben c'est bien hidden.
    en javascript tu accèdes à cette propriété comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('idDeLaBalise').style.visibility='hidden';
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('idDeLaBalise').style.visibility='visible';
    en css c'est pareil :
    ou

  10. #10
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    C'est super.

    Problème résolu.

    Merci
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DisplayTag] Utilisation de <display:table>
    Par ironfalcon dans le forum Taglibs
    Réponses: 6
    Dernier message: 08/07/2008, 14h34
  2. utiliser un composant table
    Par kivoch dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/10/2005, 17h41
  3. [CSS] Utilisation de deux div avec float
    Par Ditch dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 06/10/2005, 15h48
  4. recherche utilisation d'une table
    Par xmanu dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2005, 09h09
  5. [Sybase] Utilisation indexes sur table Proxy
    Par MashiMaro dans le forum Sybase
    Réponses: 2
    Dernier message: 20/02/2004, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo