JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css">
<!-- botão para remover divs -->
<div id="button">
    <button id="remove" class="text">Eliminar div (5)</button>
</div>

<!-- status -->
<div id="scroll-val" class="text">.</div>

<!-- blocos de conteúdo -->
<div class="aux ye text lines">1</div>
<div class="aux re text lines">2</div>
<div class="aux bl text lines">3</div>
<div class="aux ye text lines">4</div>
<div class="aux re text lines">5</div>

<!-- div para animar -->
<div class="box">
    <span class="box-title text">MORE STORIES</span>
    <div>
        <a href="#"><img width="326" height="150" src="http://dummyimage.com/326x150/23a343/edfcf7&text=Detect+scroll" /></a>
        <h3><a href="#">Lorem ipsum</a></h3>
        <p>Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...</p>
    </div>
</div>

CSS

body,html {
    margin: 0;
}
.box {
    position: fixed;
    width: 293px;
    bottom: 48px;
    right: -384px;
    background-color: #fafafa;
    padding: 16px 25px 0px 25px;
    z-index: 9999;
}
	.motionR{
		background:#FF00FF;
		transition: right 500ms cubic-bezier(0.265, 0.365, 0.26, 0.865);
		right: 0px;
	}
	
	.motionL{
		background:#669900;
		transition: right 500ms cubic-bezier(0.265, 0.365, 0.26, 0.865);
	}
.aux { /* blocos coloridos */
    min-height: 500px;
    width:100%;
    clear:both;
    float:left;
}
.lines { /* grid horizontal */
    background-size: 100px 100px;    
    background-image:repeating-linear-gradient(0deg, #aaa, #aaa 1px, transparent 1px, transparent 100px);
}
.ye {
    background-color:#ee5;
}
.re {
    background-color:#55e;
}
.bl {
    background-color:#e5e;
}
.text {
    font-family: sans-serif;
    color: #333333;
    font-size: 20px;
}
#button {
    position: fixed;
    top: 0;
    left:0;
    padding: 20px 0 0 60px;
}
#remove {
    font-size:12px
}
#scroll-val {
    position: fixed;
    top: 0;
    right:0;
    padding: 20px 85px 0 0;
}
#scroll-val::before {
    font-size:12px;
    content: 'Scroll: ';
}
.box-title {
    font-weight: normal;
    line-height: 30px;
    display: inline-block;
    text-align: center;
    width: 290px;
    margin-bottom: 18px;
}

JavaScript

var height;
var available;
var percentage_of_page;
var half_screen;

function write_status() {
    available = $(document).height();
    percentage_of_page = 0.5;
    half_screen = available * percentage_of_page;
    $('#scroll-val').html( height + '/' + available + ' - Aparece em: ' + half_screen );
}

var status = 'close'

$(window).scroll(function (e) {
    write_status();

		if ( $(window).scrollTop() > half_screen )
		{
			$('.box').removeClass('motionL');
			$('.box').addClass('motionR');
			status = 'open';
		}
		else
		{
			if( status === 'open' )
			{
				$('.box').removeClass('motionR');
				$('.box').addClass('motionL');
				status = 'close';
			}
		}
});

$('#remove').click(function(){
    $('.aux').last().remove();
    write_status();
    $(this).text( 'Eliminar div (' + $('.aux').length + ')' );
});