js基础获取元素样式

 在学习DOM的时候就看到通过三种方法来获取元素样式值。

一、元素.style

     只能 获取 行内样式,就是标签里面写的style样式。无法获取到定义在<style></style>和通过<link href="css.css">加载进来的样式属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<button onclick="btn();">点击</button>
		<div id="box1" style="background:red ;width: 200px; height: 200px;"> </div>
		<script>
			    function btn(){
				    var box1 = document.getElementById("box1");
					alert(box1.style.backgroundColor);
				};
		</script>
	</body>
</html>

   二、 currentStyle 

        这个属性只有IE支持 

        语法:元素.currenStyle.样式名

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>获取元素样式</title>
		<style type="text/css">
			#box1{
				width: 100px;
				height: 100px;
				background-color: red;		
			}
		</style>
		
	</head>
	<body>
		<button	onclick="btn()">点我一下</button>
		<br /><br />
		<div id="box1"></div>
		<script>
		   	var box1= document.getElementById("box1");
		   	function btn(){
				 alert(box1.currentStyle.width);
            };   	    	   	   
		</script>
	</body>
</html>

  三、getComputedStyle
              getComputedStyle() 获取当前元素当前样式,这个方法是Window的方法,可以直接用,    需要2个参数
                                第一个:要获取样式元素
                                第二个:可以传输一个伪元素。一般都传Null
                                该方法返回一个对象,对象 中封装了当前元素的对应的样式
                                可以通过对象.样式名读取样式
                                如果获取样式没有设置,则会获取到真实的值  而不是默认值
                                比如  没有设置width,获取的是具体的宽度,而不是auto
                                但是IE8及以下的浏览器不适合
         

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>获取元素样式</title>
		<style type="text/css">
			#box1{
				width: 100px;
				height: 100px;
				background-color: red;
				
			}
		</style>
	</head>
	<body>
		<button	onclick="btn()">点我一下</button>
		<br /><br />
		<div id="box1"></div>
		
		<script>
		   		var box1= document.getElementById("box1");
		   		function btn() {
				   	    var obj=getComputedStyle(box1,null);
				   	    alert(obj.width);	      
		   		};
		</script>
		
	</body>
</html>

                   

是不是感觉特别的苦恼,万一用户想知道我這个是什么样式的,但是我又不知道用户用的什么浏览器,currentStyle适合IE浏览器,getComputedStyle()这个适合正常的浏览器(除了IE8及其以下的)2个又不能同时共用  ,你想到了什么办法了吗?解决这个兼容性的问题

 

对的,没错,我们可以设置一个方法来封装它

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>获取元素样式</title>
		<style type="text/css">
			#box1{
				width: 100px;
				height: 100px;
				background-color: red;
				
			}
		</style>
	</head>
	<body>
		<button	onclick="btn()">点我一下</button>
		<br /><br />
		<div id="box1"></div>
		<script>
               	var box1= document.getElementById("box1");
		   		function btn(){
				   	alert(getStyle(box1,"width"));	  
		   		};
			   
			  /*定义一个函数,用来获取指定元素的当前样式
			   * 
			   *   参数:obj  要获取的元素
			   *   参数:name  要获取的样式名
			   * 
			   * */
			  function getStyle(obj,name){
			  	  //正常的浏览器方式
			  	  //return getComputedStyle(name,null)[name];
			  	  
			  	  //ie8的方式
			  	  //return obj.currenStyle[name];
			  	  if(window.getComputedStyle){
			  	  	return getComputedStyle(obj,null)[name];
			  	  }else{
			  	  	return obj.currenStyle[name];
			  	  }
			  }
		</script>	
	</body>
</html>

 

 


                           
                            

    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值