day-12.1 获取元素的最终样式(.clientWidth(),.offsetWidth(),scrollWidth());
元素样式代码;
通过
1、clientWidth
2、offsetWidth
3、scrollWidth
获取元素的最终样式;
1 <body> 2 <div id="wrap"></div> 3 <script> 4 var oWrap = document.getElementById("wrap"); 5 //var w = oWrap.clientWidth; // width + padding; 6 //var w = oWrap.offsetWidth; //width + padding + border 7 var w = oWrap.scrollWidth; // width+padding + 内容超出部分的宽度(如果没有超出,该API和clientWidth一样); 8 console.log(w); 9 </script> 10 </body>
offsetTop和offsetLeft 获取元素的相对于定位参考的父级元素的定位值获取;
1 <script> 2 /* clientWidth //获取元素的content宽/高 + padding的宽/高 3 clientHeight 4 5 * offsetWidth //获得取元素的content宽/高 + padding的宽/高 + border的大小 6 * offsetHeight 7 * offsetTop 获取元素离定位父级的顶部距离 8 * offsetLeft 9 * 10 * scorllWidth 11 * scorllHeight 12 * 13 */ 14 var oBox = document.getElementById("box"); 15 //console.log(oBox.clientWidth ); 16 // console.log(document.body.clientHeight );//获取页面的实际宽/高 17 // console.log(document.documentElement.clientWidth );//获得文档的可视区域的宽/高,不包括滚动条 18 //没有兼容性问题,但是在IE8及以下的时候会有几px的误差值 19 //console.log(oBox.offsetTop) 20 function getOfffset(dom) { 21 var obj = { 22 left : 0, 23 top : 0 24 }; 25 while (dom !== document.body){ 26 obj.top += dom.offsetTop; 27 obj.left += dom.offsetLeft; 28 dom = dom.offsetParent; 29 } 30 return obj; 31 } 32 console.log( getOfffset( oBox.children[0].children[0] ).left ); 33 /* 34 * p 35 * obj.top = 30; 36 * dom = div 37 * 38 * div 39 * obj.top 40 */ 41 </script>
Html文档的每个元素的样式都存在compute这个对象内;可以通过getCompute()这个API去获取;
1 <body> 2 <div id="wrap"></div> 3 4 <script> 5 var oWrap = document.getElementById("wrap"), 6 oWrapStyle =getComputedStyle(oWrap); 7 console.log(oWrapStyle.width); //获取width值; 8 oWrapStyle.width = "400px"; //报错,red-only,由于是引用数据类型,所以修改可能会修改到元素的样式;所以这个对象的值被设定成只能读取,而不能改写的; 9 console.log(oWrapStyle.background-color); //获取color值; 10 </script> 11 </body>
浙公网安备 33010602011771号