{"id":9067,"date":"2024-01-19T17:58:00","date_gmt":"2024-01-19T17:58:00","guid":{"rendered":"https:\/\/codehim.com\/?p=9067"},"modified":"2024-01-22T15:59:07","modified_gmt":"2024-01-22T10:59:07","slug":"javascript-onclick-fullscreen-image","status":"publish","type":"post","link":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/","title":{"rendered":"JavaScript Onclick Fullscreen Image"},"content":{"rendered":"<p>This lightweight JavaScript library helps you to view fullscreen image onclick event. It works by allowing users to click on specific elements with the class &#8220;demo-image,&#8221; and when clicked, the corresponding image is displayed in a fully fullscreen view. This code is helpful for creating an <a href=\"https:\/\/codehim.com\/gallery\/full-screen-image-gallery-jquery-story-show-gallery\/\" target=\"_blank\" rel=\"noopener\">interactive image gallery with full-screen<\/a> functionality.<\/p>\n<p>Whether you are working on a gallery project or want to integrate a simple solution to <a href=\"https:\/\/codehim.com\/zoom\/zoom-image-with-click-to-increase-magnification-jquery-plugin\/\" target=\"_blank\" rel=\"noopener\">zoom view on click event<\/a>, this code quite fits your needs.<\/p>\n<h2>How to Create Javascript Onclick Fullscreen Image<\/h2>\n<p>1. Start by creating the HTML structure for your webpage. You&#8217;ll need an HTML file that includes the necessary HTML elements, such as the <code>&lt;head&gt;<\/code> and <code>&lt;body&gt;<\/code>. Add the following code to the <code>&lt;body&gt;<\/code> section of your HTML file.<\/p>\n<pre class=\"prettyprint linenums lang-html\">  &lt;header&gt;\r\n    &lt;div class=\"main\"&gt;\r\n      &lt;h1&gt; A js library for viewing images in a fully full screen. &lt;\/h1&gt;\r\n      &lt;h1&gt; Click the images to see it in action!&lt;\/h1&gt;\r\n    &lt;\/div&gt;\r\n  &lt;\/header&gt;\r\n  &lt;section class=\"demos\"&gt;\r\n    &lt;!-- Using divs for the demo, for formatting... you can use images if you want!  --&gt;\r\n    &lt;div class=\"demo-image first\" data-image=\"http:\/\/tholman.com\/intense-images\/img\/h1_small.jpg\" data-title=\"Beautiful fields\" data-caption=\"With lots of wheaty puffs. Love those puffs.\"&gt;&lt;\/div&gt;\r\n    &lt;div class=\"demo-image second\" data-image=\"http:\/\/tholman.com\/intense-images\/img\/v1_small.jpg\" data-title=\"Fantastic cliffs\" data-caption=\"Longing for exploration. Explore me!\"&gt;&lt;\/div&gt;\r\n  &lt;\/section&gt;\r\n\r\n  &lt;script&gt;\r\n    window.onload = function() {\r\n    var elements = document.querySelectorAll( '.demo-image' );\r\n    Intense( elements );\r\n    }\r\n  &lt;\/script&gt;\r\n<\/pre>\n<p>Inside the <code>&lt;body&gt;<\/code>, add the images you want to make clickable for full-screen viewing. Use the following format for each image:<\/p>\n<p>2. Now, add the following CSS code to your project. You can customize the CSS styles to match your website&#8217;s design. Adjust fonts, colors, and other styles as needed in the CSS section of the code.<\/p>\n<pre class=\"prettyprint linenums lang-css\">* {\r\n  -webkit-font-smoothing: antialiased;\r\n  -moz-box-sizing: border-box;\r\n  box-sizing: border-box; }\r\n\r\nhtml, body {\r\n  font-family: \"Ubuntu Mono\", monospace;\r\n  margin: 0px;\r\n  height: 100%;\r\n  width: 100%; }\r\n\r\nbody {\r\n  padding: 20px;\r\n  padding-top: 40px;\r\n  min-width: 600px; }\r\n\r\n.main h1 {\r\n  font-weight: normal;\r\n  width: 464px;\r\n  background: #222222;\r\n  color: #fff;\r\n  font-size: 14px;\r\n  height: 55px;\r\n  line-height: 55px;\r\n  margin: auto;\r\n  margin-top: 0px;\r\n  margin-bottom: 20px;\r\n  text-align: center;}\r\n\r\n.demos {\r\n  text-align: center;\r\n  margin-top: 20px;\r\n  width: 490px;\r\n  margin: auto;}\r\n\r\n.demo-image {\r\n  cursor: url(\"http:\/\/tholman.com\/intense-images\/img\/plus_cursor.png\") 25 25, auto;\r\n  display: inline-block;\r\n  width: 220px;\r\n  height: 220px;\r\n  background-size: cover;\r\n  background-position: 50% 50%;\r\n  margin-left: 8px;\r\n  margin-right: 8px;\r\n  margin-bottom: 16px; }\r\n  .demo-image.first {\r\n    background-image: url(\"http:\/\/tholman.com\/intense-images\/img\/h1_small.jpg\"); }\r\n  .demo-image.second {\r\n    background-position: 50% 10%;\r\n    background-image: url(\"http:\/\/tholman.com\/intense-images\/img\/v1_small.jpg\"); }\r\n\r\nfooter h1 {\r\n  padding-left: 20px;\r\n  background: #e9e9e9;\r\n  color: #222222;\r\n  font-size: 14px; }\r\n  footer h1 a {\r\n    color: #222222; }<\/pre>\n<p>3. Finally, add the following JavaScript code at the end of the <code>&lt;body&gt;<\/code> section, just before the closing <code>&lt;\/body&gt;<\/code> tag.<\/p>\n<pre class=\"prettyprint linenums lang-js\">window.requestAnimFrame = (function(){\r\n  return  window.requestAnimationFrame       ||\r\n          window.webkitRequestAnimationFrame ||\r\n          window.mozRequestAnimationFrame    ||\r\n          function( callback ){\r\n            window.setTimeout(callback, 1000 \/ 60);\r\n          };\r\n})();\r\n\r\nwindow.cancelRequestAnimFrame = ( function() {\r\n    return window.cancelAnimationFrame          ||\r\n        window.webkitCancelRequestAnimationFrame    ||\r\n        window.mozCancelRequestAnimationFrame       ||\r\n        window.oCancelRequestAnimationFrame     ||\r\n        window.msCancelRequestAnimationFrame        ||\r\n        clearTimeout\r\n} )();\r\n\r\n\r\nvar Intense = (function() {\r\n\r\n    'use strict';\r\n\r\n    var KEYCODE_ESC = 27;\r\n\r\n    \/\/ Track both the current and destination mouse coordinates\r\n    \/\/ Destination coordinates are non-eased actual mouse coordinates\r\n    var mouse = { xCurr:0, yCurr:0, xDest: 0, yDest: 0 };\r\n\r\n    var horizontalOrientation = true;\r\n\r\n    \/\/ Holds the animation frame id.\r\n    var looper;\r\n  \r\n    \/\/ Current position of scrolly element\r\n    var lastPosition, currentPosition = 0;\r\n    \r\n    var sourceDimensions, target;\r\n    var targetDimensions = { w: 0, h: 0 };\r\n  \r\n    var container;\r\n    var containerDimensions = { w: 0, h:0 };\r\n    var overflowArea = { x: 0, y: 0 };\r\n\r\n    \/\/ Overflow variable before screen is locked.\r\n    var overflowValue;\r\n\r\n    \/* -------------------------\r\n    \/*          UTILS\r\n    \/* -------------------------*\/\r\n\r\n    \/\/ Soft object augmentation\r\n    function extend( target, source ) {\r\n\r\n        for ( var key in source )\r\n\r\n            if ( !( key in target ) )\r\n\r\n                target[ key ] = source[ key ];\r\n\r\n        return target;\r\n    }\r\n\r\n    \/\/ Applys a dict of css properties to an element\r\n    function applyProperties( target, properties ) {\r\n\r\n      for( var key in properties ) {\r\n        target.style[ key ] = properties[ key ];\r\n      }\r\n    }\r\n\r\n    \/\/ Returns whether target a vertical or horizontal fit in the page.\r\n    \/\/ As well as the right fitting width\/height of the image.\r\n    function getFit( \r\n\r\n      source ) {\r\n\r\n      var heightRatio = window.innerHeight \/ source.h;\r\n\r\n      if( (source.w * heightRatio) &gt; window.innerWidth ) {\r\n        return { w: source.w * heightRatio, h: source.h * heightRatio, fit: true };\r\n      } else {\r\n        var widthRatio = window.innerWidth \/ source.w;\r\n        return { w: source.w * widthRatio, h: source.h * widthRatio, fit: false };\r\n      }\r\n    }\r\n\r\n    \/* -------------------------\r\n    \/*          APP\r\n    \/* -------------------------*\/\r\n\r\n    function startTracking( passedElements ) {\r\n\r\n      var i;\r\n\r\n      \/\/ If passed an array of elements, assign tracking to all.\r\n      if ( passedElements.length ) {\r\n\r\n        \/\/ Loop and assign\r\n        for( i = 0; i &lt; passedElements.length; i++ ) {\r\n          track( passedElements[ i ] );\r\n        }\r\n\r\n      } else {\r\n          track( passedElements );\r\n      }\r\n    }\r\n\r\n    function track( element ) {\r\n\r\n      \/\/ Element needs a src at minumun.\r\n      if( element.getAttribute( 'data-image') || element.src ) {\r\n        element.addEventListener( 'click', function() {\r\n          init( this );\r\n        }, false );\r\n      }\r\n    }\r\n  \r\n    function start() { \r\n      loop();\r\n    }\r\n   \r\n    function stop() {\r\n      cancelRequestAnimFrame( looper );\r\n    }\r\n\r\n    function loop() {\r\n        looper = requestAnimFrame(loop);\r\n        positionTarget();      \r\n    }\r\n\r\n    \/\/ Lock scroll on the document body.\r\n    function lockBody() {\r\n\r\n      overflowValue = document.body.style.overflow;\r\n      document.body.style.overflow = 'hidden';\r\n    }\r\n\r\n    \/\/ Unlock scroll on the document body.\r\n    function unlockBody() {\r\n      document.body.style.overflow = overflowValue;\r\n    }\r\n\r\n    function createViewer( title, caption ) {\r\n\r\n      \/*\r\n       *  Container\r\n       *\/\r\n      var containerProperties = {\r\n        'backgroundColor': 'rgba(0,0,0,0.8)',\r\n        'width': '100%',\r\n        'height': '100%',\r\n        'position': 'fixed',\r\n        'top': '0px',\r\n        'left': '0px',\r\n        'overflow': 'hidden',\r\n        'zIndex': '999999',\r\n        'margin': '0px',\r\n        'webkitTransition': 'opacity 150ms cubic-bezier( 0, 0, .26, 1 )',\r\n        'MozTransition': 'opacity 150ms cubic-bezier( 0, 0, .26, 1 )',\r\n        'transition': 'opacity 150ms cubic-bezier( 0, 0, .26, 1 )',\r\n        'opacity': '0'\r\n      }\r\n      container = document.createElement( 'figure' );\r\n      container.appendChild( target );\r\n      applyProperties( container, containerProperties );\r\n\r\n      var imageProperties = {\r\n        'cursor': 'url( \"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw\/eHBhY2tldCBiZWdpbj0i77u\/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3Q0IyNDI3M0FFMkYxMUUzOEQzQUQ5NTMxMDAwQjJGRCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3Q0IyNDI3NEFFMkYxMUUzOEQzQUQ5NTMxMDAwQjJGRCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdDQjI0MjcxQUUyRjExRTM4RDNBRDk1MzEwMDBCMkZEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdDQjI0MjcyQUUyRjExRTM4RDNBRDk1MzEwMDBCMkZEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+soZ1WgAABp5JREFUeNrcWn9MlVUY\/u4dogIapV0gQ0SUO4WAXdT8B5ULc6uFgK3MLFxzFrQFZMtaed0oKTPj1x8EbbZZK5fNCdLWcvxQ+EOHyAQlBgiIVFxAJuUF7YrQ81zOtU+8F+Pe78K1d3s5537f+fE8nPec7z3vOSpJIRkbGwtEEgtdBdVCl0AXQr2hKqgJeg16BdoCrYNWqVSqbif7VQT8YqgB2jTmuDSJNoIcJUJVOVg5EsmH0Oehaj4bGRkZ6uvra2xvb29oamrqbGxs7K2vrx\/s7Oy8yffBwcFzdTqdb0REhF9YWFhwSEhIpEajifDw8PAWzY5Cj0GzMUoNUx0R1RQJaJAcgKaw7ujo6O2urq7qysrKioyMjHNDQ0OjU2nP29tbnZ+fv1qv18cFBQWtU6vVs9gN9BvobhDqU5wIKryA5CuoLwj83dzc\/NOePXuOlpSUXFNijiUlJS3ct2\/fiytWrHgOhGbj0SD0dZD5UREiKOiJJA+axt9Go7F2165deUeOHOmVXCBbt271y8nJyfD3939aPCqCZoCQ2WEiKOQj7HYjzejUqVNFcXFxJdI0SEVFRdKGDRtShbmd5HwEGZM9IupJSHiJBjaazebr2dnZmdNFgsK+2Cf7JgZiEZhsimoSc\/oZqh8eHjamp6fvPnTo0O\/SDMiOHTsWFRQUHPDy8vLnQEGflZvZpKaFl4WcE7du3epPTU19+\/Dhwz3SDMr27dsDioqKcufMmfM45wyIpD3QtPBiC0lgTowcPHgwa6ZJUIiBWIgJP1OB8aVJTQsFnkDSxCUWk60gPj6+VHIjKS8vT8TcSRdLcxhG5g+bpoWH3yF5ube3tw7L33uSGwqW\/8\/8\/Pzoz30PItvuMy080HEZx\/CZDQZDgeSmQmzESKwC870jgodcWhPhJx0LDw8vlNxYLl269Cb8Nfp5NP2kuyMiPM8EfvTodkhuLsQoJn4C\/VG5ab3CfHd3d41SvpMrhRiBtVrgf01OZBv\/nIRID4nIsG6xzBGxs7vK\/YSvr2\/SVF3xiYL55bVgwYJZp0+f\/nOycuvXr38E+xczvOibjvTDLcDg4OBx7GfoD4ZwRPR8gUYbnCUBF3wuHMtPy8rKcmJjY33tleM7lqmpqdnPOo70RazAfNHapFrssaWOjo6Lzg43vj2zPT09febNm7ektLT0C1tk+IzvWIZlWcfR\/oC5UWSjSCSUudbW1qvOEqmqqhrcvHnzOzdu3Lhii4ycBMuwLOs42t\/ly5etmLUkEsJcbW3tbwq5ETbJ2CLBss70dfbsWSvmpZzsnJTzo6KiEhoaGoaVWlXkwE0mkyXk4+PjE6gUCUpMTMz86urq48gOkIjFWYHfEqf0EkkyJ06cyCMB\/iah5OTkTCVIUDQajQf8wl+QNaune\/2\/c+eOS9olkb+YiYyM9FJ6NGhaHA2OBJV5e6uZI6LVaq2YTSTSz9zatWsfc8X84JzYtGlTJtXeauaorFy5cr7IXieRdubWrFnzpCtIJCYmWpZYKvNKksE\/34q5g0RamQsNDV3sKhLy74ySZJYtW2bF3EIidZaFeOnSp5wl0t\/fb4aYbJGwRYZlWcfR\/mSYL8idRhOcxuTpdBoHBgZuY5Pk0LfrPqdRnE8080Fubm60Aru34QeRoLCMoyQoxCpItFnnCIVBB2kj5GHZj8iw\/iDfWJHIaGBgYAyj4u5OghiBdZ00fqby9V0iMK8rSMoYMGZo392JECOwehAztHNipPFjxiGw0UnYuXPnInclQWzEKI0fCH1kL9JoCdAZjcZzAQEB77sjkZ6env3YjK22G6AT8i7DkSzI8KS7kSAmQWJQYL3HabwrjKVK4mQKX9w0g8EQ6i4k9u7dqyUm8TNNYJVsmpbMxL5EkuouxwopKSn+xcXFeeJYoRgkUmVYJyXirgc9ldBnbB302NxYiYJcGc6wgcLCwvysrCztTJgT+xYkzhCTvUPR\/\/9hqBgZkxiZYjao1+vf4vLH4XalKbEP9iVIFIuRME2K9b92MOHCAEOdZS66MJAAAp5iiX0DBI4+ANfUiIhKvMLxOfRVSXaFA2ZQnpmZWefIFY68vLxVMNf4CVc4vuV3wiVXOCZUjkLygXTvpRoTL9Uw9NrS0tJVX1\/fc\/78+ettbW2WIPXy5cvnRkdHP6rT6QK0Wm0QNkXhGo0mUrjikvTvpZpPQODCFLA4bw6ya06\/OnHNqXnGrjnZIyWNXzyjC0GPYIk0fvHM+h+XXzxjnOCcNH7x7KqT\/VrSfwQYAOAcX9HTDttYAAAAAElFTkSuQmCC\" ) 25 25, auto'\r\n      }\r\n      applyProperties( target, imageProperties );\r\n\r\n      \/*\r\n       *  Caption Container\r\n       *\/\r\n      var captionContainerProperties = {\r\n        'fontFamily': 'Georgia, Times, \"Times New Roman\", serif',\r\n        'position': 'fixed',\r\n        'bottom': '0px',\r\n        'left': '0px',\r\n        'padding': '20px',\r\n        'color': '#fff',\r\n        'wordSpacing': '0.2px',\r\n        'webkitFontSmoothing': 'antialiased',\r\n        'textShadow': '-1px 0px 1px rgba(0,0,0,0.4)'\r\n      }\r\n      var captionContainer = document.createElement( 'figcaption' );\r\n      applyProperties( captionContainer, captionContainerProperties );\r\n\r\n      \/*\r\n       *  Caption Title\r\n       *\/\r\n      if ( title ) {\r\n        var captionTitleProperties = {\r\n          'margin': '0px',\r\n          'padding': '0px',\r\n          'fontWeight': 'normal',\r\n          'fontSize': '40px',\r\n          'letterSpacing': '0.5px',\r\n          'lineHeight': '35px',\r\n          'textAlign': 'left'\r\n        }\r\n        var captionTitle = document.createElement( 'h1' );\r\n        applyProperties( captionTitle, captionTitleProperties );\r\n        captionTitle.innerHTML = title;\r\n        captionContainer.appendChild( captionTitle );\r\n      }\r\n\r\n      if ( caption ) {\r\n        var captionTextProperties = {\r\n          'margin': '0px',\r\n          'padding': '0px',\r\n          'fontWeight': 'normal',\r\n          'fontSize': '20px',\r\n          'letterSpacing': '0.1px',\r\n          'maxWidth': '500px',\r\n          'textAlign': 'left',\r\n          'background': 'none',\r\n          'marginTop': '5px'\r\n        }\r\n        var captionText = document.createElement( 'h2' );\r\n        applyProperties( captionText, captionTextProperties );\r\n        captionText.innerHTML = caption;\r\n        captionContainer.appendChild( captionText );\r\n      }\r\n\r\n      container.appendChild( captionContainer );\r\n\r\n      setDimensions();\r\n\r\n      mouse.xCurr = mouse.xDest = window.innerWidth \/ 2;\r\n      mouse.yCurr = mouse.yDest = window.innerHeight \/ 2;\r\n      \r\n      document.body.appendChild( container );\r\n      setTimeout( function() {\r\n        container.style[ 'opacity' ] = '1';\r\n      }, 10);\r\n    }\r\n\r\n    function removeViewer() {\r\n\r\n      unlockBody();\r\n      unbindEvents();\r\n      document.body.removeChild( container );\r\n    }\r\n\r\n    function setDimensions() {\r\n\r\n      \/\/ Manually set height to stop bug where \r\n      var imageDimensions = getFit( sourceDimensions );\r\n      target.width = imageDimensions.w;\r\n      target.height = imageDimensions.h;\r\n      horizontalOrientation = imageDimensions.fit;\r\n\r\n      targetDimensions = { w: target.width, h: target.height };\r\n      containerDimensions = { w: window.innerWidth, h: window.innerHeight };\r\n      overflowArea = {x: containerDimensions.w - targetDimensions.w, y: containerDimensions.h - targetDimensions.h};\r\n\r\n    }\r\n\r\n    function init( element ) {\r\n\r\n      var imageSource = element.getAttribute( 'data-image') || element.src;\r\n      var title = element.getAttribute( 'data-title');\r\n      var caption = element.getAttribute( 'data-caption');\r\n      \r\n      var img = new Image();\r\n      img.onload = function() {\r\n\r\n        sourceDimensions = { w: img.width, h: img.height }; \/\/ Save original dimensions for later.\r\n        target = this;\r\n        createViewer( title, caption );\r\n        lockBody();\r\n        bindEvents();\r\n        loop();\r\n      }\r\n\r\n      img.src = imageSource;\r\n    }\r\n\r\n    function bindEvents() {\r\n\r\n      container.addEventListener( 'mousemove', onMouseMove,   false );\r\n      container.addEventListener( 'touchmove', onTouchMove,   false );\r\n      window.addEventListener(    'resize',    setDimensions, false );\r\n      window.addEventListener(    'keyup',     onKeyUp,       false );\r\n      target.addEventListener(    'click',     removeViewer,  false );\r\n    }\r\n\r\n    function unbindEvents() {\r\n\r\n      container.removeEventListener( 'mousemove', onMouseMove,   false );\r\n      container.removeEventListener( 'touchmove', onTouchMove,   false);\r\n      window.removeEventListener(    'resize',    setDimensions, false );\r\n      window.removeEventListener(    'keyup',     onKeyUp,       false );\r\n      target.removeEventListener(    'click',     removeViewer,  false )\r\n    }\r\n  \r\n    function onMouseMove( event ) {\r\n\r\n      mouse.xDest = event.clientX;\r\n      mouse.yDest = event.clientY;\r\n    }\r\n\r\n    function onTouchMove( event ) {\r\n\r\n      event.preventDefault(); \/\/ Needed to keep this event firing.\r\n      mouse.xDest = event.touches[0].clientX;\r\n      mouse.yDest = event.touches[0].clientY;\r\n    }\r\n\r\n    \/\/ Exit on excape key pressed;\r\n    function onKeyUp( event ) {\r\n\r\n      event.preventDefault();\r\n      if ( event.keyCode === KEYCODE_ESC ) {\r\n        removeViewer();\r\n      } \r\n    }\r\n  \r\n    function positionTarget() {\r\n\r\n      mouse.xCurr += ( mouse.xDest - mouse.xCurr ) * 0.05;\r\n      mouse.yCurr += ( mouse.yDest - mouse.yCurr ) * 0.05;\r\n\r\n      if ( horizontalOrientation === true ) {\r\n\r\n        \/\/ HORIZONTAL SCANNING\r\n        currentPosition += ( mouse.xCurr - currentPosition );\r\n        if( mouse.xCurr !== lastPosition ) {\r\n          var position = parseFloat( currentPosition \/ containerDimensions.w );\r\n          position = overflowArea.x * position;\r\n          target.style[ 'webkitTransform' ] = 'translate3d(' + position + 'px, 0px, 0px)';\r\n          target.style[ 'MozTransform' ] = 'translate3d(' + position + 'px, 0px, 0px)';\r\n          target.style[ 'msTransform' ] = 'translate3d(' + position + 'px, 0px, 0px)';\r\n          lastPosition = mouse.xCurr;\r\n        }\r\n      } else if ( horizontalOrientation === false ) {\r\n\r\n        \/\/ VERTICAL SCANNING\r\n        currentPosition += ( mouse.yCurr - currentPosition );\r\n        if( mouse.yCurr !== lastPosition ) {\r\n          var position = parseFloat( currentPosition \/ containerDimensions.h );\r\n          position = overflowArea.y * position;\r\n          target.style[ 'webkitTransform' ] = 'translate3d( 0px, ' + position + 'px, 0px)';\r\n          target.style[ 'MozTransform' ] = 'translate3d( 0px, ' + position + 'px, 0px)';\r\n          target.style[ 'msTransform' ] = 'translate3d( 0px, ' + position + 'px, 0px)';\r\n          lastPosition = mouse.yCurr;\r\n        }\r\n      }\r\n    }\r\n\r\n    function main( element ) {\r\n\r\n      \/\/ Parse arguments\r\n\r\n      if ( !element ) {\r\n        throw 'You need to pass an element!';\r\n      }\r\n\r\n      startTracking( element );\r\n    }\r\n\r\n    return extend( main, {\r\n        resize: setDimensions,\r\n        start: start,\r\n        stop: stop\r\n    });\r\n\r\n})();<\/pre>\n<p>That&#8217;s it! You&#8217;ve successfully implemented a full-screen image viewer on your website using JavaScript. Users can now click on images to enjoy a more immersive viewing experience. Feel free to further customize the code and integrate it into your projects to enhance user engagement with visual content.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This lightweight JavaScript library helps you to view fullscreen image onclick event. It works by allowing users to click on&#8230;<\/p>\n","protected":false},"author":1,"featured_media":9077,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[116],"tags":[],"class_list":["post-9067","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vanilla-javascript"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JavaScript Onclick Fullscreen Image &#8212; CodeHim<\/title>\n<meta name=\"description\" content=\"Here is a free code snippet to create a JavaScript Onclick Fullscreen Image. You can view demo and download the source code.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript Onclick Fullscreen Image &#8212; CodeHim\" \/>\n<meta property=\"og:description\" content=\"Here is a free code snippet to create a JavaScript Onclick Fullscreen Image. You can view demo and download the source code.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/\" \/>\n<meta property=\"og:site_name\" content=\"CodeHim\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/codehimofficial\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-19T17:58:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-22T10:59:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"960\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Asif Mughal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodeHimOfficial\" \/>\n<meta name=\"twitter:site\" content=\"@CodeHimOfficial\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Asif Mughal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/\"},\"author\":{\"name\":\"Asif Mughal\",\"@id\":\"https:\/\/codehim.com\/#\/schema\/person\/cc48f1dbe072a89a62a98171b7db43ed\"},\"headline\":\"JavaScript Onclick Fullscreen Image\",\"datePublished\":\"2024-01-19T17:58:00+00:00\",\"dateModified\":\"2024-01-22T10:59:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/\"},\"wordCount\":248,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/codehim.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png\",\"articleSection\":[\"Vanilla JavaScript\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/\",\"url\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/\",\"name\":\"JavaScript Onclick Fullscreen Image &#8212; CodeHim\",\"isPartOf\":{\"@id\":\"https:\/\/codehim.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png\",\"datePublished\":\"2024-01-19T17:58:00+00:00\",\"dateModified\":\"2024-01-22T10:59:07+00:00\",\"description\":\"Here is a free code snippet to create a JavaScript Onclick Fullscreen Image. You can view demo and download the source code.\",\"breadcrumb\":{\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#primaryimage\",\"url\":\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png\",\"contentUrl\":\"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png\",\"width\":1280,\"height\":960,\"caption\":\"JavaScript Onclick Fullscreen Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/codehim.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vanilla JavaScript\",\"item\":\"https:\/\/codehim.com\/category\/vanilla-javascript\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"JavaScript Onclick Fullscreen Image\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/codehim.com\/#website\",\"url\":\"https:\/\/codehim.com\/\",\"name\":\"CodeHim\",\"description\":\"Web Design Code Snippets\",\"publisher\":{\"@id\":\"https:\/\/codehim.com\/#organization\"},\"alternateName\":\"Web Design Codes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/codehim.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/codehim.com\/#organization\",\"name\":\"CodeHim - Web Design Code & Scripts\",\"url\":\"https:\/\/codehim.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codehim.com\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/codehim.com\/wp-content\/uploads\/2023\/06\/Codehim-short-logo.jpg\",\"contentUrl\":\"http:\/\/codehim.com\/wp-content\/uploads\/2023\/06\/Codehim-short-logo.jpg\",\"width\":280,\"height\":280,\"caption\":\"CodeHim - Web Design Code & Scripts\"},\"image\":{\"@id\":\"https:\/\/codehim.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/codehimofficial\",\"https:\/\/x.com\/CodeHimOfficial\",\"https:\/\/www.instagram.com\/codehim\/\",\"https:\/\/www.linkedin.com\/company\/codehim\",\"https:\/\/co.pinterest.com\/codehim\/\",\"https:\/\/www.youtube.com\/@codehim\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/codehim.com\/#\/schema\/person\/cc48f1dbe072a89a62a98171b7db43ed\",\"name\":\"Asif Mughal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codehim.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b25bfcd7d4e341c2c6f785a88d8ad2a4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b25bfcd7d4e341c2c6f785a88d8ad2a4?s=96&d=mm&r=g\",\"caption\":\"Asif Mughal\"},\"description\":\"I code and create web elements for amazing people around the world. I like work with new people. New people new Experiences. I truly enjoy what I'm doing, which makes me more passionate about web development and coding. I am always ready to do challenging tasks whether it is about creating a custom CMS from scratch or customizing an existing system.\",\"sameAs\":[\"https:\/\/codehim.com\"],\"url\":\"https:\/\/codehim.com\/author\/asif-mughal\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JavaScript Onclick Fullscreen Image &#8212; CodeHim","description":"Here is a free code snippet to create a JavaScript Onclick Fullscreen Image. You can view demo and download the source code.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/","og_locale":"en_US","og_type":"article","og_title":"JavaScript Onclick Fullscreen Image &#8212; CodeHim","og_description":"Here is a free code snippet to create a JavaScript Onclick Fullscreen Image. You can view demo and download the source code.","og_url":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/","og_site_name":"CodeHim","article_publisher":"https:\/\/www.facebook.com\/codehimofficial","article_published_time":"2024-01-19T17:58:00+00:00","article_modified_time":"2024-01-22T10:59:07+00:00","og_image":[{"width":1280,"height":960,"url":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png","type":"image\/png"}],"author":"Asif Mughal","twitter_card":"summary_large_image","twitter_creator":"@CodeHimOfficial","twitter_site":"@CodeHimOfficial","twitter_misc":{"Written by":"Asif Mughal","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#article","isPartOf":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/"},"author":{"name":"Asif Mughal","@id":"https:\/\/codehim.com\/#\/schema\/person\/cc48f1dbe072a89a62a98171b7db43ed"},"headline":"JavaScript Onclick Fullscreen Image","datePublished":"2024-01-19T17:58:00+00:00","dateModified":"2024-01-22T10:59:07+00:00","mainEntityOfPage":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/"},"wordCount":248,"commentCount":0,"publisher":{"@id":"https:\/\/codehim.com\/#organization"},"image":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#primaryimage"},"thumbnailUrl":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png","articleSection":["Vanilla JavaScript"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/","url":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/","name":"JavaScript Onclick Fullscreen Image &#8212; CodeHim","isPartOf":{"@id":"https:\/\/codehim.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#primaryimage"},"image":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#primaryimage"},"thumbnailUrl":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png","datePublished":"2024-01-19T17:58:00+00:00","dateModified":"2024-01-22T10:59:07+00:00","description":"Here is a free code snippet to create a JavaScript Onclick Fullscreen Image. You can view demo and download the source code.","breadcrumb":{"@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#primaryimage","url":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png","contentUrl":"https:\/\/codehim.com\/wp-content\/uploads\/2023\/10\/JavaScript-Onclick-Fullscreen-Image.png","width":1280,"height":960,"caption":"JavaScript Onclick Fullscreen Image"},{"@type":"BreadcrumbList","@id":"https:\/\/codehim.com\/vanilla-javascript\/javascript-onclick-fullscreen-image\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codehim.com\/"},{"@type":"ListItem","position":2,"name":"Vanilla JavaScript","item":"https:\/\/codehim.com\/category\/vanilla-javascript\/"},{"@type":"ListItem","position":3,"name":"JavaScript Onclick Fullscreen Image"}]},{"@type":"WebSite","@id":"https:\/\/codehim.com\/#website","url":"https:\/\/codehim.com\/","name":"CodeHim","description":"Web Design Code Snippets","publisher":{"@id":"https:\/\/codehim.com\/#organization"},"alternateName":"Web Design Codes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codehim.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/codehim.com\/#organization","name":"CodeHim - Web Design Code & Scripts","url":"https:\/\/codehim.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codehim.com\/#\/schema\/logo\/image\/","url":"http:\/\/codehim.com\/wp-content\/uploads\/2023\/06\/Codehim-short-logo.jpg","contentUrl":"http:\/\/codehim.com\/wp-content\/uploads\/2023\/06\/Codehim-short-logo.jpg","width":280,"height":280,"caption":"CodeHim - Web Design Code & Scripts"},"image":{"@id":"https:\/\/codehim.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/codehimofficial","https:\/\/x.com\/CodeHimOfficial","https:\/\/www.instagram.com\/codehim\/","https:\/\/www.linkedin.com\/company\/codehim","https:\/\/co.pinterest.com\/codehim\/","https:\/\/www.youtube.com\/@codehim"]},{"@type":"Person","@id":"https:\/\/codehim.com\/#\/schema\/person\/cc48f1dbe072a89a62a98171b7db43ed","name":"Asif Mughal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codehim.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b25bfcd7d4e341c2c6f785a88d8ad2a4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b25bfcd7d4e341c2c6f785a88d8ad2a4?s=96&d=mm&r=g","caption":"Asif Mughal"},"description":"I code and create web elements for amazing people around the world. I like work with new people. New people new Experiences. I truly enjoy what I'm doing, which makes me more passionate about web development and coding. I am always ready to do challenging tasks whether it is about creating a custom CMS from scratch or customizing an existing system.","sameAs":["https:\/\/codehim.com"],"url":"https:\/\/codehim.com\/author\/asif-mughal\/"}]}},"views":3305,"_links":{"self":[{"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/posts\/9067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/comments?post=9067"}],"version-history":[{"count":0,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/posts\/9067\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/media\/9077"}],"wp:attachment":[{"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/media?parent=9067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/categories?post=9067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codehim.com\/wp-json\/wp\/v2\/tags?post=9067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}