大家都知道在JavaScript原生操作中取得元素的樣式,在實際操作是使用時比較頻繁的一件事,這裡像大家介紹下獲取css樣式的方法,希望可以幫助一些需要的人,如果有幸被大牛看到,有更好的辦法,歡迎提出! ! !
一、 行內元素樣式取得:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>js获取外部样式</title></head><body> <div id="div" style="width:200px;height:200px;border:3px solid cyan;"></div></body><script> //获取行间样式 var div = document.getElementById(‘div‘); var width = div.style.width; alert(width);//200px</script></html>
在JS程式碼中,alert會彈出div元素的width為200px;達到了要取得元素寬度的目的,但是這種簡單的方法只適用於取得元素的行內元素樣式,並不能取得內部樣式和外部樣式,在專案中,寫入行內元素這種方案並不被大家認同,所以這種方法,只是讓大家了解下。
二、 非行間樣式元素獲取:
如果元素樣式並非行間樣式,利用上面這種方法並不能獲取到元素的樣式,需要使用另一種方法:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>js获取内部部样式</title> <style> #div{ width: 200px; height: 200px; border:3px solid cyan; } </style></head><body> <div id="div""></div></body><script> var div = document.getElementById(‘div‘); //获取div的width var width = window.getComputedStyle(div,null).width; alert(width);//200px //修改div的width div.style.cssText=‘width:300px;‘</script></html>
在上面程式碼中,使用了window.getComputedStyle('元素',null).'樣式',此方法兼容性:火狐谷歌IE9獲取的為計算後的樣式,但是這裡需要注意的是用此方法獲取的值為只讀模式,並不能修改,所以用了style.cssText方式修改了其屬性,這裡需要注意下書寫方式.
三、相容性:
前段潛規則,凡是好的東西都不能通用,是的,你猜對了,任性的IE並不能使用以上方法,但是IE有自己的方法為currentStyle,用法一樣,就不再贅述了,下面直接寫出已經處理兼容的代碼如下:
var div = document.getElementById(‘div‘);if (div.currentStyle) { console.log(div.currentStyle.width); }else{ console.log(getComputedStyle(div,null).width); } 方法封装: function getStyle(obj,name){ if (obj.currentStyle) { return obj.currentStyle[name]; }else{ return getComputedStyle(obj,false)[name]; } }
原生JS獲取HTML樣式並修改
更多原生JS取得HTML樣式並修改 相關文章請追蹤PHP中文網!