Somenath Sinha Somenath Sinha - 3 months ago 11
CSS Question

How to stop jitter of relatively placed items on scrolling with mouse?

My HTML is :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Scroll Div</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="container">
<div id="description">
<p>
Chuck Norris does not sleep. He waits Police label anyone attacking Chuck Norris as a Code 45-11... a suicide, What was going through the minds of all of Chuck Norris' victims before they died? His shoe. Chuck Norris can slam a revolving door Chuck Norris invented Kentucky Fried Chicken's famous secret recipe, with eleven herbs and spices. But nobody ever mentions the twelfth ingredient: Fear, Chuck Norris is so fast, he can run around the world and punch himself in the back of the head, Remember the Soviet Union? They decided to quit after watching a DeltaForce marathon on Satellite TV. There is no chin behind Chuck Norris' beard. There is only another fist. Chuck Norris is my Homeboy. Chuck Norris doesn't read books. He stares them down until he gets the information he wants.
</p>
</div>
<div id="sidebar">
<ul id="navLinks">
<li>Home</li>
<li>About Us</li>
<li>Terms</li>
<li>Conditions</li>
<li>Contact Us</li>
</ul>
</div>
<div id="main">
<p>
Chuck Norris uses pepper spray to spice up his steaks Chuck Norris was once witnessed flushing a Port-A-Potty by jabbing its walls, Chuck Norris will attain statehood in 2009. His state flower will be the Magnolia, Chuck Norris' hand is the only hand that can beat a Royal Flush, Outer space exists because it's afraid to be on the same planet with Chuck Norris.
</p>
<p>
Do you ever wonder why you would submit a fact based on Chuck Norris? That is the power of Chuck Norris. Chuck Norris' hand is the only hand that can beat a Royal Flush, Chuck Norris has two speeds. Walk, and Kill.Contrary to popular belief, America is not a democracy, it is a Chucktatorship. Chuck Norris doesn't wash his clothes, he disembowels them The Great Wall of China was originally created to keep Chuck Norris out. It failed miserably, The chief export of Chuck Norris is Pain.
</p>
<p>
The amount of people who live in the United States of America is the amount of years Chuck Norris has lived. The original CBS Survivor series was filmed in Chuck's mansion. No episode aired, as no one survived. Chuck Norris doesn't read books. He stares them down until he gets the information he wants, Chuck Norris once roundhouse kicked someone so hard that his foot broke the speed of light, went back in time, and killed Amelia Earhart while she was flying over the Pacific Ocean There is no theory of evolution. Just a list of animals Chuck Norris allows to live Contrary to popular belief, America is not a democracy, it is a Chucktatorship, Chuck Norris is currently suing NBC, claiming Law and Order are trademarked names for his left and right legs, Contrary to popular belief, America is not a democracy, it is a Chucktatorship. Chuck Norris is the only man to ever defeat a brick wall in a game of tennis, Police label anyone attacking Chuck Norris as a Code 45-11... a suicide, When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes, ever. Chuck Norris is the reason why Waldo is hiding Chuck Norris does not get frostbite. Chuck Norris bites frost.
</p>
<p>
Contrary to popular belief, America is not a democracy, it is a Chucktatorship Chuck Norris can win a game of Connect Four in only three moves, Remember the Soviet Union? They decided to quit after watching a DeltaForce marathon on Satellite TV. Police label anyone attacking Chuck Norris as a Code 45-11... a suicide, The Great Wall of China was originally created to keep Chuck Norris out. It failed miserably. The leading causes of death in the United States are: 1. Heart Disease 2. Chuck Norris 3. Cancer, Chuck Norris can win a game of Connect Four in only three moves. When Chuck Norris does a pushup, he isn't lifting himself up, he's pushing the Earth down, Chuck Norris' hand is the only hand that can beat a Royal Flush.
</p>
<p>
Ninjas cannot catch you if you are Chuck Norris. This is of course impossible. Chuck would never allow someone like him to co-exist alongside him. Chuck Norris does not get frostbite. Chuck Norris bites frost When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes, ever. Chuck Norris is currently suing NBC, claiming Law and Order are trademarked names for his left and right legs, Chuck Norris has two speeds. Walk, and Kill, The Great Wall of China was originally created to keep Chuck Norris out. It failed miserably, When a human being spells Chuck Norris' name wrong, they die...painfully, Chuck Norris' hand is the only hand that can beat a Royal Flush Chuck Norris doesn't need a lawnmower, he stands outside and dares the grass to grow. Chuck Norris can win a game of Connect Four in only three moves, Contrary to popular belief, America is not a democracy, it is a Chucktatorship. Chuck Norris can have his cake and eat it, too Outer space exists because it's afraid to be on the same planet with Chuck Norris Chuck Norris originally appeared in the "Street Fighter II" video game, but was removed by Beta Testers because every button caused him to do a roundhouse kick. When asked bout this "glitch," Norris replied, "That's no glitch." When Chuck Norris was 8, he said 1+1 was five and he was right.
</p>
<p>
Chuck Norris can sharpen a pen You can commit suicide by just Googling Chuck Norris, What was going through the minds of all of Chuck Norris' victims before they died? His shoe, When the Boogeyman goes to sleep every night, he checks his closet for Chuck Norris. If you ask Chuck Norris what time it is, he always says, "Two seconds 'til." After you ask, "Two seconds 'til what?" he roundhouse kicks you in the face The quickest way to a man's heart is with Chuck Norris' fist Chuck Norris will attain statehood in 2009. His state flower will be the Magnolia. Guns don't kill people. Chuck Norris kills people. A rattle snake bit Chuck Norris in the leg and the snake died instantly. Chuck Norris invented Kentucky Fried Chicken's famous secret recipe, with eleven herbs and spices. But nobody ever mentions the twelfth ingredient: Fear When Chuck Norris does a pushup, he isn't lifting himself up, he's pushing the Earth down, Chuck Norris will attain statehood in 2009. His state flower will be the Magnolia Chuck Norris is the reason why Waldo is hiding When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes, ever. Fool me once, shame on you. Fool Chuck Norris once and he will roundhouse you in the face.
</p>
<p>
CNN was originally created as the "Chuck Norris Network" to update Americans with on-the-spot ass kicking in real-time Whoever said that no one is perfect obviously never saw Chuck Norris, A Handicapped parking sign does not signify that this spot is for handicapped people. It is actually in fact a warning, that the spot belongs to Chuck Norris and that you will be handicapped if you park there. Remember the Soviet Union? They decided to quit after watching a DeltaForce marathon on Satellite TV.
</p>
<p>
What was going through the minds of all of Chuck Norris' victims before they died? His shoe, Chuck Norris will attain statehood in 2009. His state flower will be the Magnolia. Police label anyone attacking Chuck Norris as a Code 45-11... a suicide Chuck Norris does not get frostbite. Chuck Norris bites frost A Handicapped parking sign does not signify that this spot is for handicapped people. It is actually in fact a warning, that the spot belongs to Chuck Norris and that you will be handicapped if you park there. Chuck Norris made the impossible quiz possible, Chuck Norris doesn't wear a watch. HE decides what time it is Chuck Norris doesn't go hunting... CHUCK NORRIS GOES KILLING, Chuck Norris can knock you out by throwing a snowflake. Only Chuck Norris is stronger than an Altoid Chuck Norris is currently suing NBC, claiming Law and Order are trademarked names for his left and right legs Chuck Norris will attain statehood in 2009. His state flower will be the Magnolia There is no theory of evolution. Just a list of animals Chuck Norris allows to live, The quickest way to a man's heart is with Chuck Norris' fist When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes, ever.
</p>
<p>
The Great Wall of China was originally created to keep Chuck Norris out. It failed miserably, CNN was originally created as the "Chuck Norris Network" to update Americans with on-the-spot ass kicking in real-time, Contrary to popular belief, Chuck Norris, not the box jellyfish of northern Australia, is the most venomous creature on earth, The Great Wall of China was originally created to keep Chuck Norris out. It failed miserably Chuck Norris' hand is the only hand that can beat a Royal Flush, Chuck Norris figured out the secret of the universe. He just never told anyone. When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes, ever, Most people have 23 pairs of chromosomes. Chuck Norris has 72... and they're all poisonous Chuck Norris doesn't read books. He stares them down until he gets the information he wants, Chuck Norris uses pepper spray to spice up his steaks, Chuck Norris doesn't have to sleep with one eye open, he can see through his eyelids, Chuck Norris Made Those Good Girls Go Bad For doctors.. an apple a day keeps Chuck Norris away, Chuck Norris doesn't read books. He stares them down until he gets the information he wants A Handicapped parking sign does not signify that this spot is for handicapped people. It is actually in fact a warning, that the spot belongs to Chuck Norris and that you will be handicapped if you park there.
</p>
<p>
Contrary to popular belief, America is not a democracy, it is a Chucktatorship. A B Chuck D E F G H I J K L M Norris O P Q R S T U V W X Y Z, Chuck Norris drives an ice cream truck covered in human skulls. Chuck Norris uses a minefield as a door mat. Chuck Norris has two speeds. Walk, and Kill If you spell Chuck Norris in Scrabble, you win. Forever A Handicapped parking sign does not signify that this spot is for handicapped people. It is actually in fact a warning, that the spot belongs to Chuck Norris and that you will be handicapped if you park there The leading causes of death in the United States are: 1. Heart Disease 2. Chuck Norris 3. Cancer.
</p>
</div>
</div>

