鍍金池/ 問答/HTML/ absolute定位的元素怎么會(huì)影響整個(gè)頁面的高度設(shè)置

absolute定位的元素怎么會(huì)影響整個(gè)頁面的高度設(shè)置

clipboard.png

這是整個(gè)頁面的布局(打碼略多..抱歉)

紅框中是一個(gè)iframe,整個(gè)頁面的高度是通過js計(jì)算的。

遇到的問題是,
頁面遇到刷新或者resize操作,有一定幾率會(huì)導(dǎo)致整個(gè)頁面上移,由于設(shè)置了overflow:hidden,所以頂欄無法操作。

排查后發(fā)現(xiàn)是因?yàn)橛蚁陆堑暮凶咏^對定位,同時(shí)設(shè)置了負(fù)bottom值造成的:

clipboard.png

問題是:

我把a(bǔ)bsolute改為fixed之后解決了這個(gè)問題(沒復(fù)現(xiàn)了),但不清楚原理是什么?

absolute和fixed不是都會(huì)脫離文檔流嗎?為什么會(huì)影響高度計(jì)算?

這是高度計(jì)算的代碼(不是我寫的):

// ------頁面高度 start
    var $win = $(window), // 用于頁面高度和哈希值監(jiān)聽
        $body = $('body'),
        $fnCTop = $('#fnCTop'),
        $fnCNav = $('#fnCNav'),
        $fnMainBox = $('#fnMainBox'),
        TOPNAVH = $fnCTop.outerHeight() + $fnCNav.outerHeight();

    function setMainBoxHeight() {
        $fnMainBox.outerHeight($win.height() - TOPNAVH).find('#fnSidebar').outerHeight($win.height() - TOPNAVH - 90);
    }
    setMainBoxHeight();
    $win.resize(function (event) {
        setMainBoxHeight();
    });
    // ------頁面高度 end

希望可以解答我的疑惑。感謝。

另外如果我描述不清,可以評論補(bǔ)充,請不要點(diǎn)反對。

嘛,也可以點(diǎn)反對啦,不過也請?jiān)u論告訴理由...怕了怕了。

回答
編輯回答
過客

fixed的定位是相對于瀏覽器窗口,absolute的定位是相對于距離當(dāng)前元素最近的有設(shè)置position屬性的父元素

2017年9月3日 17:54