Zoom / Lupenfunktionen in einer Informationsseite verwenden

Thema wurde von donee, 28. Juli 2012 erstellt.

  1. donee

    donee Mitglied

    Registriert seit:
    17. November 2011
    Beiträge:
    19
    Danke erhalten:
    1
    Danke vergeben:
    5
    Hallo

    ich möchte mit dem Content-Manager eine zusätzliche Infoseite erstellen.
    In dieser befindet sich eine grössere Karte als jpg.
    Ist es möglich, die Lupenfunktion aus der Artikelinfoseite auch auf dieses grosse Bild in der Infoseite anzuwenden.

    Bitte um Hilfe.

    Danke

    Donee
     
  2. chmarkus

    chmarkus Erfahrener Benutzer

    Registriert seit:
    13. September 2012
    Beiträge:
    126
    Danke erhalten:
    15
    Danke vergeben:
    37
    Das Versuche ich auch gerade hinzubekommen --- kann man die Funktion aus der Produkt-Detailseite irgendwie auf ne Contentseite übertragen?
     
  3. donee

    donee Mitglied

    Registriert seit:
    17. November 2011
    Beiträge:
    19
    Danke erhalten:
    1
    Danke vergeben:
    5
    Hallo Christian,

    ich hab eine eigene Lösung erarbeitet. Sieht wir folgt aus:

    Link: http://www.tsh24.de/shop/shop_content.php?coID=203

    Code:
    <!--l version="1.0" encoding="utf-8-->
    <meta content="text/html; charset=utf-8" http-equiv="content-type" /><style type="text/css">
      body
      {
       margin: 0;
       padding: 0;
      }
      #info
      {
       position: relative;
       top: 0;
       left: 0;
       width: 100%;
       text-align: left;
       padding: 10px;
       font-family: Trebuchet MS, Verdana, sans-serif;
       background-color: #eee;
       border-bottom: solid 1px #ccc;
      }
      #binding
      {
       position: relative;
     
       padding: 0;
       margin-left: 50px;
       margin-top: 1px;
      }
      #message
      {
       font-family: Trebuchet MS, Verdana, sans-serif;
      }
     
      .magnifier
      {
       position: absolute;
       border: solid 2px #000;
       cursor: move;
       background-repeat: no-repeat;
       background-color: #fff;
       margin-left: 20px;
       margin-top: -40px;
     
      }
     
      .magnifierShadow
      {
       position: absolute;
       background: transparent;
       padding: 0;
       margin: 0;
      }
     
     
     </style><script type="text/javascript">
      var kShadowPadding = 17;
     
      var kDefaultMagnifierSize = 2; // index into the arrays below
     
      var kMagnifierSizes = new Array(0, 100, 300, 300);
      var kMagnifierSizeNames = new Array('off', 'small', 'medium', 'large');
     
      var kControllerPrefix = 'Um die Lupe zu verschieben:Cursor auf die Lupe -  Klicken und halten Sie die linke Maustaste - verschieben Sie die Maus.';
     
      function MagnifierPosition()
      {   
       this.style.left = Math.round(this.xPosition - 1 - this.size/2) + "px"; // -1 to account for the border
       this.style.top = Math.round(this.yPosition - 1 - this.size/2) + "px";
     
       this.shadow.style.left = Math.round(this.xPosition - this.size/2 - kShadowPadding) + "px";
       this.shadow.style.top = Math.round(this.yPosition - this.size/2 - kShadowPadding) + "px";
     
       var magnifierCenterX = Math.round(this.xPosition * this.xMultiplier - this.size/2);
       var magnifierCenterY = Math.round(this.yPosition * this.yMultiplier - this.size/2);
     
       this.style.backgroundPosition = -magnifierCenterX + "px " +
               -magnifierCenterY + "px";
      }
     
      function ControllerSizeButtonClick(event)
      {
       if (!event) event = window.event;
     
       var button = event.currentTarget || event.srcElement;
     
       button.parentNode.magnifier.resize(button.magnifierSize);
      }
     
      function MagnifierResize(size)
      {
       this.size = kMagnifierSizes[size];
     
       for (var i=0; i < this.controller.sizeButtons.length; i++)
       {
        if (i == size)
         this.controller.sizeButtons[i].className = "magnifierControllerButtonSelected";
        else
         this.controller.sizeButtons[i].className = "magnifierControllerButton";
       }
     
       if (this.size == 0)
       {
        this.shadow.style.display = "none";
        this.style.display = "none";
       }
       else
       {
        var shadow = this.shadow;
        var shadowSize = this.size + 2 * kShadowPadding;
     
        // MSIE 5.x/6.x must be treated specially in order to make them use the PNG alpha channel
        var shadowImageSrc = "shadow" + size + ".png";
        if (shadow.runtimeStyle)
         shadow.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" +
                    shadowImageSrc +
                 "', sizingMethod='scale')";
        else
         shadow.style.backgroundImage = "url(" + shadowImageSrc + ")";
        shadow.style.width = shadowSize + "px";
        shadow.style.height = shadowSize + "px";
        shadow.style.display = "block";
     
        if (this.runtimeStyle) // msie counts the border as being part of the width
         this.size += 2; // must compensate
     
        this.style.width = this.size + "px";
        this.style.height = this.size + "px";
        this.style.display = "block";
        this.position();
       }
      }
     
      function MagnifierMouseDown(event)
      {
       if (!event) event = window.event;
     
       document.body.magnifier = this;
       this.inDrag = true;
       if (event.pageX)
       {
        this.startX = event.pageX;
        this.startY = event.pageY;
       }
       else if (event.clientX)
       {
        this.startX = event.clientX;
        this.startY = event.clientY;
       }
       else
       {
        alert("don't know how to get position out of event");
        return;
       }
       this.savedCursor = this.style.cursor;
       this.style.cursor = "crosshair";
      }
     
      function MagnifierMouseUp()
      {
       if (this.inDrag)
       {
        this.inDrag = false;
        this.style.cursor = this.savedCursor;
        document.body.magnifier = null;
       }
      }
     
      function MagnifierDrag(event)
      {
       if (!event) event = window.event;
       var magnifier = this.magnifier; // we're actually in the body's onmousemove handler
     
       if (magnifier && magnifier.inDrag)
       {
        var eventX;
        var eventY;
     
        if (event.pageX)
        {
         eventX = event.pageX;
         eventY = event.pageY;
        }
        else if (event.clientX)
        {
         eventX = event.clientX;
         eventY = event.clientY;
        }
        else
        {
         return;
        }
     
        magnifier.xPosition += eventX - magnifier.startX;
        magnifier.yPosition += eventY - magnifier.startY;
     
        magnifier.startX = eventX;
        magnifier.startY = eventY;
     
        magnifier.position();
       }
      }
     
      function loadMagnifier(baseID, zoomedURL, zoomedWidth, zoomedHeight)
      {
       // get the zoomed image (load as early as possible)
       var zoomedImage = document.createElement("img");
       zoomedImage.src = zoomedURL;
     
       // get the div's
       var base = document.getElementById(baseID);
       var magnifier = document.createElement("div");
     
       // get the regular image
       var normalImage = null;
       for (var i=0; i < base.childNodes.length; i++)
       {
        if (base.childNodes[i].tagName &&
         base.childNodes[i].tagName.toLowerCase() == "img")
        {
         normalImage = base.childNodes[i];
         break;
        }
       }
     
       if (normalImage == null)
       {
        alert("couldn't find normal image for magnifier " + baseID);
        return;
       }
     
       magnifier.xMultiplier = zoomedWidth/normalImage.width;
       magnifier.yMultiplier = zoomedHeight/normalImage.height;
     
       magnifier.size = kMagnifierSizes[kDefaultMagnifierSize];
       magnifier.xPosition = normalImage.width - magnifier.size/2 - 20;
       magnifier.yPosition = normalImage.height - magnifier.size/2 + 30;
     
       magnifier.id = baseID + "Magnifier";
       magnifier.className = "magnifier";
     
       // styles (only dynamic ones, rest are part of the class)
       magnifier.style.backgroundImage = "url(" + zoomedURL + ")";
     
       // functions
       magnifier.onmousedown = MagnifierMouseDown;
       magnifier.onmouseup = MagnifierMouseUp;
       document.body.onmousemove = MagnifierDrag; // we attach this handler to the body because if the user moves
                    // the mouse fast enough, it'll go outside the boundaries of the
                    // magnifier, and then the magnifier's mousemove handler won't fire
       magnifier.position = MagnifierPosition;
       magnifier.resize = MagnifierResize;
     
       // controller
       var controller = document.createElement("span");
     
       controller.id = baseID + "MagnifierController";
       controller.className = "magnifierController";
     
       var controllerPrefix = document.createElement("span");
       controllerPrefix.innerHTML = kControllerPrefix;
       controllerPrefix.className = "magnifierControllerPrefix";
       controller.appendChild(controllerPrefix);
     
       controller.sizeButtons = new Array(kMagnifierSizes.length);
     
       for (var i=0; i < kMagnifierSizes.length; i++)
       {
        var button = document.createElement("span");
     
        button.className = "magnifierControllerButton";
        button.onclick = ControllerSizeButtonClick;
        button.magnifierSize = i;
     
        controller.sizeButtons[i] = button;
        controller.appendChild(button);
       }
     
       // shadow
       var shadow = document.createElement("div");
     
       shadow.id = baseID + "MagnifierShadow";
       shadow.className = "magnifierShadow";
     
       // point objects at each other
       magnifier.controller = controller;
       controller.magnifier = magnifier;
       magnifier.shadow = shadow;
     
       // add to document and lay out
       var controllerContainer = document.createElement("div");
        controllerContainer.className = "magnifierControllerContainer";
      controllerContainer.appendChild(controller);
       base.insertBefore(controllerContainer, document.getElementById("message"));
       base.appendChild(shadow);
       base.appendChild(magnifier);
       magnifier.resize(kDefaultMagnifierSize); // also positions
      }
     </script>
    <div id="binding"><img id="baseImage" alt="Book Binding" width="700" height="563" src="/shop/media/karte/onlinekarte-gross.jpg" /></div>
    <script type="text/javascript">
     loadMagnifier("binding", "/shop/media/karte/onlinekarte-gross.jpg", 2000, 1609);
    </script>
    
    mfg

    donee
     
  4. chmarkus

    chmarkus Erfahrener Benutzer

    Registriert seit:
    13. September 2012
    Beiträge:
    126
    Danke erhalten:
    15
    Danke vergeben:
    37
    Werd ich mal sehen ob ich das integriert bekomme --- vielen Dank!!!

    Das ist doch schon mal was :)