Visualizzazione dei risultati da 1 a 1 su 1
  1. #1

    drag and drop in jquery: problemi col posizionamento

    salve,
    sto da poco studiando il drag n drop con jquery ed ho subito riscontrato un malfunzionamento del mio programma che non riesco a risolvere:
    - creo due box in html uno pi� piccolo che chiamo 'oggetto' e uno pi� grande che chiamo 'contenitore'.
    - li posiziono sullo schermo tramite 'top' e 'left' in css imponendo 'position:absolute'
    - creo il file js con le istruzioni jquery per gestire sia il drag che il drop
    - quando per� provo a spostare 'oggetto' dentro 'contenitore' , dopo averlo lasciato col mouse, esso si posiziona in un posto che decide lui! stessa cosa accade quando lo esco dal contenitore.
    - tutto ci� non accade e funziona quando imposto i box (<div>) con 'position:relative'
    Come mai? come posso risolvere? Se lascio i box a 'position:relative' come li posiziono sullo schermo?
    allego i sorgenti:
    CSS (oggetti.css):
    codice:
    #oggetto
    {
    position:absolute !important;
    height:100px;
    width:100px;
    left:20px;
    top:200px;
    background-color: aqua !important;
    }
    #oggetto:hover 
    {
    cursor:move
    }
    
    #contenitore
    {
    position:absolute !important;
    height:300px;
    width:300px;
    left:300px;
    top:100px;
    background-color: #b2b3c5 !important;
    
    }
    
    .shadow
    {
    -webkit-box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.77);
    -moz-box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.77);
    box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.77);
    }
    .base
    {
    background-color: yellow;
    height: 605px;
    width: 100%;
    } 


    JSCRIPT (myfunc.js)
    codice:
    $("#oggetto")
    .draggable({
    appendTo: ".base", //quando creato viene appeso a .base
    containment: ".base", //non puo' essere spostato fuori da .base
    opacity: 0.35, //quando inizia il drag l'oggetto diventa opaco
    refreshPositions: true,
    start: function() 
    {
    $(this).addClass("shadow");
    $(this).css({position:'absolute'});
    },
    stop: function() {$(this).removeClass("shadow");}
    
    })
    .resizable({
    aspectRatio: false
    });
    $("#contenitore")
    .droppable({
    drop: function( event, ui ) {
    var dropped = ui.draggable;
    var droppedOn = $(this);
    $(dropped).detach().appendTo(droppedOn);
    var zi=$(droppedOn).css("z-index");
    zi++;
    $(dropped).css("z-index",zi);
    
    },
    out: function( event, ui ) {
    var dropped = ui.draggable;
    var droppedOn = $(this);
    $(dropped).detach().appendTo($('.base'));
    } 
    }); 


    HTML (index.html)
    codice:
    <!DOCTYPE HTML>
    <html lang="it-IT">
    
    <head>
    <meta charset="utf-8">
    <title>FORMAKER - FORM MAKER 2017</title>
    
    <link href="css/oggetti.css" rel="stylesheet" type="text/css"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    
    </head>
    <body> 
    <div class='base' id='pannello-base'><p>pannello-base</p>
    <div class="ui-widget-content " id='contenitore'><p>contenitore</p></div>
    <div class="ui-widget-content " id='oggetto'><p>oggetto</p></div> 
    
    
    </div> 
    </body>
    
    
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
    <script type="text/javascript" src="js/myfunc.js"></script>
    </html> 


    Grazie. Ciao
    Ultima modifica di ottaviane; 10-08-2017 a 17:18

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.