SlideShare a Scribd company logo
1 of 4
Download to read offline
Drag&drop met jQuery.                  In een html-website kan ook een bezoeker
de plaats bepalen van de inhoud van de pagina, en dichtklappen wat hij/zij
minder interessant vindt. Èn het geeft een apart cachet aan de website in zijn
geheel. Een online voorbeeld, waar nog andere opties werden toegevoegd dan
in deze oefening zal besproken worden, is de site http://www.bbc.co.uk
Als je je hier graag verder in verdiept, vind je heel wat info op de site van
jQuery zelf, en tal van online-tutorials.


1. Pagina opzetten (in HTML)
Start met een nieuwe pagina voor je site. Dit kan zeer eenvoudig en snel
gebeuren door een reeds bestaande pagina te bewaren onder een andere
naam, bvb. verzameling_jquery.html, of maak van deze pagina je homepage!
(index.html)
Maak vervolgens het content-gedeelte van de pagina leeg (de container, voor
de mensen die tijdens de les hebben meegewerkt, en dus niet de wrapper
waarin de hele layout vervat zit!)

2. Kolommen maken (met div's)
In dit contentgedeelte voorzie je 3 div's, met als klasse 'kolom'. Voor alle
duidelijkheid hieronder een voorbeeld:

<div class="container">
    <div class="kolom">              </div>
    <div class="kolom">              </div>
    <div class="kolom">              </div>
</div>

3. Widgets toevoegen
Er worden aparte div's voorzien voor elke widget, en voor elk stukje content
dus, om ze makkelijker te kunnen hanteren. Zet een aantal div's met klasse
'widget' (of een andere naam) in de drie kolommen.

<div class="container">
    <div class="kolom">
        <div class="widget">
            <h3>Widget 1</h3>
            <p> Inhoud voor de widget </p>
        </div>
        <div class="widget">
            <h3>Widget 2</h3>
            <p> Inhoud voor de widget </p>
        </div>
    </div>
    <div class="kolom">
        <div class="widget">
            <h3>Widget 2</h3>
    enz...

4. Content toevoegen
Vervolgens vul je elke widget op met inhoud, gerelateerd aan jouw onderwerp.
Zorg voor een mooi geheel en genoeg diversiteit in de soorten content voor
elke widget, zodat de pagina uitnodigt tot aanklikken, verslepen, ..

5. Stijl geven (met CSS)
In de css-file ga je vervolgens de kolommen en de widgets opmaken. Geef de
kolommen een goeie breedte en tussenruimte, zodat ze mooi in de pagina
passen.
(Je kan eventueel een nieuwe css-regel maken voor een container met een
andere id, om de layout van deze pagina te optimaliseren.)

.kolom {
   width: 275px;
   padding: 8px;
   margin-left: 25px;
   float: left;
}

Het is ook mogelijk om elke widget zijn widgetklasse én een uniek id te geven:
zo kan je in elke widget een layout voorzien die best past bij de inhoud ervan..

6. jQuery UI downloaden
Om de drag-&-drop (van de widgets) voor mekaar te krijgen, maken we gebruik
van Javascript. jQuery UI, een extensie van de jQuery bibliotheek, voegt extra
effecten en functionaliteit toe. Download het framework op http://jqueryui.com.
Voor deze oefening heb je enkel UI Core en Interactions nodig.

7. Scripts invoegen (in head van html - file)
Eénmaal de download klaar is, plaats je de .js files mee in de map 'js' van jouw
lokale rootfolder. Zo kunnen deze files op een correcte manier aangeroepen
worden in de head van de html-pagina.

<script src="js/jquery-1.3.2.min.js" type="text/javascript" ></script>
<script src="js/jquery-ui-1.7.2.custom.min.js" type="text/
javascript"></script>

8. Basisinteractie
Als alles voorzien is, kan het invoeren van de functionaliteit gebeuren, door
script te plaatsen onder de 2 script-tags. De drag-and-drop functionaliteit wordt
verkregen door het UI-Sortable gedrag van jQuery UI met volgende code:

<script type="text/javascript">
  $(document).ready(function(){
      $(".kolom").sortable({
          connectWith: '.kolom'
      });
  });
</script>

9. Debugging
Als je de pagina nu bekijkt in een browser, kan je de widgets al verplaatsen. Er
is nog wel een probleem: wanneer een kolom leeg geraakt, zullen de andere
kolommen verplaatsen. Dit kan je oplossen door de volgende code toe te
voegen aan de css-regels van de .kolom klasse:
min-height: 300px;
     height: 100%;

10. Verfijnen
Als er op een link geklikt wordt in de tekst van de widget, kan dit ook het
verslepen van de widget als ongewenst neveneffect hebben. Om dit op te
lossen, wordt een specifiek deel van de widget aangeduid waarmee je kan
slepen. Hier is gekozen voor de <h3> tag, die in elke widget terug te vinden is.
Voeg een regel code toe aan het javascript:

<script type="text/javascript">
    $(document).ready(function(){
        $(".kolom").sortable({
            connectWith: '.kolom',
            handle: 'h3'
        });
    });
</script>

11. Transparantie toevoegen
Om de widget gebruiksvriendelijker te maken, kan de transparantie aangepast
worden tijdens het verslepen. Zo ziet de gebruiker beter waar hij/zij de widget
zal plaatsen. Voeg hiervoor nog een optie toe, onder de regel code van zonet.
Vergeet niet van een komma te zetten achter de voorgaande optie voor je deze
regel toevoegt!

               opacity: 0.2


12. Meer functionaliteit
Nog een andere optie is dat de widget ook dichtgeklapt kan worden, om meer
ruimte te geven aan de content die de bezoeker verkiest. Hier maken we
gebruik van code uit de standaard jQuery bibliotheek ipv uit de jQuery UI.

>> element toevoegen
Eerst een knop voorzien waarop geklikt kan worden om de widget te laten
dichtklappen. Dit kan eenvoudigweg door op run-time een div te koppelen aan
elke widget, waarvan het uitzicht verder bepaald kan worden via css.

<script type="text/javascript">
  $(document).ready(function(){
      $(".kolom").sortable({
          connectWith: '.kolom',
          handle: 'h3',
          opacity: 0.2,
      });

      $(".widget").append('<div class="close"></div>');
  });
</script>
CSS:
.widget .close {
    width: 16px;
    height: 16px;
    background-color:#FFF;
    position: absolute;
    top: 3px;
    right: 8px;
    cursor: pointer;
    }

13. Inklappen..
De div met klasse 'close' krijgt een gedrag toegewezen, dat het script laat
weten dat de widget in hoogte beperkt moet worden wanneer men op de div
klikt. Om het openen van de widget nadien gemakkelijker te maken, wordt
met de data functie van jQuery de status (open/dicht) en de originele hoogte
van de widget opgeslagen.

<script type="text/javascript">
  $(document).ready(function(){
     $(".kolom").sortable({
       connectWith: '.kolom',
       handle: 'h3',
       opacity: 0.2
     });

    $(".widget").append('<div class="close"></div>');

    $(".close").click(function(){
      if ($(this).parent().data("collapsed")=="yes"){

         // paneel is al dichtgeklapt

       } else {
         $(this).parent().data("height",$(this).parent().height());
         $(this).parent().data("collapsed","yes");
         $(this).parent().animate({height:30});
       }
     });
  });
</script>

14. ..en uitklappen die handel!
Hiervoor voeg je tot slot de volgende code toe, op de plaats waar nu staat:
         // paneel is al dichtgeklapt

$(this).parent().data("collapsed","no");
$(this).parent().animate({height:$(this).parent().data("height")});

15. Testen in de courante browsers!
Het Javascript waarvoor jQuery zorgt, werkt in alle browsers, maar css
regels en layout-elementen in de html-pagina kunnen voor de nodige
problemen zorgen .. Kijk ook hoe de pagina er uitziet zonder javascript: dit
kan immers door de gebruiker uitgeschakeld worden..

More Related Content

Similar to Drag and-drop met-j_query

Magento cursus: theme opzetten & beheren
Magento cursus: theme opzetten & beherenMagento cursus: theme opzetten & beheren
Magento cursus: theme opzetten & beheren
Michel Doens
 
Drupal Views Cck Hans Rossel
Drupal Views Cck Hans RosselDrupal Views Cck Hans Rossel
Drupal Views Cck Hans Rossel
Hans Rossel
 
Css Positionering
Css PositioneringCss Positionering
Css Positionering
ohmdesign
 
Dw Wireframe In Layoutview
Dw Wireframe In LayoutviewDw Wireframe In Layoutview
Dw Wireframe In Layoutview
culturelestudies
 
Html5 jeugdwerknet
Html5 jeugdwerknetHtml5 jeugdwerknet
Html5 jeugdwerknet
Hans Rossel
 

Similar to Drag and-drop met-j_query (20)

Refresher HTML(5) and CSS(3) - CC FE & UX
Refresher HTML(5) and CSS(3) - CC FE & UXRefresher HTML(5) and CSS(3) - CC FE & UX
Refresher HTML(5) and CSS(3) - CC FE & UX
 
Magento cursus: theme opzetten & beheren
Magento cursus: theme opzetten & beherenMagento cursus: theme opzetten & beheren
Magento cursus: theme opzetten & beheren
 
R2H ImageManager en slim omgaan met afbeeldingen in Joomla!
R2H ImageManager en slim omgaan met afbeeldingen in Joomla!R2H ImageManager en slim omgaan met afbeeldingen in Joomla!
R2H ImageManager en slim omgaan met afbeeldingen in Joomla!
 
Drupal Views Cck Hans Rossel
Drupal Views Cck Hans RosselDrupal Views Cck Hans Rossel
Drupal Views Cck Hans Rossel
 
1.7 terugblik module 1
1.7 terugblik module 11.7 terugblik module 1
1.7 terugblik module 1
 
Css Positionering
Css PositioneringCss Positionering
Css Positionering
 
Css positioning
Css positioningCss positioning
Css positioning
 
UiTwidgets build on Drupal7 by CultuurNet
UiTwidgets build on Drupal7 by CultuurNetUiTwidgets build on Drupal7 by CultuurNet
UiTwidgets build on Drupal7 by CultuurNet
 
Dw Wireframe In Layoutview
Dw Wireframe In LayoutviewDw Wireframe In Layoutview
Dw Wireframe In Layoutview
 
1.4 html css basis 3
1.4 html css basis 31.4 html css basis 3
1.4 html css basis 3
 
HTML5 Overview
HTML5 OverviewHTML5 Overview
HTML5 Overview
 
Html5 jeugdwerknet
Html5 jeugdwerknetHtml5 jeugdwerknet
Html5 jeugdwerknet
 
Presentatie WordPress Theme Frameworks WordCamp NL 2010
Presentatie WordPress Theme Frameworks WordCamp NL 2010Presentatie WordPress Theme Frameworks WordCamp NL 2010
Presentatie WordPress Theme Frameworks WordCamp NL 2010
 
Jquery presentatie
Jquery presentatieJquery presentatie
Jquery presentatie
 
Jquery presentatie
Jquery presentatieJquery presentatie
Jquery presentatie
 
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo BruggeHTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
HTML 5, ASP.NET MVC & Windows Azure sessie voor Ivo Brugge
 
Templates maken met Helix 3 framework - Presentatie Eric Tiggeler Joomladage...
Templates maken met Helix 3 framework  - Presentatie Eric Tiggeler Joomladage...Templates maken met Helix 3 framework  - Presentatie Eric Tiggeler Joomladage...
Templates maken met Helix 3 framework - Presentatie Eric Tiggeler Joomladage...
 
Presentatie webrichtlijnen
Presentatie webrichtlijnenPresentatie webrichtlijnen
Presentatie webrichtlijnen
 
Online usability - les 3 introductie WordPress - thema's, widgets en plugins
Online usability - les 3 introductie WordPress - thema's, widgets en pluginsOnline usability - les 3 introductie WordPress - thema's, widgets en plugins
Online usability - les 3 introductie WordPress - thema's, widgets en plugins
 
4.2 bootstrap 2
4.2 bootstrap 24.2 bootstrap 2
4.2 bootstrap 2
 

Drag and-drop met-j_query

  • 1. Drag&drop met jQuery. In een html-website kan ook een bezoeker de plaats bepalen van de inhoud van de pagina, en dichtklappen wat hij/zij minder interessant vindt. Èn het geeft een apart cachet aan de website in zijn geheel. Een online voorbeeld, waar nog andere opties werden toegevoegd dan in deze oefening zal besproken worden, is de site http://www.bbc.co.uk Als je je hier graag verder in verdiept, vind je heel wat info op de site van jQuery zelf, en tal van online-tutorials. 1. Pagina opzetten (in HTML) Start met een nieuwe pagina voor je site. Dit kan zeer eenvoudig en snel gebeuren door een reeds bestaande pagina te bewaren onder een andere naam, bvb. verzameling_jquery.html, of maak van deze pagina je homepage! (index.html) Maak vervolgens het content-gedeelte van de pagina leeg (de container, voor de mensen die tijdens de les hebben meegewerkt, en dus niet de wrapper waarin de hele layout vervat zit!) 2. Kolommen maken (met div's) In dit contentgedeelte voorzie je 3 div's, met als klasse 'kolom'. Voor alle duidelijkheid hieronder een voorbeeld: <div class="container"> <div class="kolom"> </div> <div class="kolom"> </div> <div class="kolom"> </div> </div> 3. Widgets toevoegen Er worden aparte div's voorzien voor elke widget, en voor elk stukje content dus, om ze makkelijker te kunnen hanteren. Zet een aantal div's met klasse 'widget' (of een andere naam) in de drie kolommen. <div class="container"> <div class="kolom"> <div class="widget"> <h3>Widget 1</h3> <p> Inhoud voor de widget </p> </div> <div class="widget"> <h3>Widget 2</h3> <p> Inhoud voor de widget </p> </div> </div> <div class="kolom"> <div class="widget"> <h3>Widget 2</h3> enz... 4. Content toevoegen Vervolgens vul je elke widget op met inhoud, gerelateerd aan jouw onderwerp. Zorg voor een mooi geheel en genoeg diversiteit in de soorten content voor
  • 2. elke widget, zodat de pagina uitnodigt tot aanklikken, verslepen, .. 5. Stijl geven (met CSS) In de css-file ga je vervolgens de kolommen en de widgets opmaken. Geef de kolommen een goeie breedte en tussenruimte, zodat ze mooi in de pagina passen. (Je kan eventueel een nieuwe css-regel maken voor een container met een andere id, om de layout van deze pagina te optimaliseren.) .kolom { width: 275px; padding: 8px; margin-left: 25px; float: left; } Het is ook mogelijk om elke widget zijn widgetklasse én een uniek id te geven: zo kan je in elke widget een layout voorzien die best past bij de inhoud ervan.. 6. jQuery UI downloaden Om de drag-&-drop (van de widgets) voor mekaar te krijgen, maken we gebruik van Javascript. jQuery UI, een extensie van de jQuery bibliotheek, voegt extra effecten en functionaliteit toe. Download het framework op http://jqueryui.com. Voor deze oefening heb je enkel UI Core en Interactions nodig. 7. Scripts invoegen (in head van html - file) Eénmaal de download klaar is, plaats je de .js files mee in de map 'js' van jouw lokale rootfolder. Zo kunnen deze files op een correcte manier aangeroepen worden in de head van de html-pagina. <script src="js/jquery-1.3.2.min.js" type="text/javascript" ></script> <script src="js/jquery-ui-1.7.2.custom.min.js" type="text/ javascript"></script> 8. Basisinteractie Als alles voorzien is, kan het invoeren van de functionaliteit gebeuren, door script te plaatsen onder de 2 script-tags. De drag-and-drop functionaliteit wordt verkregen door het UI-Sortable gedrag van jQuery UI met volgende code: <script type="text/javascript"> $(document).ready(function(){ $(".kolom").sortable({ connectWith: '.kolom' }); }); </script> 9. Debugging Als je de pagina nu bekijkt in een browser, kan je de widgets al verplaatsen. Er is nog wel een probleem: wanneer een kolom leeg geraakt, zullen de andere kolommen verplaatsen. Dit kan je oplossen door de volgende code toe te voegen aan de css-regels van de .kolom klasse:
  • 3. min-height: 300px; height: 100%; 10. Verfijnen Als er op een link geklikt wordt in de tekst van de widget, kan dit ook het verslepen van de widget als ongewenst neveneffect hebben. Om dit op te lossen, wordt een specifiek deel van de widget aangeduid waarmee je kan slepen. Hier is gekozen voor de <h3> tag, die in elke widget terug te vinden is. Voeg een regel code toe aan het javascript: <script type="text/javascript"> $(document).ready(function(){ $(".kolom").sortable({ connectWith: '.kolom', handle: 'h3' }); }); </script> 11. Transparantie toevoegen Om de widget gebruiksvriendelijker te maken, kan de transparantie aangepast worden tijdens het verslepen. Zo ziet de gebruiker beter waar hij/zij de widget zal plaatsen. Voeg hiervoor nog een optie toe, onder de regel code van zonet. Vergeet niet van een komma te zetten achter de voorgaande optie voor je deze regel toevoegt! opacity: 0.2 12. Meer functionaliteit Nog een andere optie is dat de widget ook dichtgeklapt kan worden, om meer ruimte te geven aan de content die de bezoeker verkiest. Hier maken we gebruik van code uit de standaard jQuery bibliotheek ipv uit de jQuery UI. >> element toevoegen Eerst een knop voorzien waarop geklikt kan worden om de widget te laten dichtklappen. Dit kan eenvoudigweg door op run-time een div te koppelen aan elke widget, waarvan het uitzicht verder bepaald kan worden via css. <script type="text/javascript"> $(document).ready(function(){ $(".kolom").sortable({ connectWith: '.kolom', handle: 'h3', opacity: 0.2, }); $(".widget").append('<div class="close"></div>'); }); </script>
  • 4. CSS: .widget .close { width: 16px; height: 16px; background-color:#FFF; position: absolute; top: 3px; right: 8px; cursor: pointer; } 13. Inklappen.. De div met klasse 'close' krijgt een gedrag toegewezen, dat het script laat weten dat de widget in hoogte beperkt moet worden wanneer men op de div klikt. Om het openen van de widget nadien gemakkelijker te maken, wordt met de data functie van jQuery de status (open/dicht) en de originele hoogte van de widget opgeslagen. <script type="text/javascript"> $(document).ready(function(){ $(".kolom").sortable({ connectWith: '.kolom', handle: 'h3', opacity: 0.2 }); $(".widget").append('<div class="close"></div>'); $(".close").click(function(){ if ($(this).parent().data("collapsed")=="yes"){ // paneel is al dichtgeklapt } else { $(this).parent().data("height",$(this).parent().height()); $(this).parent().data("collapsed","yes"); $(this).parent().animate({height:30}); } }); }); </script> 14. ..en uitklappen die handel! Hiervoor voeg je tot slot de volgende code toe, op de plaats waar nu staat: // paneel is al dichtgeklapt $(this).parent().data("collapsed","no"); $(this).parent().animate({height:$(this).parent().data("height")}); 15. Testen in de courante browsers! Het Javascript waarvoor jQuery zorgt, werkt in alle browsers, maar css regels en layout-elementen in de html-pagina kunnen voor de nodige problemen zorgen .. Kijk ook hoe de pagina er uitziet zonder javascript: dit kan immers door de gebruiker uitgeschakeld worden..