MatthijsPals (Talk | contribs) |
MatthijsPals (Talk | contribs) |
||
Line 1: | Line 1: | ||
+ | <!DOCTYPE html> | ||
<html> | <html> | ||
<head> | <head> | ||
+ | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<link rel="stylesheet" type="text/css" | <link rel="stylesheet" type="text/css" | ||
href="https://2018.igem.org/Template:Groningen/CSS&action=raw&ctype=text/css" /> | href="https://2018.igem.org/Template:Groningen/CSS&action=raw&ctype=text/css" /> | ||
Line 9: | Line 11: | ||
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> | <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> | ||
<script type="text/javascript" src="https://2018.igem.org/Template:Groningen/Javascript&action=raw&ctype=text/javascript"></script> | <script type="text/javascript" src="https://2018.igem.org/Template:Groningen/Javascript&action=raw&ctype=text/javascript"></script> | ||
+ | <style> | ||
+ | * {box-sizing: border-box;} | ||
+ | |||
+ | .img-zoom-container { | ||
+ | position: relative; | ||
+ | } | ||
+ | |||
+ | .img-zoom-lens { | ||
+ | position: absolute; | ||
+ | border: 1px solid #d4d4d4; | ||
+ | /*set the size of the lens:*/ | ||
+ | width: 40px; | ||
+ | height: 40px; | ||
+ | } | ||
+ | |||
+ | .img-zoom-result { | ||
+ | border: 1px solid #d4d4d4; | ||
+ | /*set the size of the result div:*/ | ||
+ | width: 300px; | ||
+ | height: 300px; | ||
+ | } | ||
+ | </style> | ||
+ | <script> | ||
+ | function imageZoom(imgID, resultID) { | ||
+ | var img, lens, result, cx, cy; | ||
+ | img = document.getElementById(imgID); | ||
+ | result = document.getElementById(resultID); | ||
+ | /*create lens:*/ | ||
+ | lens = document.createElement("DIV"); | ||
+ | lens.setAttribute("class", "img-zoom-lens"); | ||
+ | /*insert lens:*/ | ||
+ | img.parentElement.insertBefore(lens, img); | ||
+ | /*calculate the ratio between result DIV and lens:*/ | ||
+ | cx = result.offsetWidth / lens.offsetWidth; | ||
+ | cy = result.offsetHeight / lens.offsetHeight; | ||
+ | /*set background properties for the result DIV:*/ | ||
+ | result.style.backgroundImage = "url('" + img.src + "')"; | ||
+ | result.style.backgroundSize = (img.width * cx) + "px " + (img.height * cy) + "px"; | ||
+ | /*execute a function when someone moves the cursor over the image, or the lens:*/ | ||
+ | lens.addEventListener("mousemove", moveLens); | ||
+ | img.addEventListener("mousemove", moveLens); | ||
+ | /*and also for touch screens:*/ | ||
+ | lens.addEventListener("touchmove", moveLens); | ||
+ | img.addEventListener("touchmove", moveLens); | ||
+ | function moveLens(e) { | ||
+ | var pos, x, y; | ||
+ | /*prevent any other actions that may occur when moving over the image:*/ | ||
+ | e.preventDefault(); | ||
+ | /*get the cursor's x and y positions:*/ | ||
+ | pos = getCursorPos(e); | ||
+ | /*calculate the position of the lens:*/ | ||
+ | x = pos.x - (lens.offsetWidth / 2); | ||
+ | y = pos.y - (lens.offsetHeight / 2); | ||
+ | /*prevent the lens from being positioned outside the image:*/ | ||
+ | if (x > img.width - lens.offsetWidth) {x = img.width - lens.offsetWidth;} | ||
+ | if (x < 0) {x = 0;} | ||
+ | if (y > img.height - lens.offsetHeight) {y = img.height - lens.offsetHeight;} | ||
+ | if (y < 0) {y = 0;} | ||
+ | /*set the position of the lens:*/ | ||
+ | lens.style.left = x + "px"; | ||
+ | lens.style.top = y + "px"; | ||
+ | /*display what the lens "sees":*/ | ||
+ | result.style.backgroundPosition = "-" + (x * cx) + "px -" + (y * cy) + "px"; | ||
+ | } | ||
+ | function getCursorPos(e) { | ||
+ | var a, x = 0, y = 0; | ||
+ | e = e || window.event; | ||
+ | /*get the x and y positions of the image:*/ | ||
+ | a = img.getBoundingClientRect(); | ||
+ | /*calculate the cursor's x and y coordinates, relative to the image:*/ | ||
+ | x = e.pageX - a.left; | ||
+ | y = e.pageY - a.top; | ||
+ | /*consider any page scrolling:*/ | ||
+ | x = x - window.pageXOffset; | ||
+ | y = y - window.pageYOffset; | ||
+ | return {x : x, y : y}; | ||
+ | } | ||
+ | } | ||
+ | </script> | ||
</head> | </head> | ||
<body> | <body> | ||
− | |||
<div class="igem_2018_team_content" style="background-color: white"> | <div class="igem_2018_team_content" style="background-color: white"> | ||
<div class="igem_2018_team_column_wrapper"> | <div class="igem_2018_team_column_wrapper"> | ||
− | <div class="column | + | <div class="column"> |
− | + | ||
− | + | <h1>Image Zoom</h1> | |
− | + | <p>Mouse over the image:</p> | |
− | + | ||
+ | <div class="img-zoom-container"> | ||
+ | <img id="myimage" src="https://static.igem.org/mediawiki/2018/4/48/T--Groningen--Earth-fossil-fuels.png"" width="300" height="240"> | ||
+ | <div id="myresult" class="img-zoom-result"></div> | ||
</div> | </div> | ||
− | < | + | <p>The image must be placed inside a contianer with relative positioning.</p> |
− | </div> | + | <p>The result can be put anywhere on the page, but must have the class name "img-zoom-result".</p> |
+ | <p>Make sure both the image and the result have IDs. These IDs are used when a javaScript initiates the zoom effect.</p> | ||
+ | |||
+ | <script> | ||
+ | // Initiate zoom effect: | ||
+ | imageZoom("myimage", "myresult"); | ||
+ | </script> | ||
+ | </div> | ||
+ | </div> | ||
</div> | </div> | ||
+ | |||
</body> | </body> | ||
</html> | </html> |
Revision as of 19:43, 14 October 2018
<!DOCTYPE html>
Image Zoom
Mouse over the image:
The image must be placed inside a contianer with relative positioning.
The result can be put anywhere on the page, but must have the class name "img-zoom-result".
Make sure both the image and the result have IDs. These IDs are used when a javaScript initiates the zoom effect.