11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je suis le plus que débutant en JQuery qui aimerait déclencher une suite de fonctions. Je m'explique :

J'ai une div que l'on peut bouger horizontalement. J'aimerais que lorsqu'elle arrive à certaines positions, elle fasse apparaître un bouton (qui lui fait apparaître une autre div). J'arrive à faire bouger ma div horizontalement, j'arrive à déclencher la fonction du bouton, mais je n'arrive pas à dire que si la div se trouve à cette position, le bouton apparaît, sinon il est caché. Pourriez-vous m'aider s'il-vous-plaît ? Je vous met le code ici ainsi qu'un lien codepen. Je vous en remercie d'avance et passez une bonne journée.

http://codepen.io/anon/pen/Lxtuy

<head>
  <meta charset="utf-8">
  <title>jQuery UI Effects - Show Demo</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css">
  </head>
<body>
 
<div class="toggler">
  <div id="effect" class="ui-widget-content ui-corner-all">
    <h3 class="ui-widget-header ui-corner-all">Show</h3>
    <p>
      Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi.
    </p>
  </div>
</div>
 
<select name="effects" id="effectTypes">
  <option value="blind">Blind</option>
  <option value="bounce">Bounce</option>
  <option value="clip">Clip</option>
  <option value="drop">Drop</option>
  <option value="explode">Explode</option>
  <option value="fold">Fold</option>
  <option value="highlight">Highlight</option>
  <option value="puff">Puff</option>
  <option value="pulsate">Pulsate</option>
  <option value="scale">Scale</option>
  <option value="shake">Shake</option>
  <option value="size">Size</option>
  <option value="slide">Slide</option>
</select>
 
<button id="button" class="ui-state-default ui-corner-all">Run Effect</button>
 <div id="draggable2" class="draggable ui-widget-content">
  <p>I can be dragged only horizontally</p>
</div>
 
</body>

.toggler { width: 500px; height: 200px; }
  #button { padding: .5em 1em; text-decoration: none; }
  #effect { width: 240px; height: 135px; padding: 0.4em; position: relative; }
  #effect h3 { margin: 0; padding: 0.4em; text-align: center; }
#draggable2 { margin-bottom:20px; }
#draggable2 { cursor: e-resize; }
.draggable { width: 90px; height: 90px; padding: 0.5em; float: left; margin: 50px 10px 10px 0; }

$(function() {
  
    // run the currently selected effect
    function runEffect() {
      // get effect type from
      var selectedEffect = $( "#effectTypes" ).val();
 
      // most effect types need no options passed by default
      var options = {};
      // some effects have required parameters
    
      if ( selectedEffect === "scale" ) {
        options = { percent: 100 };
      } else if ( selectedEffect === "size" ) {
        options = { to: { width: 280, height: 185 } };
      }
 
      // run the effect
      $( "#effect" ).show( selectedEffect, options, 500, callback );
    };
       $( "#draggable2" ).draggable({ axis: "x" });
    //callback function to bring a hidden box back
    function callback() {
      setTimeout(function() {
        $( "#effect:visible" ).removeAttr( "style" ).fadeOut();
      }, 1000 );
    };
 
    // set effect from select menu value
    $( "#button" ).click(function() {
      runEffect();
    });
 
    $( "#effect" ).hide();
  });
Bonjour.

Je te conseille la lecture de la doc de l'event drag de la fonction draggable de jQueryUI :
http://api.jqueryui.com/draggable/#event-drag

Tu vois que tu peux utiliser le paramètre de retour ui qui te permet de déterminer la position en x et en y de ton élément déplacé.

Ce qui donne un truc du genre :
http://codepen.io/anon/pen/mzvAH
Je te laisse bien sûr retravailler le CSS en conséquence Smiley cligne

Edit: correction mauvais lien
Modifié par SolidSnake (29 Aug 2014 - 08:10)