在移动滚动条上缩小粘性标题徽标

时间:2020-11-04 21:05:52

标签: javascript html css scroll header

我一直在尝试找到一种方法,使粘贴式标头仅应用于Shopify网站的移动版本,向下滚动时缩小标头徽标。然后滚动回最顶部时,将标题徽标调整为原始大小。当然,如果这样可以缩小移动滚动条上整个标题的大小,则有效!

最初使用此徽标,但是在完全滚动时,徽标无法正确调整为原始尺寸。相反,当在移动网站上的不同页面上浏览时,它会奇怪地变小:

$(window).scroll(function(){ 
if ($(this).scrollTop() > 10){      
$('.site-header__logo-image img').addClass("manage_width");
  } 
else{
//back to default styles
$('.site-header__logo-image img').removeClass("manage_width");
 }
});

我尝试了JS,CSS和HTML的变体,但到目前为止似乎还没有任何效果。如果有人拥有我们只能将其应用于移动网站的代码,我将不胜感激!谢谢!!

1 个答案:

答案 0 :(得分:0)

我不知道您的确切设置,但听起来您需要在javascript中添加事件侦听器以检测用户何时滚动。
要更改徽标的大小,可以在滚动时向其添加一个新类。

您还必须检测用户何时滚动到顶部,以便将徽标更改回其原始大小。
代码应如下所示:

CSS

.logo {
  width: 200px;
  height: 100px;
}

.logo--small {
  width: 100px;
  height: 50px;
}

JS

// get logo
var logo = document.getElementById('logo');

// listen for scroll
window.addEventListener("scroll", function() {
  // add small size class
  logo.classList.add('logo--small');
  // if user is at top of screen and has the small class, then remove it
  if (window.scrollTop == 0 && logo.classList.contains('logo--small')) {
        logo.classList.remove('logo--small');
    }        
});

您当然可以对类应用css转换以使其获得更好的体验,并且还可以检测用户是否在向上或向下滚动,并相应地缩放徽标,而不是在调整大小时进行简单调整用户到达最高位置。