login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Fotovenster vergroten en verkleinen door klikken op een knop. (Opgelost)

Offline Jorisvh - 15/04/2015 21:56
Avatar van JorisvhLid Zie: http://www.idee...rprogramma

Zoals u ziet worden de persartikels nu veel te groot weergegven als ik ze gewoon wil tonen.

Ik wil ze kleiner weergeven zoals de 1ste. Als u op de eerste afbeelding klikt wordt een venster geopend met die afbeelding.
Nu is het de bedoeling om het venster te verkleinen of te vergroten door te klikken op de bovenste afbeeldingen van een vergrootglas.
Ik wil het zelfde effect verkrijgen zoals ik nu in Firefox op Ctrl+plus-teken druk.

Kan mij iem. hiervoor de javaScript code bezorgen?

2 antwoorden

Gesponsorde links
Offline Thomas - 16/04/2015 21:19 (laatste wijziging 19/04/2015 11:16)
Avatar van Thomas Moderator Wauw, dat was moeilijker dan ik dacht.

Ik heb de volgende oplossing bedacht met jQuery.

Het idee is als volgt:
- je plaatst initieel de fullblown afbeelding in een div
- vervolgens gebruik je JavaScript om:
- de bron en afmetingen te bepalen
- deze div leeg te maken
- de afbeelding in de achtergrond van deze div te plaatsen
- met behulp van de oorspronkelijke afmetingen en een uitgangs-breedte de div te resizen

De afbeelding wordt dan uitgevuld over de achtergrond van de div door middel van de background-size css-property (100%).

En vervolgens heb je twee knoppen om de div groter en kleiner te maken. In de JavaScript zitten geen afbeelding-specifieke zaken, dus deze zou je naar een .js bestandje kunnen verplaatsen.

bron:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
  7. <style type="text/css">
  8. div#scale_me { background-size: 100%; background-repeat: no-repeat; }
  9. </style>
  10. </head>
  11.  
  12. <body>
  13. <button type="button" id="scale_down"> - </button>
  14. <button type="button" id="scale_up"> + </button>
  15. <div id="scale_me"><img src="afbeelding.jpg" alt="" /></div>
  16. <script type="text/javascript">
  17. //<![CDATA[
  18. $(window).load(function() {
  19. // determine original dimensions
  20. var src = $('#scale_me img').attr('src');
  21. var origWidth = $('#scale_me img').width();
  22. var origHeight = $('#scale_me img').height();
  23. // cut image out
  24. $('#scale_me').html('');
  25. // build initial div based on an appropriate width, say 320px
  26. var width = 320;
  27. var scale = origWidth/width;
  28. var height = Math.round(origHeight/scale);
  29.  
  30. // init div
  31. $('#scale_me').css('background-image', 'url('+src+')').width(width).height(height);
  32. // now we are good to go!
  33. $('#scale_down').click(function(e) {
  34. scaleImage(1/1.2); // you can tweak the "step" 1.2 to your liking
  35. });
  36. $('#scale_up').click(function(e) {
  37. scaleImage(1.2); // you can tweak the "step" 1.2 to your liking
  38.  
  39. });
  40.  
  41. function scaleImage(factor) {
  42. var width = Math.round($('#scale_me').width() * factor);
  43. var height = Math.round($('#scale_me').height() * factor);
  44. $('#scale_me').width(width).height(height);
  45. }
  46. });
  47. //]]>
  48. </script>
  49. </body>
  50. </html>


Werkend voorbeeld:
http://fangorn....rs/jorisvh/

Het enige wat je hoeft te doen in de popup is dus:
- includen jQuery (lokaal of remote)
- includen js-bestandje
- zorgen dat je een div hebt met id "scale_me" waar je je fullblown afbeelding in plaatst. JavaScript doet de rest!

EDIT: als je afbeeldingen erg groot zijn, of je webserver niet al te snel, loont het misschien de moeite om een timeout in te bouwen voordat jQuery dingen gaat controleren, de afbeelding is mogelijk nog niet geladen.
EDIT 2: niet nodig, gebruik $(window).load() ipv $(document).ready() - code aangepast.
Bedankt door: finduilas, Jorisvh
Offline Jorisvh - 22/04/2015 10:47 (laatste wijziging 22/04/2015 10:56)
Avatar van Jorisvh Lid Bedankt FangorN, dit was net wat ik zocht!
En sorry voor deze late reactie. Ik heb hier al een tijd niet meer mee bezig geweest, pas terug sinds gisteren.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.176s