javascript - jQuery 仅在 scrollTop = 0 时悬停

标签 javascript jquery html css scrolltop

我想为页眉添加悬停效果,但前提是用户位于页面顶部。我正在使用 shopify,我认为最好的方法是当你将鼠标悬停在它上面时它会添加一个类并更改一些 CSS 属性(如文本颜色和高度)。我已经得到了这个代码,如果你滚动它会做同样的事情。我能否编辑此代码,使其在您将鼠标悬停在该元素上时执行相同的操作,但前提是 scrollTop = 0

$(document).ready(function() {
  (function() {

    $(document).on('shopify:section:load', function(event) {      
      jQuery(window).trigger('resize').trigger('scroll');

      var Heightcalculate = $('header').height(); 
      // Responsive edits
      if( $(window).width() > 980){  
        //caches a jQuery object containing the header element
        var header = $(".scrollheader");
        $(window).scroll(function() {
          var scroll = $(window).scrollTop();

          if (scroll >= 1 ) {
            header.removeClass('scrollheader').addClass("coverheader");
            $('#phantom').show();
            $('#phantom').css('height', Heightcalculate+'px');
          } else {
            header.removeClass("coverheader").addClass('scrollheader');
            $('#phantom').hide();
          }
        });        
      }
      $('.no-fouc').removeClass('no-fouc');
      $('.load-wait').addClass('hide');

    }); 

最佳答案

悬停时,检查 $.scrollTop(),如果为 0,则添加类。

var $header = $(".scrollheader");
$header.hover(function() {
  if ($(window).scrollTop() == 0) {
    $header.addClass('hovered');
  }
},function() {
  if ($header.hasClass('hovered')) {
    $header.removeClass('hovered');
  }
});
body {
  height: 500vh;
}
.scrollheader {
  position: fixed;
  top: 0; left: 0; right: 0;
}
.hovered {
  background: #171717;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header class="scrollheader">header</header>

您还可以在滚动时使用事件监听器,如果有人在页面顶部,则添加一个类来指示这一点,然后在该类上触发 CSS 悬停。

$header = $('.scrollheader');
$(window).on('scroll',function() {
  if ($(this).scrollTop() == 0 && ! $header.hasClass('top')) {
    $header.addClass('top');
  } else if ($header.hasClass('top')) {
    $header.removeClass('top');
  }
});
body {
  height: 500vh;
}
.scrollheader {
  position: fixed;
  top: 0; left: 0; right: 0;
}
.top:hover {
  background: #171717;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header class="scrollheader top">header</header>

关于javascript - jQuery 仅在 scrollTop = 0 时悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42458873/

相关文章:

javascript - 语法 高阶组件 - Autosizer

javascript - 通过 javascript 确定更改了哪些字段

javascript - 结合数据/变量 jquery

javascript - 在生成的内容中调用在母版页中创建的 Javascript 变量

javascript - 将JSON数据放入隐藏的html表单输入?

javascript - AngularJS - ngRoute 否则无法正常工作

javascript - 文档就绪等效于通过 jQuery Mobile Accordion 加载的 ajax 内容

jquery - event.preventDefault(); Firefox 中不停止鼠标滚轮

html - CSS 菜单 - LI/A 宽度

jquery - IOS HTML5 应用程序中的 iScroll4 js - 滚动到最上面的问题