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

JavaScript Discussion :

Ouverture/fermeture progressive d'un div (par agrandissement)


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Ouverture/fermeture progressive d'un div (par agrandissement)
    Bonjour à tous,

    Je suis débutant total en JS donc excusez moi si je suis à coté de la plaque, mais je cherche une fonction qui parait toute conne mais que je n'arrive pas à trouver/écrire
    Je cherche à faire un classique on/off sur un div, mais en le faisant progressivement, avec le cadre qui s agrandit, se referme.

    J'ai presque réussi à l'écrire, mais
    1 - elle ne fonctionne pas au premier clic, mais au 2 ou 3ème
    2 - elle n'est pas aussi générique que je le souhaiterai
    3 - elle ne fonctionne que sous Firefox

    Je suis donc à la recherche d'une fonction/tuto pouvant faire de manière propre et sans danger ceci : http://www.acadis.org/lab/div.html

    Savez vous où je peux trouver ça ?
    Merci d'avance pour vos lumières

  2. #2
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Bonjour,

    Tu peux jeter un coup d'oeil vers les librairies javascript comme scriptaculo.us, yahoo UI... et certainement bien d'autres encore.

    Si la prise en main n'est pas forcément évidente cela t'évitera de réinventer la roue et, la plupart du temps, de t'affranchir des problèmes de compatibilité.

    @+

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Tu peux aussi downloader tout le net si tu veux ...

    pourquoi s'encombrer d'une usine à gaz quand il suffit de modifier un tout petit peu ton 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Nouvelle page 1</title>
     
    <script type='text/javascript'>
     
    var y = 1;
    var step = 5;
    var down = true;
    var minstep=step;
     
     
    function smooth_on_off(p_id, hmax){
     
      obj=document.getElementById(p_id);
     
      if(y>hmax&&down){step=-step;
                    down=false;
                    return false;}
      if(y<minstep&&!down){step=-step;
                    down=true;
                    y=1;
                    return false;}
     
      y = y+step;
     
      obj.style.height = y + 'px';
     
      t=setTimeout(function(){smooth_on_off(obj.id, hmax)},10);
    }
    </script>
    <style type='text/css'>
    div.main{
      width: 700px;
     
      background: #CCEEDD;
      font-weight: bold;
    }
     
    div.title{
      width: 700px;
      height: 30px;
      background: #CCEEDD;
      font-weight: bold;
      cursor: pointer;
    }
     
    div.content{
      width: 700px;
      height: 1px;
      background: #FFEEFF;
      display: block;
      overflow: hidden;
      font-weight: normal;
    }
    </style>
    </head>
     
    <body onload="document.getElementById('command').focus()">
     
    <div class="main">
     
      <div class="title" onclick="smooth_on_off('flop', 200);" id='command'>
    	Un petit texte
      </div>
     
      <div id="flop" class="content">
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla placerat. Maecenas cursus, enim at laoreet laoreet, lacus quam placerat quam, nec blandit urna arcu quis turpis. Nunc sit amet orci. Aliquam id mi. Maecenas massa leo, interdum faucibus, aliquam nec, lacinia et, diam. Phasellus mollis fermentum enim. Aenean ut enim et est vulputate bibendum. Integer tellus nisi, nonummy et, feugiat at, molestie non, leo. Praesent eu sem. Quisque tincidunt tellus quis libero. Maecenas justo. Nulla gravida, turpis eget facilisis tempor, ipsum metus sollicitudin urna, eget elementum eros diam ut dui. Sed luctus diam quis velit. Vestibulum fringilla lacus sed nisl. Pellentesque hendrerit placerat nisl. Cras vitae risus. Duis pulvinar, orci nec ultricies laoreet, magna est dictum nunc, quis pulvinar est leo quis ipsum. Ut mauris mauris, bibendum eu, consequat et, luctus non, massa. Phasellus felis. Quisque felis.
     
    Suspendisse orci nisi, rutrum eu, vestibulum non, aliquet a, est. Vivamus elit. Vestibulum ultricies urna in odio. Duis laoreet. Proin porttitor purus et dolor. Suspendisse sed tellus quis nulla pulvinar vehicula. Praesent tincidunt nisi ut augue. Aliquam semper risus id risus. Pellentesque elementum feugiat nisl. In hac habitasse platea dictumst. Vivamus mattis. Donec sodales orci. Donec ut velit. Phasellus aliquet, felis non ultricies accumsan, lacus eros iaculis dui, ac fringilla sem dolor vitae nisi. Ut eu arcu. Proin tellus.
     
      </div>
     
    </div>
     
     
     
    </body>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Et pour remédier aux problèmes des clics multiple entrainant un phénomène de yoyo

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Nouvelle page 1</title>
     
    <script type='text/javascript'>
     
    var y = 1;
    var step = 5;
    var down = true;
    var minstep=step;
    var running=false;
    var t
     
     
    function smooth_on_off(p_id, hmax){
      running=true;
      obj=document.getElementById(p_id);
     
      if(y>hmax&&down){step=-step;
                    down=false;
                    running=false;
                    clearInterval(t);
                    return false;}
      if(y<minstep&&!down){step=-step;
                    down=true;
                    running=false;
                    y=1;
                    clearInterval(t);
                    return false;}
     
      y = y+step;
     
      obj.style.height = y + 'px';
    }
     
    function deroule(p_id,hmax){
    if (running) {return false;}
    t=setInterval(function(){smooth_on_off(p_id,hmax)},1)
     
    }
    </script>
    <style type='text/css'>
    div.main{
      width: 700px;
     
      background: #CCEEDD;
      font-weight: bold;
    }
     
    div.title{
      width: 700px;
      height: 30px;
      background: #CCEEDD;
      font-weight: bold;
      cursor: pointer;
    }
     
    div.content{
      width: 700px;
      height: 1px;
      background: #FFEEFF;
      display: block;
      overflow: hidden;
      font-weight: normal;
    }
    </style>
    </head>
     
    <body onload="document.getElementById('command').focus()">
     
    <div class="main">
     
      <div class="title" onclick="deroule('flop', 200);" id='command'>
    	Un petit texte
      </div>
     
      <div id="flop" class="content">
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla placerat. Maecenas cursus, enim at laoreet laoreet, lacus quam placerat quam, nec blandit urna arcu quis turpis. Nunc sit amet orci. Aliquam id mi. Maecenas massa leo, interdum faucibus, aliquam nec, lacinia et, diam. Phasellus mollis fermentum enim. Aenean ut enim et est vulputate bibendum. Integer tellus nisi, nonummy et, feugiat at, molestie non, leo. Praesent eu sem. Quisque tincidunt tellus quis libero. Maecenas justo. Nulla gravida, turpis eget facilisis tempor, ipsum metus sollicitudin urna, eget elementum eros diam ut dui. Sed luctus diam quis velit. Vestibulum fringilla lacus sed nisl. Pellentesque hendrerit placerat nisl. Cras vitae risus. Duis pulvinar, orci nec ultricies laoreet, magna est dictum nunc, quis pulvinar est leo quis ipsum. Ut mauris mauris, bibendum eu, consequat et, luctus non, massa. Phasellus felis. Quisque felis.
     
    Suspendisse orci nisi, rutrum eu, vestibulum non, aliquet a, est. Vivamus elit. Vestibulum ultricies urna in odio. Duis laoreet. Proin porttitor purus et dolor. Suspendisse sed tellus quis nulla pulvinar vehicula. Praesent tincidunt nisi ut augue. Aliquam semper risus id risus. Pellentesque elementum feugiat nisl. In hac habitasse platea dictumst. Vivamus mattis. Donec sodales orci. Donec ut velit. Phasellus aliquet, felis non ultricies accumsan, lacus eros iaculis dui, ac fringilla sem dolor vitae nisi. Ut eu arcu. Proin tellus.
     
      </div>
     
    </div>
     
     
     
    </body>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup ça marche vraiment bien

    le problème d'une lib telle que Scriptaculous c'est que je risque de faire appel a un monstre pour pas grand chose, de plus je travaille sur un site déjà très complexe (pas loin de faire le café) avec sa propre API et tout, donc je veux éviter d'inclure trop de lib externes

    En tout cas là c'est léger et ca marche même sous IE

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour, suite à la lecture de ce post, j'ai voulu intégrer le code de SpaceFrog

    Le code fonctionne bien, je l'ai intégré sur un formulaire, mais lorsque je valide celui-ci, la page ne se charge plus complettement.

    Quelqu'un auait une idée?

    Merci de votre aide

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    sans voir ton code ça parait difficile de se faire une idée ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    la page en question
    Le script s'arrête dès la fonction "while" à la ligne 265

    Le lien vers le script en fonction
    Lezartkayks

    le probleme est le mm sur IE et firefox (les autres je ne l'ai ai pas essayé)

    Je me demandais si des fonctions JS pouvais se contredir?

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    à première vue je ne vois pas en quoi la boucle while pourrait empêcher la focntion javascript de fonctionnner
    surtout que la boucle while en question est en php et est interprété coté serveur ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Points : 59
    Points
    59
    Par défaut Taille automatique du div
    Bonjour à tous,

    Je remonte cette discussion car je trouve ce script très sympa. C'est presque ce qu'il me faut, j'aurais simplement voulu savoir comment faire pour que le div s'ajuste automatiquement à la taille de son contenu (c'est pour un contenu dynamique).

    Merci d'avance.

    Edit : Désolé, je n'avais pas remarqué que cette discussion était résolue. Je viens d'en créer une nouvelle

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Points : 430
    Points
    430
    Par défaut
    C'est bizarre que ce bout de code ne soit pas dans les contributions, il pourrait aider beaucoup de gens qui veulent faire ça.

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

Discussions similaires

  1. Agrandissement de la longueur du DIV par nombre de px prédéfini
    Par koKoTis dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 14/12/2013, 12h21
  2. La fermeture d'un div par escape
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/08/2012, 15h52
  3. Ouverture/fermeture progressive d'un div (par agrandissement) Suite
    Par Benzz dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 19/06/2008, 08h49
  4. [W3C] Est-il possible d'afficher un div par dessus une applet ?
    Par drinkmilk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/02/2005, 10h22
  5. Remplacer le contenu d'un div par un autre
    Par prgasp77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/10/2004, 23h48

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