2016-12-15 3 views
-3

Je veux implémenter une logique de loupe avec image dans Qualtrics Survey. J'ai essayé du code mais c'est la première fois que j'essaie cette fonctionnalité.Comment utiliser une loupe avec Qualtrics?

+1

S'il vous plaît envoyer votre code. –

+0

https://codepen.io/akhbar/pen/Biupr – Adam

+0

J'ai trouvé du code utile dans ce lien, j'ai besoin d'aide pour le faire fonctionner avec Qualtrics – Adam

Répondre

0

Remplacez toutes les occurrences de '$' par 'jQuery' dans le JavaScript.

Question html:

<div class="magnify"> 
<div class="large"></div> 
<img class="small" src="http://thecodeplayer.com/uploads/media/iphone.jpg" width="200"/> 
</div> 

JavaScript Question:

Qualtrics.SurveyEngine.addOnload(function() 
{ 
jQuery(document).ready(function(){ 

    var native_width = 0; 
    var native_height = 0; 
    jQuery(".large").css("background","url('" + jQuery(".small").attr("src") + "') no-repeat"); 

    //Now the mousemove function 
    jQuery(".magnify").mousemove(function(e){ 
     //When the user hovers on the image, the script will first calculate 
     //the native dimensions if they don't exist. Only after the native dimensions 
     //are available, the script will show the zoomed version. 
     if(!native_width && !native_height) 
     { 
      //This will create a new image object with the same image as that in .small 
      //We cannot directly get the dimensions from .small because of the 
      //width specified to 200px in the html. To get the actual dimensions we have 
      //created this image object. 
      var image_object = new Image(); 
      image_object.src = jQuery(".small").attr("src"); 

      //This code is wrapped in the .load function which is important. 
      //width and height of the object would return 0 if accessed before 
      //the image gets loaded. 
      native_width = image_object.width; 
      native_height = image_object.height; 
     } 
     else 
     { 
      //x/y coordinates of the mouse 
      //This is the position of .magnify with respect to the document. 
      var magnify_offset = jQuery(this).offset(); 
      //We will deduct the positions of .magnify from the mouse positions with 
      //respect to the document to get the mouse positions with respect to the 
      //container(.magnify) 
      var mx = e.pageX - magnify_offset.left; 
      var my = e.pageY - magnify_offset.top; 

      //Finally the code to fade out the glass if the mouse is outside the container 
      if(mx < jQuery(this).width() && my < jQuery(this).height() && mx > 0 && my > 0) 
      { 
       jQuery(".large").fadeIn(100); 
      } 
      else 
      { 
       jQuery(".large").fadeOut(100); 
      } 
      if(jQuery(".large").is(":visible")) 
      { 
       //The background position of .large will be changed according to the position 
       //of the mouse over the .small image. So we will get the ratio of the pixel 
       //under the mouse pointer with respect to the image and use that to position the 
       //large image inside the magnifying glass 
       var rx = Math.round(mx/jQuery(".small").width()*native_width - jQuery(".large").width()/2)*-1; 
       var ry = Math.round(my/jQuery(".small").height()*native_height - jQuery(".large").height()/2)*-1; 
       var bgp = rx + "px " + ry + "px"; 

       //Time to move the magnifying glass with the mouse 
       var px = mx - jQuery(".large").width()/2; 
       var py = my - jQuery(".large").height()/2; 
       //Now the glass moves with the mouse 
       //The logic is to deduct half of the glass's width and height from the 
       //mouse coordinates to place it with its center at the mouse coordinates 

       //If you hover on the image now, you should see the magnifying glass in action 
       jQuery(".large").css({left: px, top: py, backgroundPosition: bgp}); 
      } 
     } 
    }) 
}) 

}); 

Rechercher & Feel/Avancé/Ajouter CSS personnalisé:

/*Some CSS*/ 
* {margin: 0; padding: 0;} 
.magnify {width: 200px; margin: 50px auto; position: relative; cursor: none} 

/*Lets create the magnifying glass*/ 
.large { 
    width: 175px; height: 175px; 
    position: absolute; 
    border-radius: 100%; 

    /*Multiple box shadows to achieve the glass effect*/ 
    box-shadow: 0 0 0 7px rgba(255, 255, 255, 0.85), 
    0 0 7px 7px rgba(0, 0, 0, 0.25), 
    inset 0 0 40px 2px rgba(0, 0, 0, 0.25); 

    /*hide the glass by default*/ 
    display: none; 
} 

/*To solve overlap bug at the edges during magnification*/ 
.small { display: block; } 
+0

J'ai remplacé tous les '$' par 'jQuery' dans le JavaScript , mais ça ne marche pas. Qu'en est-il du CSS, dois-je l'intégrer dans le 'Look & Feel' avancé 'Add Custom CSS' – Adam

+0

Fonctionne bien pour moi. J'ai ajouté le code à la réponse ci-dessus. –

+0

Et si je veux utiliser pour une autre image dans l'enquête, je pense que ce code ne fonctionne que pour cette image spécifique! – Adam