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

我有多个section,当section在viewport中时,将class添加到body中,并将class name添加到body中,如

闾丘淇
2023-03-14

嘿,我是jquery的新手,我被困住了,我有这样的html

<section id="help">Help</section>
<section id="touch">Touch</section>
<section id="payment">Payment</section>
<section id="toys">Toys</section>

所以现在,如果touch部分在viewport中,则向body添加类(body类名为“touch-active”)

我正在尝试这段代码,但它对我不起作用:

jQuery(document).ready(function(){
   if (jQuery('section').is(':visible')){
         jQuery('body').addClass(.attr('id + active'));;
    }
 });

提前致谢:)

共有1个答案

张玺
2023-03-14

为了实现这一点,您可以使用IntersectionObserver来检测元素何时进入视图。从那里,您可以删除正文中的所有类,并用一个基于可见的的新类替换它。试试看:

null

var targets = document.querySelectorAll('section')
var obsOptions = {
  root: null, // measure against the viewport
  threshold: .5 // how much of the element should be visible before handler is triggered
}

let handler = (entries, opts) => {
  entries.forEach(entry => {
    if (entry.intersectionRatio > opts.thresholds[0]) {
      document.body.classList.remove(...document.body.classList);
      document.body.classList.add(entry.target.id + '-active');
    }
  })
}

targets.forEach(el => {
  var observer = new IntersectionObserver(handler, obsOptions);
  observer.observe(el);
})
section {
  height: 250px;
}

body.help-active { background-color: #FFFFFF; }
body.touch-active { background-color: #DDDDDD; }
body.payment-active { background-color: #BBBBBB; }
body.toys-active { background-color: #999999; }
<section id="help">Help</section>
<section id="touch">Touch</section>
<section id="payment">Payment</section>
<section id="toys">Toys</section>
 类似资料:
  • 如果你能帮我解决这件事,我将不胜感激。我试图创建一个函数:“如果任何节具有class”active“=>取此节的id然后将其添加到body作为class元素,否则删除” 这是下面的代码,但它不能正常工作,或者当我滚动到下一节时,新类没有被添加,而以前的类被删除。

  • 我想合并/添加一个新泽西项目B(已经运行良好)到一个新泽西项目a,这将充当一个过滤器/安全层。因此,作为一个基本步骤,我在项目a的构建路径上向项目B添加了依赖项,并在构建路径中向部署程序集添加了相同的依赖项。我从这篇文章中了解到,我可以通过将servlet放在同一个中,并使用以不同的方式映射它们来实现这一点。当我试图访问项目B的资源时,我没有任何运气。 因此,当我尝试访问时,它工作得很好。但是当我

  • 问题内容: 我想补充到。我用了给定的代码 但是,当我运行此命令时,我将获得另一种颜色的列,并且当我单击单选按钮时,什么也没有发生。我正在使用netbeans。如果我尝试自定义,则不会显示任何内容。给我适当的指导。 问题答案: 如果要编辑表格单元格的值,则必须设置一个。 您应该在渲染器中创建一个单一文件,并在任何地方重复使用,这就是TableCellRenderer的目的。 如果您不打电话,则不需要

  • 问题内容: 需要一个简单的Swing代码来演示如何使用tablecellrenderer和tablecelleditor在Jtable的列中添加按钮。 问题答案: 将按钮添加到 Sample ,这是管理列和行,设置组件 Sample ,它管理在组件上单击鼠标的时间 示例JTable单元格渲染器,管理单元格组件

  • 我试图对此进行研究,但找不到任何示例。我找到的示例仅涉及普通TableView。我只能创建一个带有对象的JFXTreeTableView并列出字符串。任何帮助都将不胜感激!谢谢! 我需要在TreeTableView中放置一个按钮或基本上除了字符串以外的任何其他对象。

  • 我试图在运行时环境中添加一个tomcat服务器。我成功安装了tomcat。我已经有了Java EE eclipse,但是在我点击窗口下的搜索之后-