我的許多元素絕對位於我的頁面中。重新調整窗口大小調整(所有這些)的最佳實踐方法是什麼?在窗口上重新定位絕對定位元素的最佳實踐調整大小
回答
我建議最好的做法是用CSS來做到這一點,並儘量避免用JavaScript做到這一點。因此,儘可能避免絕對定位,並且在定位絕對使用百分比而不是像素值時儘可能使用right
而不是left
定位要右對齊的元素時,使用bottom
而不是top
定位要錨定到底部的元素等例如:讓瀏覽器爲你處理。
實施例:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Resize Demo Page</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
#anchorRight {
position: absolute;
right: 0px;
top: 20%;
border: 1px solid black;
}
#anchorBottom {
position: absolute;
bottom: 0px;
left: 20%;
border: 1px solid black;
}
#anchorBoth {
position: absolute;
right: 0px;
bottom: 0px;
border: 1px solid black;
}
</style>
</head>
<body>
<p>Look, Ma, no JavaScript required.</p>
<div id='anchorRight'>Anchor right, 20% from top</div>
<div id='anchorBottom'>Anchor bottom, 20% from left</div>
<div id='anchorBoth'>Anchor bottom and right</div>
</body>
</html>
純CSS解決方案可能不總是可能的。使用JavaScript時,您不僅需要觀察窗口大小調整事件,而且還需要觀看文本大小調整,這更加痛苦(Google的Closure library包含用於實現此目的的實用程序)。另外,請確保內置hysteresis,以避免在實際調整大小操作期間過於頻繁地重新定位元素。 (一個簡單的方法是通過設置一個函數來調整調整大小,該函數在四分之一秒後調用setTimeout
並記住計時器句柄;如果在函數被調用之前得到另一個調整大小事件,則取消較早的計時器並設置一個新的,你可以設置一個最大次數你推遲調整大小,然後再繼續[顯示臨時更新],但由於用JavaScript移動這些東西可能有點慢,你不想在每臨時事件在操作過程中獲得)
+1:我只會提醒開發者應該檢查一下距離視口邊緣的百分比距離是否是他真正想要的。 – Robusto 2010-03-09 13:27:30
@Robusto:哦,絕對。我只在示例中使用了百分比來證明一個*可以*。這可能會玷污這一點... – 2010-03-09 13:28:31
使用jQuery,你可以做到以下幾點:。
jQuery(window).resize(function() {
jQuery('#ContainerDiv').html(jQuery('#ContainerDiv').html());
});
雖然它可能不是最好的做法。
- 1. 在調整窗口大小時,可以使用JavaScript重新定位元素嗎?
- 2. 絕對定位和窗口大小調整
- 3. CSS絕對定位和調整窗口大小
- 4. IE不自動調整大小絕對定位的元素
- 5. 如何在調整窗口大小時重新定位JButton
- 6. 保留絕對定位和居中div的窗口大小調整大小
- 7. JQuery Resizable - 在調整大小時更新元素絕對位置
- 8. CSS定位圖像用窗口重新調整大小
- 9. 窗口大小調整時停止圖像重新定位
- 10. 瀏覽器調整大小的位置元素絕對位移
- 11. 調整大小的最佳實踐JScrollPane
- 12. 重新渲染定位在窗口上的HTML元素在Javascript幻燈片動畫中調整大小
- 13. 調整窗口上的html元素的大小調整大小
- 14. 無絕對定位的定位元素
- 15. 如何保持絕對定位的元素在窗口大小重疊上重疊?
- 16. 在畫布上調整大小和重新定位圖像調整大小
- 17. 以編程方式調整大小/重定位vaadin窗口
- 18. 窗口右側的元素重疊在窗口調整大小
- 19. jQueryUI對話框定位窗口調整大小
- 20. IE7沒有正確定位對話窗口調整大小
- 21. 基於窗口調整大小的jQuery位置元素
- 22. 在調整窗口大小時調整UI元素的大小
- 23. jQuery的:在窗口重新定位DIV的絕對位置(上和左屬性)調整
- 24. 可調整大小的父圖像上的定位元素
- 25. 重新計算絕對定位元素的位置?
- 26. 定位元素相對於另一個和絕對的窗口
- 27. 如何保持絕對定位元素的佈局大小調整比例
- 28. 轉換後的元素在調整窗口大小時並不尊重Firefox的絕對位置
- 29. 如何在窗口大小調整後(有效)重新定位KineticJS形狀?
- 30. 固定定位元素內的絕對定位元素
我認爲人們會需要更多的信息,因爲有很多不同的方式可以將元素完全定位。 – Pointy 2010-03-09 12:16:24
不同的方式?我認爲位置:絕對與頂部和左側將他們絕對定位 – Ajay 2010-03-09 12:19:04
@Ajay以及是的;這不是我的意思:-)我的意思是,這取決於你的網頁是什麼樣子。有時候,事物定位的方式 - 即使是「位置:絕對」 - 也是他們會隨窗口一起調整大小。有時,當窗口調整大小時,它們沒有任何意義。這完全取決於設計。 – Pointy 2010-03-09 12:26:41