将隐藏元素添加到滚动上显示的粘性菜单中

时间:2017-01-11 15:57:23

标签: javascript jquery css twitter-bootstrap visual-studio

我有一个顶级导航和一个粘性子导航。当用户向下滚动页面时,粘性导航是顶部导航。 你可以看到我在这里尝试做的工作示例 - https://www.vidyard.com/careers/

我的问题是当用户位于页面顶部时,将徽标和登录按钮隐藏在粘性导航中,并且当他们滚动到粘性导航时它们会出现(再次,该工作示例是我想要努力的工作)。

出于某种原因,每次我添加徽标/按钮时,粘性导航都会停止正常工作,或使其显示在页面之外,并且我正在努力解决如何使其工作的问题。< / p>

我知道在应用粘性菜单之前必须隐藏它们 - 但即使我将该规则应用于它们,菜单也会停止工作。那么如何将徽标和按钮添加到此菜单中,而不会导致它无法正常工作?

&#13;
&#13;
 var menu = document.querySelector('.menu-t')
 var menuPosition = menu.getBoundingClientRect().top;
 window.addEventListener('scroll', function() {
   if (window.pageYOffset >= menuPosition) {
     menu.style.position = 'fixed';
     menu.style.top = '0px';
   } else {
     menu.style.position = 'static';
     menu.style.top = '';
   }
 });
&#13;
.page-section {
  border-bottom: 1px solid #ddd;
  overflow: hidden;
}
.page-section.page-section-center {
  align-content: center;
  text-align: center;
}
.menu-t {
  margin: 0;
  padding: 0;
  width: 100%;
  background-color: #FFF;
  z-index: 1000;
  border-bottom: 1px #eee dotted;
}
.menu-t li {
  display: inline-block;
  text-align: center;
  padding: 20px;
  text-transform: uppercase;
  font-size: 14px;
}
.menu-t a {
  display: block;
  padding: 10px 0;
  color: #32404E !important;
  -webkit-transition: color ease 0.3s;
  -o-transition: color ease 0.3s;
  transition: color ease 0.3s;
}
.menu-t a:hover {
  color: #2db2e9 !important;
}
&#13;
<section>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
</section>
<section class="page-section page-section-white page-section-center hidden-xs hidden-sm">
 <div class="row">
   <div class="col-md-4">
     Logo image here
     </div>
   <div class="col-md-4">
      <ul class="menu-t">
    <li>
      <a href="#" class="text-thick">What Is</a>
    </li>
    <li>
      <a href="#" class="text-thick">How We Help</a>
    </li>
    <li>
      <a href="#testimonials" class="text-thick">Testimonials</a>
    </li>
  </ul>
     </div>
   <div class="col-md-4">
     Button here
     </div>
   </div>
</section>
<section>
  <br/>
  <br/>
  <br/>
    <br/>
   <br/>
   <br/>
    <br/>
   <br/>
   <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
  <br/>
</section>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

我建议您使用菜单切换的类名而不是添加内联样式。这将使您更好地控制显示和隐藏的内容。请参阅下面的更改。然后,您可以将图像添加到HTML并根据类名显示/隐藏。

item_type
var menu = document.querySelector('.menu-t');
var menuPosition = menu.getBoundingClientRect().top;
window.addEventListener('scroll', function() {
  if (window.pageYOffset >= menuPosition) {
     menu.className = 'menu-t fixed';
  } else {
     menu.className = 'menu-t';
  }
});