当前位置: 首页 > 知识库问答 >
问题:

将计算出的jQuery值/变量赋予css类

袁高明
2023-03-14

我得到了下面的Navbar。我想让它做的是:

  1. 向下滚动时出现
  2. 再次向上滚动时离开视图(到定义的数量)
  3. 用箭头“关闭”导航条,使其变小
  4. 在“关闭”后“重新打开”导航栏
  5. 在任何时候,我仍然希望navbar在滚动到顶部时隐藏。无论它是扩展还是压缩

这不起作用,因为我的切换navbar的代码将为top设置内联值,这是类中需要的,以便在向上滚动时隐藏它

所以,除了我的代码有什么问题之外,真正的问题是:

有没有办法把我计算出来的身高给CSS?或者不内联设置样式,而是定义一个新的类或其他东西,并给该类赋值?

所以我仍然可以在css中有一些顺序,并且向上滚动时的隐藏不会被内联样式覆盖。

谢谢你的帮助!

null

// Sticky Header / Appear when scrolled to XY

$(window).scroll(function() {
  var header_sticky = $('.header-sticky');

  if ($(this).scrollTop() > 250) {
    header_sticky.addClass('fixed');
  } else {
    header_sticky.removeClass('fixed');
  }
});


// Hide / Show Navbar

$(function() {

  $('#nav_toggle').on('click', function() {

    toggleNav();
  });
});


function toggleNav() {

  let navHeight = $('.header-sticky.toggleable').height();
  let anchorHeight = $('#nav_toggle').height();
  let toggleHeight = navHeight - anchorHeight;


  if ($('#nav_toggle').parent().hasClass('nav_toggled')) {
    $('#nav_toggle').parent().css('top', 0);
    $('#nav_toggle').parent().removeClass('nav_toggled')
    $('#nav_toggle').html('<i class="fas fa-angle-down"></i>')
  } else {
    $('#nav_toggle').parent().addClass('nav_toggled')
    $('#nav_toggle').parent().css('top', -toggleHeight);
    $('#nav_toggle').html('<i class="fas fa-angle-up"></i>')
  }
}
/* Nav Styling */
.nav {
  width: 100vw;
  padding: 0 10vw;
  position: fixed;
  background: #fefefe;
  z-index: 8;
  left: 0;
  right: 0;
  box-shadow: 0px 3px 10px 1px rgba(0, 0, 0, 0.2);
}

.nav ul {
  list-style-type: none;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  align-items: center;
  width: 100%;
}

.nav ul li {
  padding: 0.5rem 1rem;
}

/* Toggle Styling */

#nav_toggle {
  font-size: 1.5rem;
  text-align: center;
  width: 2rem;
  height: 100%;
  display: block;
  margin: 0 auto;
}

/* Sticky Header CSS */

.header-sticky {
  position: fixed;
  z-index: 1000;
  top: -250px;
  transition: all ease-in-out .25s;
}
.header-sticky.fixed {
  top: 0;
}

  

/* Some height so it's scrollable */
.for_some_height {
  height: 200vw;
  width: 100%;
  z-index: -1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />

<div class="nav header-sticky toggleable">
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
  </ul>
  <a href="javascript:void(0)" id="nav_toggle"><i class="fas fa-angle-down"></i></a>
</div>
<div class="for_some_height"></div>

null

共有1个答案

白才艺
2023-03-14

它完成了,检查是否需要其他东西,然后我会在解决方案中添加一些解释,

null

// Sticky Header / Appear when scrolled to XY
$(window).scroll(function() {
  var header_sticky = $('.header-sticky');
  if ($(this).scrollTop() > 250) {
    header_sticky.addClass('fixed');
  } else {
    header_sticky.removeClass('fixed');
  }
});

// Hide / Show Navbar

$(function() {
  $('#nav_toggle').on('click', function() {
      $(this).prev('ul').slideToggle();
      $(this).toggleClass('closed');
      if($('#nav_toggle').hasClass('closed')){
        $('#nav_toggle').html('<i class="fas fa-angle-up"></i>');
      }else {
        $('#nav_toggle').html('<i class="fas fa-angle-down"></i>');
      }
  });
});
/* Nav Styling */
.nav {
  width: 100vw;
  padding: 0 10vw;
  position: fixed;
  background: #fefefe;
  z-index: 8;
  left: 0;
  right: 0;
  box-shadow: 0px 3px 10px 1px rgba(0, 0, 0, 0.2);
}

.nav ul {
  list-style-type: none;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  align-items: center;
  width: 100%;
}

.nav ul li {
  padding: 0.5rem 1rem;
}

/* Toggle Styling */

#nav_toggle {
  font-size: 1.5rem;
  text-align: center;
  width: 2rem;
  height: 100%;
  display: block;
  margin: 0 auto;
}

/* Sticky Header CSS */

.header-sticky {
  position: fixed;
  z-index: 1000;
  top: -250px;
  transition: all ease-in-out .25s;
}
.header-sticky.fixed {
  top: 0;
}

  

/* Some height so it's scrollable */
.for_some_height {
  height: 200vw;
  width: 100%;
  z-index: -1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />

<div class="nav header-sticky toggleable">
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
  </ul>
  <a href="javascript:void(0)" id="nav_toggle"><i class="fas fa-angle-down"></i></a>
</div>
<div class="for_some_height"></div>
 类似资料:
  • 我想把列表中的对象分配给类变量。 感恩节:)

  • = 赋值操作符(它的左右两边不能有空白符) 不要搞混了 = 和 -eq,-eq 是比赋值操作更高级的测试。注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符。 例子 4-2. 简单的变量赋值 1 #!/bin/bash 2 # 裸变量 3 4 echo 5 6 # 什么时候变量是“裸”的?比如说,变量名前面没有$? 7 #当变量被赋值

  • 我开始盲目地看着我的代码,我的大脑快要过热了。谈到编程,我是新来的。 公共类回收系统{ }} 公共类瓶子{ } 公共类EmptyStackException扩展了异常{ } 公共类瓶计数{ } 我对getbottle、TotalBottalCount和BottalCount变量有单独的类。 我想做一个基于用户输入的回收系统模拟器,如果有任何意义的话,有三种不同类型的瓶子,它们被分配了不同的值,一个

  • 输出为“假”,但为什么?我将<code>truetruevs什么时候合适? 编辑:一些用户提到我应该看到错误,但我没有。我在PowerShell 2.0(Windows 7)和PowerShell 4.0(Windows 8.1)中都尝试过。和确实像我说的那样更改了COM属性。 编辑:事实证明,我们将< code>true赋给了COM属性,但它们实际上收到了false。我们的路径中有gnuwin3

  • 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前,为变量赋值,只能直接指定值。 var a = 1; var b = 2; var c = 3; ES6允许写成下面这样。 var [a, b, c] = [1, 2, 3]; 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值。 本质上,这种写法属