javascript - 如何停止用鼠标滚动时相对放置的元素的抖动?

标签 javascript jquery html css

我的 HTML 是:

<!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>

我的 CSS 是:

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;
}

我的 jQuery 是:

$(document).ready( function() 
{

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

});

最后,here's a working fiddle .

出于某种原因, fiddle 没有重现我的问题。但如果可能,请在您自己的机器上运行此代码。它将相应地重新创建。

因此,每当我滚动超过某个点时,粉红色侧边栏应该会随着页面滚动。这个功能完美地工作,除了它像地震一样抖动的事实。我相信这是因为元素“跳跃”,因为滚动不是用鼠标连续的。如果我们使用滚动条滚动,效果是完美的。我该如何补救?

奖励:有谁知道为什么 JSFiddle 可以无缝显示这个,但我自己的浏览器不能本地显示?

最佳答案

那是因为您每秒执行 60 次对 CPU 要求很高的任务(滚动)。在每一帧中,您都在执行 jQuery 搜索和 jQuery 高度计算以及一些页面重绘 - 这些都非常昂贵。

如果您可以在 css 中定义两个状态(固定的,非固定的)并在 javascript 中切换 css 类,这将会有所帮助。

您还可以将 $("#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');
    });
});

我已经更新了your Fiddle

关于javascript - 如何停止用鼠标滚动时相对放置的元素的抖动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38872978/

相关文章:

javascript - 表单不会通过ajax提交

jquery 切换仅适用于部分 div

html - Markdown - 标题左侧的图标

javascript - 如何为具有嵌套输入字段的 div 实现 onBlur/onFocus?

jquery - 获取容器中每个镜像的ID

javascript - 使 &lt;input/> 出现在过渡 <div> 上

css - 垂直滚动 <DIV>

HTML - 属性自动完成 ="on"在 Chrome 浏览器中不起作用

javascript - jQuery 对话框

javascript - 如何使用RegisterStartupScript调用javascript警报框后停止vb代码执行