Masquer/afficher un bloc dans une page

Eléphanteau du PHP | 49 Messages

15 mai 2007, 10:23

Bonjour,

Débutant en JS j'aimerais savoir comment il était possible de masquer/afficher une partie du contenu d'une page.
Je m'explique :
J'ai une pages comportant 4 blocs. J'aimerais au chargement de la page n'afficher que le premier et en cliquant sur un lien afficher les trois autres en dessus du premier tout simplement.
C'est sûrement très basique pour vous je pense.

Exemple en image (image texte XD) :

Code : Tout sélectionner

blablablablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablablablabla > dérouler/masquer blablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablabla blablablablablablablablablablablablablablablabla
Voilà j'espère que vous pourrez m'aider sur ce coup merci.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

15 mai 2007, 10:30

tu peux mettre le contenu à manipuler dans un div, lui donner un id et agir sur sa proriété de style "visibility": la mettre à "visible" l'affiche et à "hidden" le cache.

en javascript:

Code : Tout sélectionner

document.getElementById("id du div").style.visibility = "visible"; //l'affiche
ou

Code : Tout sélectionner

document.getElementById("id du div").style.visibility = "hidden"; //le cache
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 49 Messages

15 mai 2007, 10:34

Et je met ça comment dans mon lien ?
Dans un un onclick ou bien faut il s'y prendre autrement ?
Je met un <a onclick= ...> ou non.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 mai 2007, 10:41

Au choix... dans un lien, il te suffit de préfixer par "javascript:" pour que le navigateur ne fasse pas une redirection, mais tu peux tout aussi bien faire ça lors d'un onClick sur un élément de ta page :
<a href="javascript:document.getElementById('id du div').style.visibility = 'visible';">Afficher</a>
Tu peux aussi faire appel à une fonction javascript pour tester si le div est visible ou non pour l'afficher ou le masquer avec un seul lien :
<a href="javascript:maFonction();">Afficher/Masquer</a>

<script language="javascript">
function maFonction() {
  if (document.getElementById('id du div').style.visibility == 'visible') { // si le div est visible
    document.getElementById('id du div').style.visibility = 'hidden'; // on le masque
  }
  else { // sinon
    document.getElementById('id du div').style.visibility = 'visible'; // on l'affiche
  }
}
</script>
Enfin, si tu ne veux pas laisser de "trou" dans ton code puisque l'attribut "visibility:hidden" ne fait que cacher l'élément sans le retirer, tu peux également utiliser l'attribut "display" avec les valeur "none" pour le cacher, ou "block" / "inline" pour l'afficher :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 49 Messages

15 mai 2007, 10:49

Merci.

Alors deux choses :
- comment dois je faire pour le mettre caché par defaut.
- et quelle est la syntaxe de display et block car effectivement ça me fait une belle page blanche avec le hidden et si je voulais masquer c'était justement pour que la page ait une taille acceptable au départ.

Code : Tout sélectionner

document.getElementById('mask').style.display == 'block'
est ce comme ceci ?

Merci à vous.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

15 mai 2007, 11:06

Attention (rappel)
  • == est utilisé comme symbole de compraison d'égalité dans un test telque "if"
    = est utilisé comme symbole d'affectaion d'une valeur à une variable comme A=1 (A reçoit la valeur 1)
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 49 Messages

15 mai 2007, 11:09

Oula exact == est l'opérateur de comparaison et = celui d'affectation.
Mais je n'ai pas écrit cela dans mon code ; )

Pourrais tu me dire comment puis je mettre ma div en caché par défaut ?

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

15 mai 2007, 11:11

en posant un style en dur sur la balise :wink:
Exemple:

Code : Tout sélectionner

<div style="display:none"></div>
style que tu peut modifier dynamiquement par javascript suite à des événements (click ...)
Tu vois le principe est simple: tu pose un style et puis tu programmes javascript pour le modifier

1°temps: style="display:none" en HTML
2°temps:

Code : Tout sélectionner

document.getElementById('...').style.display = 'none'; //ou 'block' ou 'inline' selon ce que tu veux faire
Modifié en dernier par sadeq le 15 mai 2007, 11:16, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 49 Messages

15 mai 2007, 11:15

Bien le merci à vous.
Ca va me permettre de faire quelque chose de plus aboutie :)

Invité
Invité n'ayant pas de compte PHPfrance

15 mai 2007, 14:13

Quelle est la différence entre ces deux attributs. Pour le moment j'utilise inline c'est nikel.
Que fait block?

Eléphant du PHP | 445 Messages

15 mai 2007, 15:06

Sur alsacreations, ils en parlent un peu :

http://blog.alsacreations.com/2004/06/0 ... connaissez

Mais en gros, l'effet est le même apparemment ^^
LLDC
Ulti