1 回答

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ù):
在單獨(dú)的樣式表中設(shè)置高度(因此
element.style.height
根本不設(shè)置),并繼續(xù)更新該樣式元素的文本。使用
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>
添加回答
舉報(bào)