我有一個DIV從單獨的樣式表中的CSS類獲取其高度。但是這個高度有時會在Javascript中改變。我可以直接從樣式表中讀取CSS高度而不創建新元素嗎?css:如何訪問一個沒有被元素使用的值?
回答
你可以做這樣的事情:
var myDiv = $("#myId");
alert('initial height from css is: ' + myDiv.css("height"));
myDiv.css("height","50px");
alert('height modified by js is: ' + myDiv.css("height"));
// store modified height value
var height = myDiv.css("height");
// set height to an invalid value
myDiv.css("height","");
alert('height is now retrieved from css again: ' + myDiv.css("height"));
// restore height value
myDiv.css("height",height);
我創建了一個jsfiddle.net例如,您可以查看它here。
不,你不能讀取CSS的任何屬性。
您可以創建一些後端API,允許您直接從JavaScript更改CSS文件,而不是將更改height
的CSS文件,而不是將style
應用於元素。
如果我正確地解釋這一點,他詢問如何使用JavaScript來讀取一個樣式屬性在樣式表中聲明,而不是它可能已經被其他腳本改變現有元素的計算樣式。 – BoltClock
你的意思是服務器端?我正在創建一個可以離線運行的簡單遊戲(人們可以在線玩或購買文件並在本地運行),因此服務器代碼不是一種選擇。 –
這是可能的,前提是高度變化是由已知病因啓動。
首先,保存當前在線的高度/類名。然後,重置類/高度屬性。然後,使用window.getComputedStyle
方法讀取當前高度。最後,恢復類/高度屬性。我們假設不必刪除類名,因爲只有通過設置內聯height
屬性才能更改高度。然後:
function getCSSheight(elem) {
var style = window.getComputedStyle(elem, null);
return style.getPropertyValue("height"); //Returns 222px;
// Optionally: Use parseFloat to convert the `22px` to `22`.
}
這是否意味着我必須重置高度,即使只是幾分之一秒?我的DIV對象靠近固定大小屏幕的底部。我減少他們的高度,以避免強制屏幕調整大小。即使是臨時調整到全高也會導致問題。 –
- 1. CSS對齊3個HTML元素,沒有訪問HTML
- 2. 如何使用Watir訪問另一個元素之後的元素?
- 3. 如何訪問被單擊元素的父元素?
- 4. 如何通過CSS訪問元素的類值
- 5. 訪問元素值
- 6. 如何重寫一個CSS類,使其沒有被應用?
- 7. 如何訪問只有一個元素或多個元素的數組中的同一元素?
- 8. 訪問沒有ID的畫布元素
- 9. 訪問沒有ID的DOM元素
- 10. 如何使用JavaScript從另一個頁面訪問元素ID?
- 11. 如何使用Javascript訪問iframe元素?
- 12. 如何使用Javascript訪問SVG元素
- 13. jQuery - 如果沒有元素被調用?
- 14. 使用JavaScript訪問沒有ID的HTML元素
- 15. 如何使用css選擇每個類的第一個元素
- 16. 爲什麼這個html元素的類信息沒有被Javascript訪問?
- 17. 如何訪問沒有檢票的HTML元素:ID
- 18. 如何訪問沒有ID的HTML元素?
- 19. 如何使用CSS元素沒有轉型定位
- 20. css - 有沒有什麼辦法可以禁用css元素與另一個css元素
- 21. Monotouch.dialog - 如何創建一個委託來訪問一個元素當它被修改時的值
- 22. 使用Backbone.js訪問元素
- 23. 訪問元素使用D3
- 24. ,如何在訪問不同的元素使用這個根元素$ EL
- 25. 如何使用帶WebMatrix的C#.net Web頁訪問單個XML元素的值?
- 26. 如何訪問一個元素的座標,因爲它是被拖到
- 27. Jquery - 如何訪問被點擊的元素來運行一個函數?
- 28. 如何在循環時訪問上一個/下一個元素?
- 29. 使用jquery如何更改具有某個CSS類的元素的href值?
- 30. CSS:一個元素
謝謝。看起來你正在創建一個臨時元素,然後閱讀它的屬性 - 所以直接從樣式表中讀取是不可能的? –
這個例子不是創建一個新的元素;它首先保存計算的高度值,重置元素的高度樣式,以便它取得css值並在修改之前將該值恢復到其值。你爲什麼不想創建一個新的元素?因爲這個解決方案很可能會在執行過程中引起顯示器的一些變化,從用戶體驗的角度來看這不會是好事。 – melihcelik
我想避免創建一個新元素,因爲當我想要做的是從樣式表中讀取一個值時,它改變DOM時效率低下。但它看起來像我必須。我不能快速調整原始元素的大小:它是遊戲中的角色,當它的腳離開屏幕時,我會縮小DIV,否則頁面會調整大小,並且看起來不對。 –