jquery - 始终可见的小部件位于窗口的任何高度

标签 jquery css

我有以下情况,正如您在图片中看到的那样,小部件 block 必须始终处于可见区域,但在滚动期间从顶部边缘滚动到底部边缘。

enter image description here

我是这样设置的,但是当窗口很窄时,由于滚动,小部件会在窗口下面。

 $(window).scroll(function () {
  var $scrollingDiv = $(".widget");


          $scrollingDiv.css({
              "top": ($(window).scrollTop())
          });

});

如何在滚动过程中将其保持在边缘之间?

the jsfiddle example

live site example

最佳答案

这样的事情怎么样:

var $scrollingDiv = $(".widget"),
    main = $('.main'),
    mainOff = main.offset().top,
    mainBottom = mainOff + main.height() - $scrollingDiv.height();
$(window).scroll(function () {
   var winScroll = $(window).scrollTop();
    if(mainOff <= winScroll && winScroll <= mainBottom){
        $scrollingDiv.addClass('fixed').removeClass('bottom');
    }else if(winScroll > mainBottom){
        $scrollingDiv.addClass('bottom').removeClass('fixed');
    }
    else{
        $scrollingDiv.removeClass('fixed bottom')
    }

});

CSS:

.widget.fixed { position: fixed; left: auto; right: 50%; margin-right: -232px; }
.widget.bottom { top: auto; bottom: 0; }

Demo

几乎我只添加和删除类,并固定元素而不是每次滚动时都添加新的 css。这样元素就不会跳转,站点也会运行得更好。

如果您希望小部件停留在窗口底部而不是顶部,您可以对其进行调整。

关于jquery - 始终可见的小部件位于窗口的任何高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20835509/

相关文章:

javascript - 添加html到jquery文本功能

jquery - 单击父级时触发单击

javascript - Galaxy s3 打破了响应式布局

html - 如何解决 Firefox 的宽度计算错误

html - 如何让一些按钮在 DIV 中左对齐而一些按钮右对齐?

javascript - 无法在 AngularJS 中创建动态对象数组

jQuery——在点击时启用/禁用页面上的所有样式表

jquery 在调用之前检查字符串是否作为函数存在

javascript - Galaxy Nexus 忽略视口(viewport)元标记

css - Primeng 自动完成下拉位置不起作用