{"id":8926,"date":"2014-08-09T05:03:33","date_gmt":"2014-08-08T19:03:33","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=8926"},"modified":"2025-08-13T12:04:04","modified_gmt":"2025-08-13T02:04:04","slug":"gimp-animated-gif-overlay-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/gimp-animated-gif-overlay-tutorial\/","title":{"rendered":"Gimp Animated GIF Overlay Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/GIMP\/AnimatedGIF\/\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Gimp Animated GIF Overlay Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/GIMP\/AnimatedGIF\/Gimp_AnimatedGif_Primer.jpg\" title=\"Gimp Animated Gif Overlay Tutorial\" \/><\/a><p class=\"wp-caption-text\">Gimp Animated GIF Overlay Tutorial<\/p><\/div>\n<p>We&#8217;ve come full circle with the <i>&#8220;overlay&#8221;<\/i> concept blog posts and come back to Gimp to create an <a target=\"_blank\" title='Animated GIF information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Graphics_Interchange_Format' rel=\"noopener\"><i>animated GIF<\/i><\/a> today where the animation is all bundled up into the one image resource called an &#8220;animated GIF&#8221; &#8230; so loved on <a target=\"_blank\" title='tumblr' href='http:\/\/www.tumblr.com' rel=\"noopener\">tumblr<\/a>, for instance.<\/p>\n<p>For this, deferred to an excellent tutorial <a target=\"_blank\" href='http:\/\/www.wikihow.com\/Create-an-Animated-GIF-Image-with-Gimp' title='Create an Animated GIF Image with Gimp' rel=\"noopener\">Create an Animated GIF Image with Gimp<\/a> &#8230; thanks heaps.   Today we use the tutorial to get the idea, then realize that an image with a layer for each animation photograph (the photographs of which were derived from <a href='#hjopt' title='HTML\/Javascript Overlay Primer Tutorial '>HTML\/Javascript Overlay Primer Tutorial<\/a>) can be used, in Gimp, to Export (or Save to) an animated GIF. We talked about layers in Gimp all that time ago, in this series of <i>&#8220;overlay&#8221;<\/i> theme blog posts with <a href='#glpt' title='Gimp Layers Primer Tutorial'>Gimp Layers Primer Tutorial<\/a>.  Another great way to do this, online, is via <a target=\"_blank\" title='Gifpal' href='http:\/\/www.gifpal.com' rel=\"noopener\">Gifpal<\/a>, and we have talked about <a target=\"_blank\" title='Gifpal' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Gifpal' rel=\"noopener\">this<\/a> before.<\/p>\n<p>So here is our <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/GIMP\/AnimatedGIF\/\" title=\"Click picture\" rel=\"noopener\">tutorial<\/a>.  At the end it was interesting that the original default speed between snapshots <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/GIMP\/AnimatedGIF\/overthetop.gif\" title='too fast' rel=\"noopener\">overthetop.gif<\/a> was too fast, and that a one second between slides produced <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/GIMP\/AnimatedGIF\/overtop.gif\" title='too fast' rel=\"noopener\">overtop.gif<\/a> as a better result.   That first learning phase resulted in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/GIMP\/AnimatedGIF\/y.gif\" title='Learning to created animated GIF in Gimp' rel=\"noopener\">y.gif<\/a><\/p>\n<p>Am sure you can imagine what the concept of a layer is with regard to image manipulation.   Within Gimp, for beginners not used to this concept, you find yourself underestimating and underplaying what can be achieved with the various layers of a multi-layered image.   In simplistic terms each layer has the functionality in Gimp to be treated as a whole new image, and this is the best way to think of it when trying to achieve what you want to achieve with Gimp.<\/p>\n<p>Link to Gimp &#8220;spiritual home&#8221; &#8230; <a target=\"_blank\" href='http:\/\/www.gimp.org' title='Gimp' rel=\"noopener\">here<\/a>.<br \/>\nLink to Gimp forum &#8230; <a target=\"_blank\" href='http:\/\/gimpforums.com\/' title='Google Geo Charts' rel=\"noopener\">here<\/a>.<\/p>\n<hr \/>\n<p id=\"Ajax Div Overlay Primer Tutorial\">Previous relevant <a target=\"_blank\" href='?p=8901' title='Ajax Div Overlay Primer Tutorial' rel=\"noopener\">Ajax Div Overlay Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a  href=\"http:\/\/www.rjmprogramming.com.au\/Ajax\/overlay\/ajaxagain.html?wording=Think%20the%20%3Cimg%20style=%22height:100%22%20src=weather.jpg%3E%20temperature%20wil%20be%20&#038;microsecs=1000\"><img decoding=\"async\" id='d_o_a' style=\"float:left;border: 15px solid pink;\"  alt=\"Ajax Div Overlay Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Ajax\/overlay\/Ajax_Iframe_Overlay.jpg\" title=\"Ajax Div Overlay Primer Tutorial\"    \/><\/a><p class=\"wp-caption-text\">Ajax Div Overlay Primer Tutorial<\/p><\/div>\n<p>Back to the recent overlay ideas (like <a href='#piopt' title='PHP Iframe Primer Tutorial'>PHP Iframe Overlay Primer Tutorial<\/a>) we&#8217;ve been doing lately at this blog, we want to show you today, the melding of HTML\/Javascript supervising <a target=\"_blank\" href='http:\/\/en.wikipedia.org\/wiki\/Ajax_%28programming%29' title='Ajax information from Wikipedia ... thanks' rel=\"noopener\">Ajax<\/a> PHP in an <a target=\"_blank\" href='http:\/\/www.w3schools.com\/tags\/tag_div.asp' title='Div information from w3schools ... thanks' rel=\"noopener\">div<\/a> HTML element.   This is a powerful combination because the things you do in the div don&#8217;t have to be restricted to that div&#8217;s client functionality, because it is also using (server-side) PHP, and you can go around checking for database things or file things or things that go bump in the night.<\/p>\n<p>Today&#8217;s overlay concept is to append (we&#8217;ve equated this to <i>&#8220;overlay&#8221;<\/i> today (is effectively the same)) a <i>counter<\/i> (starting at zero) at the end of an HTML p or div tag&#8217;s value, and today&#8217;s tutorial embeds within that p or div tag (ahead of the appended <i>counter<\/i>) an HTML img element defined in a get parameter <i>&#8220;wording=&#8221;<\/i> (but it could easily have been some words, just as the <i>counter<\/i> could have been an error message or status message &#8230; it is being derived by PHP, so many ideas are available to you.<\/p>\n<p>The major concepts, looking at the Ajax PHP supervised code&#8217;s point of view are:<\/p>\n<ul>\n<li>The understanding of the role of the Ajax <a target=\"_blank\" href='http:\/\/www.w3schools.com\/xml\/xml_http.asp' title='XMLHttpRequest' rel=\"noopener\">XMLHttpRequest<\/a> open URL should be couched in terms of Javascript onload code not happening, so HTML is of limited use to Ajax, otherwise I&#8217;d have shown you some to avoid the (intricacy of the) use of PHP<\/li>\n<li>The usual useful suspects $_GET[&#8216;bugalugs&#8217;] (get parameters) or $_POST[&#8216;bugalugs&#8217;] (post parameters)<\/li>\n<li>The PHP function <a target=\"_blank\" href='http:\/\/php.net\/manual\/en\/function.urldecode.php' title='PHP ueldecode() function' rel=\"noopener\">urldecode<\/a>, which is like the PHP equivalent function to Javascript&#8217;s decodeURIComponent, mentioned below &#8230; used to massage <a target=\"_blank\" href='http:\/\/au2.php.net\/reserved.variables.server.php' title='PHP isset information' rel=\"noopener\">$_SERVER[&#8216;QUERY_STRING&#8217;]<\/a><\/li>\n<li>Not used for our example &#8230; but to get your imaginative juices flowing &#8230; all the <a target=\"_blank\" href='http:\/\/php.net\/manual\/en\/function.file-exists.php' title='PHP isset information' rel=\"noopener\">file_exists<\/a>, <a target=\"_blank\" href='http:\/\/php.net\/manual\/en\/function.file-get-contents.php' title='PHP isset information' rel=\"noopener\">file_get_contents<\/a>, <a target=\"_blank\" href='http:\/\/php.net\/manual\/en\/function.file-put-contents.php' title='PHP isset information' rel=\"noopener\">file_put_contents<\/a> type of functionality, etcetera etcetera etcetera<\/li>\n<\/ul>\n<p>The major concepts, starting with 3 styling <i>&#8220;overlay&#8221;<\/i> favourites, with one extra styling idea, looking at the HTML &#8220;superviser of Ajax Div&#8221;&#8216;s point of view are:<\/p>\n<ul>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/cssref\/pr_pos_z-index.asp' title='z-index information from w3schools' rel=\"noopener\"><i>z-index<\/i><\/a><\/li>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/cssref\/pr_class_position.asp' title='position:absolute information from w3schools' rel=\"noopener\"><i>position:absolute<\/i><\/a><\/li>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/css\/css_image_transparency.asp' title='opacity information from w3schools' rel=\"noopener\"><i>opacity<\/i><\/a><\/li>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/css\/css_margin.asp' title='margin information from w3schools' rel=\"noopener\"><i>margin: 0 0 0 0<\/i><\/a><\/li>\n<li>For our case today with a div and a p HTML element combination, found that to encase within a div (position:absolute) became important regarding overlay alignment &#8211; in a similar view to our previous tutorial&#8217;s &#8220;same size for elements (optional idea, but good for ease of use)&#8221; concept (see further below)<\/li>\n<li>Analysis of any of its own get parameters via Javascript onload code such as <i>var wording = <a target=\"_blank\" href='http:\/\/www.w3schools.com\/jsref\/jsref_decodeuricomponent.asp' title='decodeURIComponent information from w3schools ... thanks' rel=\"noopener\">decodeURIComponent<\/a>(location.search.split(&#8220;wording=&#8221;)[1] ? location.search.split(&#8220;wording=&#8221;)[1].split(&#8220;&#038;&#8221;)[0] : &#8220;The thing I wanted to say&#8221;); <\/i><\/li>\n<li>The use of Javascript <a target=\"_blank\" href='http:\/\/www.w3schools.com\/jsref\/met_win_setinterval.asp' title='Javascript setInterval method' rel=\"noopener\">setInterval()<\/a> method<\/li>\n<li>Unusually, because we are using a timer, we use the <a target=\"_blank\" href='http:\/\/www.w3schools.com\/jsref\/event_onclick.asp' title='Information about onclick event by w3schools ... thanks' rel=\"noopener\">onclick<\/a> event rather than the usual (interactive dynamic) <a target=\"_blank\" href='http:\/\/www.w3schools.com\/jsref\/event_onmouseover.asp' title='Information about onmouseover event by w3schools ... thanks' rel=\"noopener\">onmouseover<\/a> event to control the use of Ajax functionality<\/li>\n<li>Global variables make life simpler &#8230; the <i>counter<\/i> variable is global<\/li>\n<\/ul>\n<p>Here is some HTML\/Javascript supervisory programming source code you could call <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/Ajax\/overlay\/ajaxagain.html_GETME' title='ajaxagain.html' rel=\"noopener\">ajaxagain.html<\/a> and here is some (Ajax) PHP supervised programming source code you could call <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/Ajax\/overlay\/ajaxagain.php_GETME' title='ajaxgain.php' rel=\"noopener\">ajaxagain.php<\/a> and here is a <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/Ajax\/overlay\/ajaxagain.html' title='ajaxagain.html with no get parameters' rel=\"noopener\">live run<\/a> (with no get parameters) and here is a <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/Ajax\/overlay\/ajaxagain.html?wording=%3Cimg%20style=%22height:100%22%20src=weather.jpg%3E&#038;microsecs=1000' title='ajaxagain.html with get parameters' rel=\"noopener\">live run<\/a> (showing the use of some get parameters).<\/p>\n<p>Hope you get something out of today&#8217;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Ajax\/overlay\/Ajax_Iframe_Overlay.jpg\" rel=\"noopener\">tutorial<\/a>.<\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>The tutorial picture today features the <a target=\"_blank\" href='http:\/\/www.mozilla.org\/en-US\/firefox\/new\/' title='Firefox home page' rel=\"noopener\">Firefox<\/a> web browser and a very useful add-on called <a target=\"_blank\" title='Firebug home page' href='https:\/\/getfirebug.com\/' rel=\"noopener\">Firebug<\/a> which you may want more information about <a target=\"_blank\" title='Firebug tutorials at this blog' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Firebug' rel=\"noopener\">here<\/a>, which is commonly used to debug client-side Javascript and HTML.   As for today&#8217;s usage, Firebug is also extremely useful in deconstructing how a web page was created.   The other simple wonderful tool for this is the web browser&#8217;s equivalent menu command like View->Page Source (or sometimes equivalent of right-click Page Source).   Firebug has a sister product called <a target=\"_blank\" title='FirePHP home page' href='http:\/\/www.firephp.org\/' rel=\"noopener\">FirePHP<\/a> which helps debug server-side PHP and Ajax <a target=\"_blank\" title='FirePHP tutorials at this blog' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Firephp' rel=\"noopener\">work<\/a>.<\/p>\n<hr \/>\n<p id='piopt'>Previous <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=8878' title='PHP Iframe Overlay Primer Tutorial' rel=\"noopener\">PHP Iframe Overlay Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a  href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/PHP\/iframe\/Idea.m4v\"><img decoding=\"async\" id='d_o_a' style=\"float:left;border: 15px solid pink;\"  alt=\"PHP Iframe Overlay Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/PHP\/iframe\/PHP_Iframe_Overlay.jpg\" title=\"PHP Iframe Overlay Primer Tutorial\"    \/><\/a><p class=\"wp-caption-text\">PHP Iframe Overlay Primer Tutorial<\/p><\/div>\n<p>Back to the recent overlay ideas (like <a href='#hjopt' title='HTML\/Javascript Overlay Primer Tutorial'>HTML\/Javascript Overlay Primer Tutorial<\/a>) we&#8217;ve been doing lately at this blog, we want to show you today, the melding of HTML\/Javascript supervising PHP in an <a target=\"_blank\" href='http:\/\/www.w3schools.com\/tags\/tag_iframe.asp' title='Iframe information from w3schools ... thanks' rel=\"noopener\">iframe<\/a> HTML element.   This is a powerful combination because the things you do in the iframe don&#8217;t have to be restricted to that iframe&#8217;s client functionality, because it is also using (server-side) PHP, and you can go around checking for database things or file things or things that go bump in the night.<\/p>\n<p>Today&#8217;s overlay concept is to append (we&#8217;ve equated this to <i>&#8220;overlay&#8221;<\/i> today (is effectively the same)) a <i>counter<\/i> (starting at zero) at the end of an HTML p tag&#8217;s value, and today&#8217;s tutorial embeds within that p tag (ahead of the appended <i>counter<\/i>) an HTML img element defined in a get parameter <i>&#8220;wording=&#8221;<\/i> (but it could easily have been some words, just as the <i>counter<\/i> could have been an error message or status message &#8230; it is being derived by PHP, so many ideas are available to you &#8230; look to changing the lines of PHP code (you&#8217;ll see later) that involve <a target=\"_blank\" href='http:\/\/php.net\/manual\/en\/function.isset.php' title='PHP isset information' rel=\"noopener\"><i>isset()<\/i><\/a> to tailor for your needs).<\/p>\n<p>The major concepts, looking at the PHP supervised iframe&#8217;s point of view are:<\/p>\n<ul>\n<li>The parent&#8217;s HTML Javascript body DOM object is available via <i>parent.document.body.innerHTML<\/i><\/li>\n<li>The parent&#8217;s HTML Javascript DOM object (eg. bugalugs ID is an HTML p tag) element content is available via <i>parent.document.getElementById(&#8216;bugalugs&#8217;).innerHTML<\/i><\/li>\n<li>The parent&#8217;s HTML Javascript DOM object (eg. bugalugs ID is an HTML input tag) element content is available via <i>parent.document.getElementById(&#8216;bugalugs&#8217;).value<\/i><\/li>\n<li>The usual useful suspects $_GET[&#8216;bugalugs&#8217;] (get parameters) or $_POST[&#8216;bugalugs&#8217;] (post parameters)<\/li>\n<li>Not used for our example &#8230; but to get your imaginative juices flowing &#8230; all the <a target=\"_blank\" href='http:\/\/au2.php.net\/reserved.variables.server.php' title='PHP isset information' rel=\"noopener\">$_SERVER[]<\/a> stuff, <a target=\"_blank\" href='http:\/\/php.net\/manual\/en\/function.file-exists.php' title='PHP isset information' rel=\"noopener\">file_exists<\/a>, <a target=\"_blank\" href='http:\/\/php.net\/manual\/en\/function.file-get-contents.php' title='PHP isset information' rel=\"noopener\">file_get_contents<\/a>, <a target=\"_blank\" href='http:\/\/php.net\/manual\/en\/function.file-put-contents.php' title='PHP isset information' rel=\"noopener\">file_put_contents<\/a> etcetera etcetera etcetera<\/li>\n<\/ul>\n<p>The major concepts, starting with 3 styling <i>&#8220;overlay&#8221;<\/i> favourites, with one extra styling idea, looking at the HTML &#8220;superviser of PHP iframe&#8221;&#8216;s point of view are:<\/p>\n<ul>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/cssref\/pr_pos_z-index.asp' title='z-index information from w3schools' rel=\"noopener\"><i>z-index<\/i><\/a><\/li>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/cssref\/pr_class_position.asp' title='position:absolute information from w3schools' rel=\"noopener\"><i>position:absolute<\/i><\/a><\/li>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/css\/css_image_transparency.asp' title='opacity information from w3schools' rel=\"noopener\"><i>opacity<\/i><\/a><\/li>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/css\/css_margin.asp' title='margin information from w3schools' rel=\"noopener\"><i>margin: 0 0 0 0<\/i><\/a><\/li>\n<li>For our case today with an iframe and a p HTML element combination, found that to encase within a div (position:absolute) became important regarding overlay alignment &#8211; in a similar view to our previous tutorial&#8217;s &#8220;same size for elements (optional idea, but good for ease of use)&#8221; concept (see further below)<\/li>\n<li>Analysis of any of its own get parameters via Javascript onload code such as <i>var wording = <a target=\"_blank\" href='http:\/\/www.w3schools.com\/jsref\/jsref_decodeuricomponent.asp' title='decodeURIComponent information from w3schools ... thanks' rel=\"noopener\">decodeURIComponent<\/a>(location.search.split(&#8220;wording=&#8221;)[1] ? location.search.split(&#8220;wording=&#8221;)[1].split(&#8220;&#038;&#8221;)[0] : &#8220;The thing I wanted to say&#8221;); <\/i><\/li>\n<li>The use of Javascript <a target=\"_blank\" href='http:\/\/www.w3schools.com\/jsref\/met_win_setinterval.asp' title='Javascript setInterval method' rel=\"noopener\">setInterval()<\/a> method<\/li>\n<li>Global variables make life simpler &#8230; the <i>counter<\/i> variable is global<\/li>\n<\/ul>\n<p>Here is some HTML\/Javascript supervisory programming source code you could call <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/PHP\/iframe\/baseagain.html_GETME' title='baseagain.html' rel=\"noopener\">baseagain.html<\/a> and here is some PHP supervised programming source code you could call <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/PHP\/iframe\/baseagain.php_GETME' title='baseagain.php' rel=\"noopener\">baseagain.php<\/a> and here is a <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/PHP\/iframe\/baseagain.html' title='baseagain.html with no get parameters' rel=\"noopener\">live run<\/a> (with no get parameters) and here is a <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/PHP\/iframe\/baseagain.html?displayiframe=&#038;wording=%3Cimg%20style=%22height:100%22%20src=weather.jpg%3E&#038;microsecs=1000' title='baseagain.html with get parameters' rel=\"noopener\">live run<\/a> (showing the use of some get parameters).<\/p>\n<p>Hope you get something out of today&#8217;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/PHP\/iframe\/Idea.m4v\" rel=\"noopener\">tutorial<\/a>.<\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>The tutorial picture today features the <a target=\"_blank\" href='http:\/\/www.mozilla.org\/en-US\/firefox\/new\/' title='Firefox home page' rel=\"noopener\">Firefox<\/a> web browser and a very useful add-on called <a target=\"_blank\" title='Firebug home page' href='https:\/\/getfirebug.com\/' rel=\"noopener\">Firebug<\/a> which you may want more information about <a target=\"_blank\" title='Firebug tutorials at this blog' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Firebug' rel=\"noopener\">here<\/a>, which is commonly used to debug client-side Javascript and HTML.   As for today&#8217;s usage, Firebug is also extremely useful in deconstructing how a web page was created.   The other simple wonderful tool for this is the web browser&#8217;s equivalent menu command like View->Page Source (or sometimes equivalent of right-click Page Source).   Firebug has a sister product called <a target=\"_blank\" title='FirePHP home page' href='http:\/\/www.firephp.org\/' rel=\"noopener\">FirePHP<\/a> which helps debug server-side PHP and Ajax <a target=\"_blank\" title='FirePHP tutorials at this blog' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Firephp' rel=\"noopener\">work<\/a>.<\/p>\n<hr \/>\n<p id='hjopt'>Previous relevant <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=8720' title='HTML\/Javascript Overlay Primer Tutorial' rel=\"noopener\">HTML\/Javascript Overlay Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a  href=\"#\" onclick=\"do_our_animation();\"><img decoding=\"async\" id='d_o_a' style=\"float:left;border: 15px solid pink;\"  alt=\"HTML\/Javascript Overlay Primer Tutorial ... click shows animation which is best seen with window scrunched up to show no deep red background colour ahead of clicking\" src=\"http:\/\/www.rjmprogramming.com.au\/Javascript\/OverlayAnimation\/do_our_animation.jpg\" title=\"HTML\/Javascript Overlay Primer Tutorial... click shows animation which is best seen with window scrunched up to show no deep red background colour ahead of clicking\"  onmouseover=\" document.getElementById('d_o_a').src = document.getElementById('d_o_a').src.replace('.jpg','.PNG').replace('.png','.GIF').replace( '.gif','.jpg').replace( '.PNG','.png').replace( '.GIF','.gif');    \" \/><\/a><p class=\"wp-caption-text\">HTML\/Javascript Overlay Primer Tutorial... click shows animation which is best seen with window scrunched up to show no deep red background colour ahead of clicking<\/p><\/div>\n<p><script type=\"text\/javascript\">function do_our_animation() {\n   var topis = 0, leftis = 0, widthis = 940, heightis = 198, cimage = \"\", nextis = eval((Math.abs(0) + 1) % 12);\n   \/\/alert(document.body.innerHTML.indexOf('my' + 'overlay'));\n   if (document.body.innerHTML.indexOf('my' + 'overlay') == -1) {\n    if (document.getElementById(\"mytopimage\").top == undefined) {\n     topis = document.getElementById(\"mytopimage\").clientTop;\n    } else {\n     topis = document.getElementById(\"mytopimage\").top;\n    }\n    if (document.getElementById(\"mytopimage\").left == undefined) {\n     leftis = document.getElementById(\"mytopimage\").clientLeft;\n    } else {\n     leftis = document.getElementById(\"mytopimage\").left;\n    }\n    if (document.getElementById(\"mytopimage\").width == undefined) {\n     widthis = document.getElementById(\"mytopimage\").clientWidth;\n    } else {\n     widthis = document.getElementById(\"mytopimage\").width;\n    }\n    if (document.getElementById(\"mytopimage\").height == undefined) {\n     heightis = document.getElementById(\"mytopimage\").clientHeight;\n    } else {\n     heightisis = document.getElementById(\"mytopimage\").height;\n    }\n    heightis = 285;\n    \/\/alert(topis + \" \" + leftis + \" \" + widthis + \" \" + heightis);\n    \/\/cimage = \"<\" + \"img width='\" + eval(widthis + 40) + \"' height='\" + eval(heightis + 10) + \"' alt='Our animation' \";\n    cimage = \"<\" + \"img onclick=' location.href=\" + '\"' + \"http:\/\/rjmprogramming.com.au\/wordpress\" + '\"' + \";' width='100%' height='\" + eval(heightis + 10) + \"' alt='Our animation' \";\n    cimage = cimage + \" src='overthetop\" + eval(Math.abs(nextis)) + \".png' id='my\" + \"overlay' style=' z-index:999; opacity:0.7; position:absolute;\";\n    nextis = eval((Math.abs(nextis) + 1) % 12);\n    cimage = cimage + \" top:\" + topis + \"; left:\" + leftis + \";'\" + \">\" + \"<\" + \"\/img\" + \">\" + \"<\" + \"input type='hidden' id='nextis' title='0' style='display:none;' value='\" + nextis + \"'\" + \">\" + \"<\" + \"\/input\" + \">\";\n    \/\/alert(cimage);\n    \/\/document.title = cimage;\n    document.getElementById(\"site-title\").innerHTML = cimage + document.getElementById(\"site-title\").innerHTML;\n    \/\/window.scroll.left = 0;\n    document.body.style.backgroundPosition=\"0% 0%\";\n   } else {\n    nextis = document.getElementById(\"nextis\").value;\n    document.getElementById(\"my\" + \"overlay\").src = \"overthetop\" + eval(nextis) + \".png\";\n    nextis = eval((Math.abs(nextis) + 1) % 12);\n    if (eval(nextis) == 0) {\n       if (document.getElementById(\"nextis\").title.length < 5) {\n         nextis = \"7\";\n         document.getElementById(\"nextis\").title = document.getElementById(\"nextis\").title + \"0\";\n       } else {\n         document.getElementById(\"nextis\").title = \"0\";\n       }\n    }\n    document.getElementById(\"nextis\").value = nextis;\n   }\n   setTimeout(do_our_animation, 1000);\n}<\/script>Today we're continuing on with the HTML <i>overlay<\/i> ideas and showed, yesterday, with <a target=\"_blank\" title='HTML\/CSS Overlay Primer Tutorial' href='#hcopt' rel=\"noopener\">HTML\/CSS Overlay Primer Tutorial<\/a>, some CSS to do with the idea of overlaying HTML elements, and today we give Javascript a turn, and show some animation as well, using the Javascript function <a target=\"_blank\" href='http:\/\/www.w3schools.com\/jsref\/met_win_settimeout.asp' title='Javascript setTimeout information from w3schools' rel=\"noopener\"><i>setTimeout<\/i><\/a> used in a recursive way (you might remember this being important with <a target=\"_blank\" title='HTML\/Javascript Canvas Rummy Card Game Primer Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=7092' rel=\"noopener\">HTML\/Javascript Canvas Rummy Card Game Primer Tutorial<\/a>).  It features a cheesy welcome that moves down and out of view to become an even more cheesy <a target=\"_blank\" href='http:\/\/www.tutorialspoint.com\/html\/html_marquee_tag.htm' title='HTML marquee tag information' rel=\"noopener\">marquee<\/a> style <i>Eat at Joe's<\/i>.  We talked a bit about this approach with <a target=\"_blank\" title='Javascript in Your WordPress Post Primer Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=7092' rel=\"noopener\">Javascript in Your WordPress Post Primer Tutorial<\/a> too.<\/p>\n<p>Try a <a  href=\"#\" onclick=\"do_our_animation();\">live run<\/a> click, but please note that the click shows animation which is best seen with your web browser window scrunched up to show no deep red background colour ahead of clicking ... some room for your improvement!<\/p>\n<p>The prototype HTML and Javascript source code you could call <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/Javascript\/OverlayAnimation\/do_our_animation.html_GETME' title='do_our_animation.html' rel=\"noopener\">do_our_animation.html<\/a> and its <i>\"proof of concept\"<\/i> unit test <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/Javascript\/OverlayAnimation\/do_our_animation.html' title='do_our_animation.html' rel=\"noopener\">live run<\/a> will show you the background to the idea, and it may pan out that you might want to contrast that code with the WordPress post code below, because it changed quite a bit to do with WordPress blog styling for the TwentyTen theme we use on this blog (will bid you <i>happy blogging<\/i> for now ... chow ... after the <i>Did you know?<\/i>, that is):<\/p>\n<p><codeblock><i>&lt;script type=\"text\/javascript\"&gt;function do_our_animation() {<br \/>\n   var topis = 0, leftis = 0, widthis = 940, heightis = 198, cimage = \"\", nextis = eval((Math.abs(0) + 1) % 12);<br \/>\n   if (document.body.innerHTML.indexOf('my' + 'overlay') == -1) {<br \/>\n    if (document.getElementById(\"mytopimage\").top == undefined) {<br \/>\n     topis = document.getElementById(\"mytopimage\").clientTop;<br \/>\n    } else {<br \/>\n     topis = document.getElementById(\"mytopimage\").top;<br \/>\n    }<br \/>\n    if (document.getElementById(\"mytopimage\").left == undefined) {<br \/>\n     leftis = document.getElementById(\"mytopimage\").clientLeft;<br \/>\n    } else {<br \/>\n     leftis = document.getElementById(\"mytopimage\").left;<br \/>\n    }<br \/>\n    if (document.getElementById(\"mytopimage\").width == undefined) {<br \/>\n     widthis = document.getElementById(\"mytopimage\").clientWidth;<br \/>\n    } else {<br \/>\n     widthis = document.getElementById(\"mytopimage\").width;<br \/>\n    }<br \/>\n    if (document.getElementById(\"mytopimage\").height == undefined) {<br \/>\n     heightis = document.getElementById(\"mytopimage\").clientHeight;<br \/>\n    } else {<br \/>\n     heightisis = document.getElementById(\"mytopimage\").height;<br \/>\n    }<br \/>\n    heightis = 285;<br \/>\n    \/\/alert(topis + \" \" + leftis + \" \" + widthis + \" \" + heightis);<br \/>\n    \/\/cimage = \"&lt;\" + \"img width='\" + eval(widthis + 40) + \"' height='\" + eval(heightis + 10) + \"' alt='Our animation' \";<br \/>\n    cimage = \"&lt;\" + \"img onclick=' location.href=\" + '\"' + \"http:\/\/rjmprogramming.com.au\/wordpress\" + '\"' + \";' width='100%' height='\" + eval(heightis + 10) + \"' alt='Our animation' \";<br \/>\n    cimage = cimage + \" src='overthetop\" + eval(Math.abs(nextis)) + \".png' id='my\" + \"overlay' style=' z-index:999; opacity:0.7; position:absolute;\";<br \/>\n    nextis = eval((Math.abs(nextis) + 1) % 12);<br \/>\n    cimage = cimage + \" top:\" + topis + \"; left:\" + leftis + \";'\" + \"&gt;\" + \"&lt;\" + \"\/img\" + \"&gt;\" + \"&lt;\" + \"input type='hidden' id='nextis' title='0' style='display:none;' value='\" + nextis + \"'\" + \"&gt;\" + \"&lt;\" + \"\/input\" + \"&gt;\";<br \/>\n    \/\/alert(cimage);<br \/>\n    \/\/document.title = cimage;<br \/>\n    document.getElementById(\"site-title\").innerHTML = cimage + document.getElementById(\"site-title\").innerHTML;<br \/>\n    \/\/window.scroll.left = 0;<br \/>\n    document.body.style.backgroundPosition=\"0% 0%\";<br \/>\n   } else {<br \/>\n    nextis = document.getElementById(\"nextis\").value;<br \/>\n    document.getElementById(\"my\" + \"overlay\").src = \"overthetop\" + eval(nextis) + \".png\";<br \/>\n    nextis = eval((Math.abs(nextis) + 1) % 12);<br \/>\n    if (eval(nextis) == 0) {<br \/>\n       if (document.getElementById(\"nextis\").title.length < 5) {\n         nextis = \"7\";\n         document.getElementById(\"nextis\").title = document.getElementById(\"nextis\").title + \"0\";\n       } else {\n         document.getElementById(\"nextis\").title = \"0\";\n       }\n    }\n    document.getElementById(\"nextis\").value = nextis;\n   }\n   setTimeout(do_our_animation, 1000);\n}&lt;\/script&gt;<\/i><\/codeblock><\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>The tutorial picture today features the <a target=\"_blank\" href='http:\/\/www.mozilla.org\/en-US\/firefox\/new\/' title='Firefox home page' rel=\"noopener\">Firefox<\/a> web browser and a very useful add-on called <a target=\"_blank\" title='Firebug home page' href='https:\/\/getfirebug.com\/' rel=\"noopener\">Firebug<\/a> which you may want more information about <a target=\"_blank\" title='Firebug tutorials at this blog' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Firebug' rel=\"noopener\">here<\/a>, which is commonly used to debug client-side Javascript and HTML.   As for today's usage, Firebug is also extremely useful in deconstructing how a web page was created.   The other simple wonderful tool for this is the web browser's equivalent menu command like View->Page Source (or sometimes equivalent of right-click Page Source).   Firebug has a sister product called <a target=\"_blank\" title='FirePHP home page' href='http:\/\/www.firephp.org\/' rel=\"noopener\">FirePHP<\/a> which helps debug server-side PHP and Ajax <a target=\"_blank\" title='FirePHP tutorials at this blog' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Firephp' rel=\"noopener\">work<\/a>.<\/p>\n<hr \/>\n<p id=\"hcopt\">Previous relevant <a target=\"_blank\" title='HTML\/CSS Overlay Primer Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=8702' rel=\"noopener\">HTML\/CSS Overlay Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/zindex_positionabsolute_overlay.html\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"HTML\/CSS Overlay Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/zindex_positionabsolute_overlay.jpg\" title=\"HTML\/CSS Overlay Primer Tutorial\" \/><\/a><p class=\"wp-caption-text\">HTML\/CSS Overlay Primer Tutorial<\/p><\/div>\n<p>A previous <a target=\"_blank\" href=\"#glpt\" rel=\"noopener\">Gimp Layers Primer Tutorial<\/a> (as shown below) gave you an insight into the massive possibilities of using a sophisticated image editor and use layers with various amounts of transparency, especially suited to use with png image files, and today we build on that idea to present another idea along those same wavelengths (\"permanent wave\" for those having a bad hair day or have a hand that wants to <a target=\"_blank\" href='https:\/\/www.flickr.com\/photos\/alextsolomon\/2708602175\/' title='the hand that waves' rel=\"noopener\">wave<\/a> ... don't we all?!) in the use of HTML and CSS and use the concepts of:<\/p>\n<ul>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/cssref\/pr_pos_z-index.asp' title='z-index information from w3schools' rel=\"noopener\"><i>z-index<\/i><\/a><\/li>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/cssref\/pr_class_position.asp' title='position:absolute information from w3schools' rel=\"noopener\"><i>position:absolute<\/i><\/a><\/li>\n<li><a target=\"_blank\" href='http:\/\/www.w3schools.com\/css\/css_image_transparency.asp' title='opacity information from w3schools' rel=\"noopener\"><i>opacity<\/i><\/a><\/li>\n<li>same size for elements (optional idea, but good for ease of use)<\/li>\n<\/ul>\n<p>In that previous <a target=\"_blank\" href=\"#glpt\" rel=\"noopener\">Gimp Layers Primer Tutorial<\/a> (as shown below) transparency (or its obverse, opacity) can be used to have the one image achieve several \"ends\" (ie. purposes).  The same thing happens today by overlaying an image on top of a Google Line Chart plotting a parabola (presented in an iframe, whose dimensions are arranged to match the dimensions and positioning of our image ... hence the <i>\"optional idea\"<\/i> above), to have the image content help out the Google chart, to clarify axis names and hence, help refine the purpose of the chart.<\/p>\n<p>In that previous <a target=\"_blank\" href=\"#glpt\" rel=\"noopener\">Gimp Layers Primer Tutorial<\/a> (as shown below) we mentioned that lots of those classic \"Photoshopping\" techniques can be achieved in Gimp, and some other <a target=\"_blank\" title='Gimp tutorials here' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?cat=4' rel=\"noopener\">tutorials<\/a> at this blog touch on that.  What we can say today is that CSS can help out as well, to achieve similar ends, or you can adopt a combination of approaches, perhaps.<\/p>\n<p>In that previous <a target=\"_blank\" href=\"#glpt\" rel=\"noopener\">Gimp Layers Primer Tutorial<\/a> (as shown below) we imagined what the concept of a layer was with regard to image manipulation.   Today we see it in terms of layering HTML elements using the CSS z-index idea ... the bigger the z-index the closer the \"layer\" is to the viewer's eye (read about the Earth <a target=\"_blank\" title='Earth geoid information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Geoid' rel=\"noopener\">geoid<\/a> here and as a space traveller you'd be tempted to give Mt Everest a z-index of about <i>z-index:8000<\/i> and the Dead Sea a z-index of <i>z-index:-418<\/i> ... except that Mt Everest doesn't sit on top of the Dead Sea, the last time I did the R&D ... <a target=\"_blank\" title=\"Nepal and Isreal's Mt Everest and Dead Sea stamp\" href='https:\/\/www.google.com.au\/search?q=Mt+Everest+on+top+of+the+Dead+Sea+stamp&#038;client=firefox-a&#038;hs=BJb&#038;rls=org.mozilla:en-US:official&#038;channel=sb&#038;tbm=isch&#038;imgil=MxRg2pFhmpdZOM%253A%253Bhttps%253A%252F%252Fencrypted-tbn0.gstatic.com%252Fimages%253Fq%253Dtbn%253AANd9GcT7YagMzhRzEt7mrELHeg7_LYMAEf_lXiy71C01EMHwKHCP_LBQfA%253B286%253B379%253ByEc78MPZuV2IMM%253Bhttp%25253A%25252F%25252Fwww.mountainstamp.com%25252FIsrael%2525252520pages%25252FDead%2525252520Sea.html&#038;source=iu&#038;usg=__r_0izsD1amxdL12Pix2GC5wKRiw%3D&#038;sa=X&#038;ei=uRDYU-HfBcOj8AXuwIHYBw&#038;ved=0CCgQ9QEwAw&#038;biw=1280&#038;bih=673#facrc=_&#038;imgdii=_&#038;imgrc=MxRg2pFhmpdZOM%253A%3ByEc78MPZuV2IMM%3Bhttp%253A%252F%252Fwww.mountainstamp.com%252FNepal%252520picture%252FNepal%2525202012%252520Mount%252520Everest%252520Dead%252520Sea%252520stamp%252520joint%252520issue%252520Nepal%252520and%252520Israel.jpg%3Bhttp%253A%252F%252Fwww.mountainstamp.com%252FIsrael%252520pages%252FDead%252520Sea.html%3B286%3B379' rel=\"noopener\">mind you?!<\/a> ... <i>z-index:<strike>8000<\/strike>8848<\/i> vs <i>z-index:<strike>-418<\/strike>-422<\/i>), and then we allow opacities less than one (one is opaque, zero is transparent) to make room for multiple layer see through effects.   The use of <i>position:absolute<\/i> opens the door to the web browser sort of being fooled into doing something that doesn't come naturally to it ... overlay HTML elements (possibly) on top of each other ... another CSS parameter you may be interested in for overlay is the use of negative values for <a target=\"_blank\" href='http:\/\/www.w3schools.com\/cssref\/pr_margin-top.asp' title='margin-top information from w3schools' rel=\"noopener\"><i>margin-top<\/i><\/a>.<\/p>\n<p>Link to some HTML and CSS programming source code is here and you could call <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/zindex_positionabsolute_overlay.html_GETME\" title=\"zindex_positionabsolute_overlay.html\" rel=\"noopener\">zindex_positionabsolute_overlay.html<\/a> and try the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/zindex_positionabsolute_overlay.html\" title=\"Live Run\" rel=\"noopener\">live run<\/a> while you are at it.  In isolation the overlay is pretty simple and can be called  <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/xaxis.png\" title=\"xaxis.png\" rel=\"noopener\">xaxis.png<\/a><\/p>\n<hr \/>\n<p id=\"glpt\">Previous relevant <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=5366\" rel=\"noopener\">Gimp Layers Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/GIMP\/Layers\/GimpLayers.m4v\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Gimp Layers Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/GIMP\/Layers\/GimpLayers.jpg\" title=\"Gimp Layers Primer Tutorial\" \/><\/a><p class=\"wp-caption-text\">Gimp Layers Primer Tutorial<\/p><\/div>\n<p>Here is a tutorial that gives you an insight into the massive possibilities of using a sophisticated image editor and use layers with various amounts of transparency, especially suited to use with png image files.<\/p>\n<p>Transparency (or its obverse, opacity) can be used to have the one image achieve several \"ends\" (ie. purposes).  Although it is a bit of a clumsy example in the tutorial, you can see that the technique can be used for artistic purposes ... often called \"Photoshopping\" (named after the more famous, and also brilliant, rival product, Photoshop).<\/p>\n<p>Lots of those classic \"Photoshopping\" techniques can be achieved in Gimp, and some other <a target=\"_blank\" title='Gimp tutorials here' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?cat=4' rel=\"noopener\">tutorials<\/a> at this blog touch on that.<\/p>\n<p>Am sure you can imagine what the concept of a layer is with regard to image manipulation.   Within Gimp, for beginners not used to this concept, you find yourself underestimating and underplaying what can be achieved with the various layers of a multi-layered image.   In simplistic terms each layer has the functionality in Gimp to be treated as a whole new image, and this is the best way to think of it when trying to achieve what you want to achieve with Gimp.<\/p>\n<p>Link to Gimp \"spiritual home\" ... <a target=\"_blank\" href='http:\/\/www.gimp.org' title='Gimp' rel=\"noopener\">here<\/a>.<br \/>\nLink to Gimp forum ... <a target=\"_blank\" href='http:\/\/gimpforums.com\/' title='Google Geo Charts' rel=\"noopener\">here<\/a>.<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d5366' onclick='var dv=document.getElementById(\"d5366\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?cat=4\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d5366' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d8702' onclick='var dv=document.getElementById(\"d8702\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=CSS\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d8702' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#8720' onclick='var dv=document.getElementById(\"d8720\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Javascript\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d8720' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#8878' onclick='var dv=document.getElementById(\"d8878\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=PHP\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d8878' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#8901' onclick='var dv=document.getElementById(\"d8901\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Ajax\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d8901' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d8926' onclick='var dv=document.getElementById(\"d8926\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?cat=4\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d8926' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;ve come full circle with the &#8220;overlay&#8221; concept blog posts and come back to Gimp to create an animated GIF today where the animation is all bundled up into the one image resource called an &#8220;animated GIF&#8221; &#8230; so loved &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/gimp-animated-gif-overlay-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,12,16,30,37],"tags":[83,84,490,491,590,894,931,1315,1319],"class_list":["post-8926","post","type-post","status-publish","format-standard","hentry","category-animation","category-elearning","category-gimp","category-photography","category-tutorials","tag-animated-gif","tag-animation-2","tag-gifpal","tag-gimp","tag-image","tag-overlay","tag-photography","tag-tumblr","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/8926"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=8926"}],"version-history":[{"count":1,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/8926\/revisions"}],"predecessor-version":[{"id":69460,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/8926\/revisions\/69460"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=8926"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=8926"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=8926"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}