Javascript 窗口底部固定div的更简洁方式,但保持在页脚上方,并在页面宽度上触发

Javascript 窗口底部固定div的更简洁方式,但保持在页脚上方,并在页面宽度上触发,javascript,jquery,html,css,fixed,Javascript,Jquery,Html,Css,Fixed,我在窗口底部创建了一个粘滞条。当用户向下滚动到页面底部时,同一条将保持固定,直到页脚显示,然后临时移除其固定位置,保持在页脚上方,直到用户向后滚动并再次保持固定 我只想在页面宽度超过680px时发生。下面的任何内容都将使粘滞条保持在默认位置(CSS:position:inherit) 这是网站: 它按预期工作。然而,当我在Mac上测试Chrome时,它会触发我的CPU风扇,这表明这不是非常有效,而且我的JavaScript技能有限,我想知道是否有更干净的方法来实现这一点 这是当前的js代码: $

我在窗口底部创建了一个粘滞条。当用户向下滚动到页面底部时,同一条将保持固定,直到页脚显示,然后临时移除其固定位置,保持在页脚上方,直到用户向后滚动并再次保持固定

我只想在页面宽度超过680px时发生。下面的任何内容都将使粘滞条保持在默认位置(CSS:position:inherit)

这是网站:

它按预期工作。然而,当我在Mac上测试Chrome时,它会触发我的CPU风扇,这表明这不是非常有效,而且我的JavaScript技能有限,我想知道是否有更干净的方法来实现这一点

这是当前的js代码:

$(window).scroll(function(event) {

    var scroll = $(this).scrollTop();
    var docHeight = $(document).height();
    var windowHeight = $(window).height();
    var footerHeight = $('.footer').height();

    if(docHeight - (windowHeight + scroll) < footerHeight) {
        $('.contact-bar').css({
            bottom: footerHeight - (docHeight - (windowHeight + scroll))
        });
    } else {
        $('.contact-bar').css({
            bottom: 0
        });
    }

});

var windowWidth = $(window).width();

$(window).resize(function() {
    windowWidth = $(window).width();

    if(windowWidth > 680) {
        $('.contact-bar').css({
            position: "fixed"
        });
    } else {
        $('.contact-bar').css({
            position: "inherit"
        });
    }

});

你可以反过来做。使其在不固定位置的情况下位于页脚上方,而不使用任何JavaScript(包括媒体查询)。然后添加一个位置为固定且底部为0的固定类,该类将相应地添加。像这样:

.contact-bar.fixed { position:fixed; bottom:0; }
触发此操作的jquery代码如下:

$(window).scroll(function (event) {
   var windowTop = $(this).scrollTop();        
     if (windowTop >= $(".footer").offset().top) {
        $(".contact-bar").addClass("fixed");
      } else {
        $(".contact-bar").removeClass("fixed");
      }
});
然后添加几行代码,只有当窗口宽度大于680时,上面的代码才会使用jquery或纯javascript激发这些行。例如:

  if ($(window).width() < 960) { // above function } 
if($(window).width()<960){//over function}

请注意,我没有测试这个,所以请评论,如果它不工作。信用证:

您最好使用类来针对您的元素,至少可以防止jQuery使用选择器适当地遍历整个DOM,这在性能上是很好的。

谢谢,我会在接下来的几天回到我的计算机前查看一下,我会让您知道的。快速浏览一下,我可以使用其中的一些来清理代码。让我来吧……与论坛网站不同,我们不使用“谢谢”或“感谢任何帮助”或签名。请看。顺便说一句,这是“提前感谢”,而不是“提前感谢”。哇,对这里的事情很挑剔。别担心,我会保持我的礼貌。谢谢你的语法纠正。我的诵读困难确实令人沮丧,我试过了,但有时会漏掉。请点击我包含的链接。你可能会更好地理解我们为什么“挑剔”关于“礼貌”,明白了,开门见山。有这么多时间在手上一定很好:)不,搜索“谢谢”很快,我用的是固定的评论,所以这是我在等待编译完成时可以做的事情。
  if ($(window).width() < 960) { // above function }