javascript - 如何在一定尺寸后固定侧边栏?

标签 javascript jquery html css

我看到了这个示例:

link

如果你真的下来了......你会看到右边的侧边栏在一定大小后变得固定......你实际上可以看到几乎所有的东西。

它是如何成为一个事件的例子? 使用 JQuery?

这是 link到我的网站

我试图做一些类似但不完整的事情

代码 JS:

 $(window).scroll(function() {
        var height = $(window).scrollTop();
       console.log(height);
        if(height  > 700) {
         //alert("test");
         //after a certain size should be fixed ... what code should be here?
    }
    
});

你有什么想法作为例子吗? 你能帮我解决这个问题吗?

提前致谢!

最佳答案

Here div滚动不流畅的例子。

(function($) {
    var element = $('.follow-scroll'),
        originalY = element.offset().top;
    
    // Space between element and top of screen (when scrolling)
    var topMargin = 20;
    
    // Should probably be set in CSS; but here just for emphasis
    element.css('position', 'relative');
    
    $(window).on('scroll', function(event) {
        var scrollTop = $(window).scrollTop();
        
        element.stop(false, false).animate({
            top: scrollTop < originalY
                    ? 0
                    : scrollTop - originalY + topMargin
        }, 0);
    });
})(jQuery);
html { box-sizing: border-box; }
*, *:before, *:after { box-sizing: inherit; }

.group:after { content: ""; display: table; clear: both; }

body { font: 15px/20px sans-serif; color: #444; }
p { margin-bottom: 30px; }

.wrapper { width: 100%; max-width: 700px; padding: 3%; }

.content, .sidebar { float: left; }

.content { width: 68%; margin-right: 5%; }

.sidebar { width: 27%; }

.box { background: #eee; border: 1px solid #ccc; padding: 10px; margin-bottom: 20px; }
<div class="wrapper group">
    <div class="content">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam euismod arcu ut diam maximus auctor. Sed malesuada maximus tellus, dignissim volutpat urna hendrerit at. Cras nisi turpis, mattis vitae ornare ut, bibendum et massa. Nulla at tellus a arcu luctus ultrices ac non felis. Maecenas euismod efficitur ipsum vel vestibulum. Nam imperdiet ipsum nunc, sit amet varius felis maximus quis. Etiam efficitur, mauris placerat luctus facilisis, ligula sem pellentesque nunc, ac viverra tellus velit sit amet purus. Proin a nunc id quam tempor blandit vitae id orci. Cras lectus turpis, varius nec elementum venenatis, suscipit ut nisl.</p>
        <p>Nulla condimentum est in leo mollis, sit amet varius erat pulvinar. Donec posuere turpis non est ultrices lobortis. Donec commodo aliquam sodales. Ut id finibus velit. Aenean tempus eget nulla at condimentum. Ut a arcu quis dui ultricies efficitur. Vestibulum suscipit diam ullamcorper velit tempor, in ullamcorper odio sollicitudin. Vestibulum congue nisl nibh, ut elementum quam tristique non. Nulla in sollicitudin dolor. Morbi ac justo nulla. Suspendisse massa neque, vestibulum id dolor non, congue rhoncus nibh.</p>
        <p>Phasellus porta tellus vel ipsum vehicula, nec fermentum lectus porta. Aenean viverra magna eu risus lacinia malesuada. Sed molestie auctor pharetra. Aliquam erat volutpat. Vestibulum in mi a orci tincidunt pellentesque. Sed et lectus eros. Nam imperdiet neque eu dolor gravida, interdum pellentesque justo rhoncus. Morbi tincidunt, ex nec pellentesque pulvinar, dui nulla tempor ipsum, sed consequat est tortor at neque. Suspendisse sed consequat urna. Nullam luctus, sem convallis volutpat mollis, sapien odio finibus elit, vitae fringilla enim leo sed velit. Vivamus fringilla ante laoreet blandit porta. Sed condimentum ut erat nec dignissim.</p>
        <p>Morbi ac scelerisque metus. Donec rhoncus diam urna, nec aliquet ex mollis ut. Sed a arcu ac risus semper pellentesque ut non nibh. Phasellus eu ullamcorper sem. Maecenas at tortor faucibus, consequat risus sed, egestas sapien. Suspendisse tortor lacus, congue sed velit vel, dictum sagittis eros. Proin eu nisl viverra, mattis velit vitae, tempor turpis. Ut sodales lacus in iaculis faucibus. Integer non metus non nulla malesuada rutrum ac non ipsum. Vivamus quam diam, suscipit sed velit vel, tincidunt imperdiet urna. Praesent dapibus augue a dignissim lacinia. Nullam pharetra volutpat ligula, quis aliquet mauris pharetra nec. Etiam finibus, neque in laoreet vehicula, lorem justo feugiat velit, ac accumsan neque lacus non tellus. Aliquam quis sagittis massa, a bibendum enim.</p>
        <p>Morbi vel elementum libero, vitae viverra est. Pellentesque sollicitudin neque at ligula suscipit, vel faucibus mauris consequat. Donec quis pharetra nulla, at tristique lacus. Nunc vel magna ultricies, hendrerit purus et, rhoncus dolor. Aliquam erat volutpat. Phasellus auctor malesuada augue, a iaculis sem mattis quis. Nulla facilisi.</p>
    </div>
    <div class="sidebar">
        <div class="box">
            First box
        </div>
        <div class="box">
            Second box
        </div>
        <div class="box follow-scroll">
            Third box (follows screen)
        </div>
    </div>
</div>

关于javascript - 如何在一定尺寸后固定侧边栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919841/

相关文章:

javascript - 为什么无法通过JS访问该站点上的元素?

javascript - 在 Javascript xmlhttp 对象中打开相对 URL 时遇到问题

html - 对齐 td 内的 div

javascript - Java 脚本不在 ionic 框架中的 html 文件中运行

javascript - 如何在单选按钮中启用多重检查和取消检查?

javascript - azure-mobile-apps-node 中的错误中间件

javascript - 关于 chrome.tabs.executeScript,返回多个值

javascript - 如何在不使用 try/catch 的情况下捕获错误或在运行时使用 try/catch 包装代码?

jquery - 使用 POST 重定向到 application/csv(不带表单)

javascript - 如何使用 javascript 和 jquery 停止播放音频