javascript - 使用 setIntervel() 偏移具有动态高度的固定标题的页面上的内容

标签 javascript html css setinterval

我的问题与this one 非常相似除了固定元素可能会在应用程序生命周期期间动态更改其高度(其他数据、视口(viewport)更改等)。

我正在使用具有 100 毫秒间隔的 setInterval() 函数来根据标题高度更新内容元素的偏移量。

jQuery(function($){
    setInterval(function(){
        $('article').css('padding-top', $('header').outerHeight());
    }, 100)
});

这里是 jsfiddle为此(更改结果页面的宽度以查看其工作方式)。

就用户体验而言,它看起来很棒,但我很好奇是否有更好的方法?

这种方法有什么缺点?

最佳答案

主要缺点是您每 100 毫秒消耗一次 CPU。大多数时候它什么都不做。

有更好的方法。只需在固定元素更改高度后发出一个事件并将您的 css 调整绑定(bind)到它。像这样的东西:

$(document).trigger('my_element_changed_height');

无论高度变化和

$(document).on('my_element_changed_height', function() {
    $('article').css('padding-top', $('header').outerHeight());
});

关于javascript - 使用 setIntervel() 偏移具有动态高度的固定标题的页面上的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29349158/

相关文章:

javascript - 使 SVG 元素只读

javascript - 在 JQuery TimePicker 中向 DropDownList 添加样式

css - 使用 div 标签在我的网站周围设置边框时出现问题

javascript - 调整窗口大小时如何抵消抓取效果?

html - 为什么 pull-right 对我的 Bootstrap 导航栏不起作用?

internet-explorer - CSS3 站点不能在 IE 中运行。即使是IE10

javascript - Angular JS : creating table with json

javascript - 如果一个元素没有被拖到一个特定的位置,那么它要回到原来的位置吗?

css - 嵌入式字体 B 和我不在 safari 3.2 上工作

css - 如果两个变量与 VueJS 相等,则设置输入类