javascript - 我设置 margin 的功能无法始终如一地工作

标签 javascript css

我想在我的标题下设置一个 div,它的位置是“固定的”。我正在使用一个函数来查找标题的“clientHeight”,添加几个像素并将“marginTop”设置为 div。每隔几次我加载页面或重新加载页面,图像并不总是在所需的位置.我对使用 js 制作响应式网站比较陌生。几个月前才开始编码。

我尝试将 div(“#page”)设置为绝对值并使用“top”样式属性。那真的没用。 我也尝试使用 relative,但这与我最初的尝试几乎相同。

此外,我只在 Chrome 和 Firefox(最新版本)中对此进行了测试。

在这个 fiddle 中工作正常,但在实际浏览器中运行时却不行。

下面是有问题的函数。

function bodyMarginTop () {
    const header = document.querySelector("header");
    const page = document.getElementById("page");

    page.style.marginTop = (header.clientHeight + 8) + "px";
}

https://jsfiddle.net/Cpt_Crooked/yf8xj3s0/2/

预期结果:

  • 无论视口(viewport)宽度、页面加载次数或使用的浏览器如何,我都希望白色 div 在标题下方显示 8 像素。

实际结果:

  • Chrome:大约 70% 的时间页面正确加载。有时会出现 在页面上太高有时太低。

  • Firefox:与 Chrome 相同,只是不太一致,因为它仅在大约 10% 的时间内正确加载。

最佳答案

通过将 load 事件添加到 window 对象,确保在页面上加载所有元素后调用该函数,如下所示:

window.addEventListener("load", bodyMarginTop);

关于javascript - 我设置 margin 的功能无法始终如一地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999667/

相关文章:

JavaScript new Date(string) 兼容大多数浏览器(2016 年 12 月)

javascript - 检查服务器状态时出现延迟。用jquery

javascript - 包含具有动态宽度的列表项的无序列表 - 水平菜单

css - 如何通过 css 定位分隔的类名?

html - 什么会导致 bootstrap 列表现得像行?

javascript - 我们是否需要 NodeJs 来在服务器上运行 react 应用程序?

javascript - 无法从 Javascript 生成的表单获取数据

javascript - 如何查找 word-wrap 是否应用于 html 元素,并且该单词在文本中间中断?

css - IE7 <button> 和 &lt;input type=button/submit> 奇怪的样式?

javascript - 基于可查看的浏览器空间将 DIV 居中