javascript - jQuery: make line longer as you scroll -


i'm having trouble getting math right.
on gray .wrap section, trying have line start growing when circle comes view.
right now, have hacky solution: if window gets larger , smaller(vertically), you'll see line grow @ same spot regardless, , not when circle comes view.

http://jsfiddle.net/u5c51ubk/58/

$(document).on('scroll', function(e) {     var ht = $('#vertical-divider').offset().top,         hh = $('#vertical-divider').outerheight(),         wh = $(window).height(),         ws = $(this).scrolltop(),         topofbox      console.log((ht-wh) , ws);              $('#vertical-divider').css('height', '' + (document.body.scrolltop - 300) + 'px');  });   
.section{    height:100vh;  }  #first{  background:red;  }  .wrap {  width:100%;  position: relative;    background:gray;        }    #circle {    margin-top:20px;  	-webkit-border-radius: 50%;  	   -moz-border-radius: 50%;  	        border-radius: 50%;  	width: 11px;  	height: 11px;   	border: 1px solid #f04948;  	position: absolute;  	top: 0;  	left: 50%;  	margin-left: -6px;  }  .ok{  margin:0 auto;  text-align:center;  }  #vertical-divider {    max-height:500px;    margin-top:20px;  	width: 2px;      height: 50px;  	position: absolute;  	left: 50%;  	top: 12px;  	border-left: 3px solid black;  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <div class="section" id="first">      </div>  <div class="wrap section">        <span id="circle"></span>  <div class="ok">hi, name jason</div>  <span id="vertical-divider"></span>  <div class="osk">hi, name jason</div>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p><p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p><p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p><p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p>  <p>&nbsp;</p><p>&nbsp;</p>        </div>

@snorlax implemented jsfiddle think solves issue. let me know thoughts. dint use third party js lib implementation.

<!doctype html> <html> <head>     <title>trial</title>     <style type="text/css">         #first{             background: pink;             height: 800px;         }          .wrap {             width:100%;             position: relative;               background:gray;             overflow-y: hidden;         }          #circle {           margin-top:20px;           -webkit-border-radius: 50%;           -moz-border-radius: 50%;           border-radius: 50%;           width: 11px;           height: 11px;            border: 1px solid #f04948;           position: absolute;           top: 0;           left: 50%;           margin-left: -4px;         }          .ok{           margin:0 auto;           text-align:center;         }          #vertical-divider {           margin-top:20px;           width: 2px;           position: absolute;           left: 50%;           top: 12px;           border-left: 3px solid black;         } </style> </head> <body>     <div class="section" id="first">      </div>     <div class="wrap">         <span id="circle"></span>         <div class="ok">hi, name jason</div>         <span id="vertical-divider"></span>         <div class="osk">hi, name jason</div>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p><p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p><p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p><p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p>&nbsp;</p>         <p class="last">&nbsp;</p>     </div> </body>  <script type="text/javascript">      //function decides whether paint divider     //also decides how length should divider element     var showdivider = function(element) {         var isvisible = false;         var windowheight = window.innerheight;         var dimensions = element.getboundingclientrect();         var top = dimensions.top;         var difference;          if (top === 0) {             isvisible = true;             difference = windowheight;         } else if (top < 0) {             isvisible = true;             difference = -top + windowheight;         } else if (top < windowheight) {             isvisible = true;             difference = windowheight - top;         }          if (isvisible) {             paintdivider(element, difference);         }     };      //function paint divider     var paintdivider = function(divider, length) {         if (divider) {             divider.style.height = length + "px";         }     };      //get divider element needs painted     var divider = document.getelementbyid("vertical-divider");      //bind 'scorll' event , 'resize' event, decide whether     //paint divider or not     document.addeventlistener("scroll", function() {         showdivider(divider);     });     document.addeventlistener("resize", function() {         showdivider(divider);     }); </script> </html> 

https://jsfiddle.net/fkmklfyt/3/

thanks chandra


Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -