javascript - 在页面的不同点添加类/ID

标签 javascript css function

为避免混淆,在您继续阅读之前,这不是“向下多少像素”,而是例如 <section id="smaller">。然后它会添加一个类。我是 javascript 的新手,所以请对它持保留态度。谢谢。

我正在尝试通过向头文件添加新的属性类来更改头文件。当您的宽度从不改变时,以下代码在桌面上可以正常工作,但是如果您在手机上并且您的设计是响应式的呢?是的,这正是我需要你帮助的原因。我已经尝试了很多东西,但不知道如何按照我的意愿进行设置。我是网络开发新手,这是我最初的几个网站之一。

我现在的代码:

function init() {
    window.addEventListener('scroll', function (e) {
        var distanceY = window.pageYOffset || document.documentElement.scrollTop, header = document.querySelector("header");
        if (distanceY > 606) {
            header.setAttribute("class", "smaller");
        } else {
            header.removeAttribute("class");
        }
    });
 }
window.onload = init();

我需要澄清几件事,和/或如果您有点困惑:

  • 标题是实际的<header>不是带有 header 类或 ID 的 div。
  • 就像我说的,这现在确实有效,但只对每个屏幕尺寸的固定宽度有用
  • 我将此代码包含在一个 js 文件中,该文件在 <body> 结束之前链接标签。
  • “606”是发生变化时页面向下的长度(以像素为单位)

有没有办法在你到达网页的某个地方时,在标题中添加一个属性?如果无论如何可以给我一些指导,那就太好了。非常感谢您阅读本文并享受接下来的一天。 :)

最佳答案

使用 element.getBoundingClientRect() 检索对象的屏幕位置信息。这将为您提供一个包含 bottom、height、left 等的对象,对于您可能想要使用 topheight 的任务。结合 window.innerHeight,您可以根据需要编写代码。

window.addEventListener('scroll', function() {
    var r = header.getBoundingClientRect();
    if (r.top < 300)
        header.setAttribute("class", "smaller");
    else
        header.removeAttribute("class");
});

但是,可能有更好的方法来做到这一点,看看“css 媒体查询”,它们几乎提供了使页面响应所需的一切。

关于javascript - 在页面的不同点添加类/ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36399792/

相关文章:

php - 使用 AJAX (Javascript) 将查询传递到函数中

Python 记录器异常在 Azure Application Insights(Azure Function)中记录为跟踪

javascript - 如何使用 greasemonkey 以编程方式单击 GMail 中的 "compose"按钮?

javascript - 如何检测音频在网页中播放完毕?

html - 如何将 "table"放在网页中间?

jquery - 从中心向外扩展元素,忽略 div 边界

MySQL 日期有效性

javascript - Meteorjs实现无限滚动,先显示最新数据

javascript - javascript 正则表达式中的 if 语句

html - 高度 css 在 IE 和 firefox 中不起作用