第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

檢測(cè)用戶啟動(dòng)的元素大小調(diào)整(不同于文檔流大小調(diào)整)

檢測(cè)用戶啟動(dòng)的元素大小調(diào)整(不同于文檔流大小調(diào)整)

侃侃無極 2022-06-05 16:05:27
我想要一個(gè) iframe 水平占用所有可用空間,并自動(dòng)垂直調(diào)整自身大小以適應(yīng)其內(nèi)容(包括內(nèi)容更改或窗口大小調(diào)整),但用戶也可以使用 CSS 屬性手動(dòng)調(diào)整大小resize: both。目的是嵌入設(shè)計(jì),默認(rèn)情況下填充可用空間,但也讓用戶看到它在不同屏幕尺寸下的工作方式。iframe 來自同一來源,因此不存在安全問題——父窗口可以隨心所欲地使用iframe.contentDocument.自動(dòng)調(diào)整 iframe 的大小以適應(yīng)其內(nèi)容很簡(jiǎn)單:<iframe srcdoc="<h1>The quick brown fox jumps over the lazy doggerel."        style="width:calc(100% - 2px);border:1px solid black"        onload="    recalculate = () => {        this.style.height = this.contentDocument.documentElement.offsetHeight + 'px';    }    new ResizeObserver(recalculate).observe(this.contentDocument.documentElement);    recalculate();"></iframe>(哇,HTML 語法突出顯示在那里真的崩潰了!此外,這里沒有適當(dāng)?shù)摹捌巍保驗(yàn)?CSP 似乎破壞了contentDocument訪問。)制作用戶可調(diào)整大小的 iframe 很簡(jiǎn)單:<iframe srcdoc="<h1>The quick brown fox jumps over the lazy doggerel."        style="resize:both"></iframe>…但是這些技術(shù)并沒有很好地結(jié)合起來,因?yàn)楦鶕?jù)用戶調(diào)整大小的方式與由于窗口大小變化等而調(diào)整大小的方式相同,所以一旦用戶調(diào)整大小,自動(dòng)高度代碼就會(huì)啟動(dòng)并忽略他們剛剛指定的高度。因此,如果用戶手動(dòng)調(diào)整 iframe 的大小,我希望我的自動(dòng)調(diào)整大小以斷開 ResizeObserver。有什么方法可以區(qū)分由于用戶操作(通過角夾子調(diào)整 iframe 的大?。┒鴮?dǎo)致的調(diào)整大?。╥frame 內(nèi)的內(nèi)容更改,或沒有 iframe 的布局更改,包括視口調(diào)整大?。?
查看完整描述

1 回答

?
三國紛爭(zhēng)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

當(dāng)您手動(dòng)調(diào)整大小時(shí),請(qǐng)element.style.{width, height}設(shè)置好。因此,一種解決方案是自動(dòng)調(diào)整大小以不使用這些屬性,而是以其他方式設(shè)置寬度和高度,以便您可以區(qū)分這些值。

對(duì)于width,這很容易,因?yàn)樽詣?dòng)調(diào)整大小僅設(shè)置height: 如果width設(shè)置(或者,如果您設(shè)置類似 的值calc(100% - 2px),則設(shè)置為其他值),斷開自動(dòng)調(diào)整大小。

為了身高?這更難,但我想到了兩種技術(shù):

  1. 在單獨(dú)的樣式表中設(shè)置高度(因此element.style.height根本不設(shè)置),并繼續(xù)更新該樣式元素的文本。

  2. 使用height: var(--height), 并設(shè)置--height為實(shí)際值。除非用戶調(diào)整大小,否則這種方式element.style.height不會(huì)改變。我推薦這種技術(shù),因?yàn)樗菀淄评?,而且我懷疑它可能?huì)快一點(diǎn)(盡管我根本沒有測(cè)試過)。

<style>

iframe {

    width: calc(100% - 2px);

    border: 1px solid black;

    resize: both;

}

</style>

<iframe srcdoc="<h1>The quick brown fox jumps over the lazy doggerel."

        style="height:var(--height)"

        onload="

    recalculate = () => {

        // (var(--height) could just as easily be shifted to the stylesheet,

        // but I’m demonstrating a point here in how it can be done.)

        if (this.style.width || this.style.height !== 'var(--height)') {

            // User resizing has occurred.

            if (observer) {

                observer.disconnect();

            }

            return;

        }

        this.style.setProperty('--height', this.contentDocument.documentElement.offsetHeight + 'px');

    }

    var observer = window.ResizeObserver && new ResizeObserver(recalculate);

    if (observer) {

        observer.observe(this.contentDocument.documentElement);

    }

    recalculate();

"></iframe>


查看完整回答
反對(duì) 回復(fù) 2022-06-05
  • 1 回答
  • 0 關(guān)注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)