<script type="text/javascript" src="jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="scroller.js"></script>
</body>
</html>


My CSS is :

body {
font-family: verdana;
font-size: small;
background-color: #B7BBDC;
}

#container {
max-width: 980px;
}

#main {
width: 500px;
margin: auto;
padding: 20px;
background-color: #A6D98F;
}

#description {
width: 200px;
background-color: #F2E5A0;
padding: 5px;
float: right;
margin: 5px;
}

#sidebar {
width: 200px;
background-color: #F2B3C4;
position: relative;
padding: 5px;
float: right;
clear: right;
margin: 5px;
}

#navLinks {
list-style-type: none;
}

#navLinks li {
display: block;
padding: 10px;
text-transform: uppercase;
}


My jQuery is :

$(document).ready( function()
{

$(document).scroll(function()
{
if($(document).scrollTop() > $("#description").height())
$("#sidebar").css('top', ($(document).scrollTop() - $("#description").height()));
else
$("#sidebar").css('top', '0');
});

});


Finally, here's a working fiddle.

For some reason, the fiddle doesn't recreate my problem. But if possible run this code on your own machine. It'll be recreated accordingly.

So, whenever I scroll beyond a certain point, the pink sidebar is supposed to scroll with the page. This functionality works perfectly, except for the fact it jitters like there's an earthquake. I believe it's because the element "jumps" as the scrolling isn't continuous with a mouse. If we scroll using the scrollbar, the effect is perfect. How do I remedy this?

Bonus : Does anyone know why the JSFiddle displays this seamlessly, but my own browser can't natively?

Answer

That's because you are performing quite CPU demanding task 60 times per second (scroll). In every frame you are performing jQuery search and jQuery height calculations and some page repainting - these are very expensive.

It would help if you could have two states (fixed, non-fixed) defined in css and toggle css class in javascript.

Also you could store in a variable results of $("#description").height()

$(document).ready( function() {
    var descrHeight = $("#description").height();
    var sidebar = $("#sidebar");
    $(document).scroll(function() {
        if($(document).scrollTop() > descrHeight)
            sidebar.addClass('sticky');
        else
            sidebar.removeClass('sticky');
    });
});

I have updated your Fiddle