Search code examples
javascriptjqueryhtmlcssfadein

Make an image appear from left to right using jquery


I am very close to achieving my goal. I am trying to create an image to appear from left to right using jQuery. If you look at my fiddle example You will see that there is a wavy line that appears from left to right. There is also a 2nd wavy line that stretches from left to right.

I want to remove the wavy line that stretches from left to right but keep the wavy line that appears smoothly from left to right

Can some one help me?

<html>

<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> - jsFiddle demo</title>


<script type="text/javascript" src="https://code.jquery.com/jquery-1.8.3.js"></script>


<style type="text/css">

body {
background-color: #003366;
margin: 0;
}

#myImg
{
top: 0px;
width:0px;
height:200px;
position:absolute;
left:0px;
background-image:url('http://www.tankten.com/codeimages/richtestslide2.png'); 
background-repeat:no-repeat;
opacity: 0.5;
z-index: 100;
}

#graphoverlaylines {
position:absolute;
left: 0px;
top: 0px;
z-index: 300;
}

#waveline {
top: 0px;
width:0px;
height: 200px;
position:absolute;
left: 0px;
background-image:url('http://www.tankten.com/codeimages/waveline.png'); 
background-repeat:no-repeat;
z-index: 250;

}

#baloon { width:381px; height:50px; position:absolute; left:0px; top:150px; z-index: 200;}
#baloon2 { width:381px; height:50px; position:absolute; left:0px; top:100px; z-index: 200;}
#baloon3 { width:381px; height:50px; position:absolute; left:0px; top:50px; z-index: 200;}

</style>

<script type="text/javascript">

$(function(){
$(document).ready(function() {
repeat();
});

function repeat()
{

$("#myImg").animate({
    top: '0px',
    width: '328px',
    height: '200px'
}, 6000,repeat);
$("#myImg").fadeOut(1000);
$("#myImg").animate({
    top: '0px',
    width:'0px',
    height: '200px',
}, 0);
$("#myImg").fadeIn(10);

}


});


$(function(){
$(document).ready(function() {
repeat2();
});

function repeat2()
{
$("#waveline").animate({
    top: '0px',
    width: '380px',
    height: '200px'
}, 6000,repeat2);
$("#myImg").fadeOut(1000);

$("#waveline").animate({
    top: '0px',
    width:'0px',
    height: '200px',
}, 10);
$("#waveline").fadeIn(100);

}


});


</script>

</head>


<body>

<div>
<img id="waveline" src="http://www.tankten.com/codeimages/waveline.png">
</div>


<div>
<img id="myImg" src="http://www.tankten.com/codeimages/richtestslide2.png">
</div>
<div>
<img id="graphoverlaylines" src="http://www.tankten.com/codeimages/graphoverlaylines.png">
</div>



<div id="baloon3"><img src="http://www.tankten.com/codeimages/richtest3.png" width="381" height="50px" /></div>
<div id="baloon2"><img src="http://www.tankten.com/codeimages/richtest2.png" width="381" height="50px" /></div>
<div id="baloon"><img src="http://www.tankten.com/codeimages/richtest.png" width="381" height="50px" /></div>



</body>
</html>

Solution

  • There is no need for jQuery to achieve this, CSS alone could do this.

    You could use the parent div as a mask by applying overflow: hidden on it and animate its width from 0 to 381px(image's width) using CSS @keyframes.

    body {
      background-color: #003366;
      margin: 0;
    }
    #myImg {
      top: 0px;
      width: 0px;
      height: 200px;
      position: absolute;
      left: 0px;
      background-image: url('http://www.tankten.com/codeimages/richtestslide2.png');
      background-repeat: no-repeat;
      opacity: 0.5;
      z-index: 100;
    }
    #graphoverlaylines {
      position: absolute;
      left: 0px;
      top: 0px;
      z-index: 300;
    }
    #waveline-container {
      position: relative;
      width: 0;
      height: 200px;
      overflow: hidden;
      -webkit-animation: leftToRight 3s ease-in infinite;
      animation: leftToRight 3s ease-in infinite;
    }
    #waveline {
      top: 0px;
      height: 200px;
      position: absolute;
      left: 0px;
      background-image: url('http://www.tankten.com/codeimages/waveline.png');
      background-repeat: no-repeat;
      z-index: 250;
    }
    #baloon {
      width: 381px;
      height: 50px;
      position: absolute;
      left: 0px;
      top: 150px;
      z-index: 200;
    }
    #baloon2 {
      width: 381px;
      height: 50px;
      position: absolute;
      left: 0px;
      top: 100px;
      z-index: 200;
    }
    #baloon3 {
      width: 381px;
      height: 50px;
      position: absolute;
      left: 0px;
      top: 50px;
      z-index: 200;
    }
    @-webkit-keyframes leftToRight {
      from {
        width: 0;
      }
      to {
        width: 381px;
      }
    }
    @keyframes leftToRight {
      from {
        width: 0;
      }
      to {
        width: 381px;
      }
    }
    <div id="waveline-container">
      <img id="waveline" src="http://www.tankten.com/codeimages/waveline.png">
    </div>
    <div>
      <img id="myImg" src="http://www.tankten.com/codeimages/richtestslide2.png">
    </div>
    <div>
      <img id="graphoverlaylines" src="http://www.tankten.com/codeimages/graphoverlaylines.png">
    </div>
    <div id="baloon3">
      <img src="http://www.tankten.com/codeimages/richtest3.png" width="381" height="50px" />
    </div>
    <div id="baloon2">
      <img src="http://www.tankten.com/codeimages/richtest2.png" width="381" height="50px" />
    </div>
    <div id="baloon">
      <img src="http://www.tankten.com/codeimages/richtest.png" width="381" height="50px" />
    </div>