zoukankan      html  css  js  c++  java
  • offsetLeft在各浏览器的值

    上网找了好久没有找到一个offsetLeft在各浏览器的值,自己用了一晚上的时间在各浏览器测试出来的offsetLeft的值。

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>offsetLeft和offsetTop</title>
    	<style>
    	*{
    		margin: 0px;
    		padding: 0px;
    	}
    	body{
    		 500px;
    		height: 200px;
    		padding: 25px;
    		margin: 32px;
    		border: 51px solid yellow;
    		background: pink;
    		/* position: absolute; */
    
    		/* 108*/
    	}
    	#pppd1{
    		 1000px;
    		padding: 1px;
    		margin: 3px;
    		border: 4px solid yellow;
    		position: absolute;
    
    		/* 8 */
    	}
    	#ppd1{
    		 1000px;
    		padding: 11px;
    		margin: 3px;
    		border: 4px solid yellow;
    
    		/* 18 */
    	}
    	#pd1{
    		 10px;
    		height: 100px;
    		padding: 1px;
    		margin: 3px;
    		border: 6px solid yellow;
    		background: pink;
    		/* 10 */
    	}
    	#d1{
    		 100px;
    		height: 200px;
    		padding: 20px;
    		margin: 30px;
    		border: 40px solid skyblue;
    		background: pink;
    	}
    </style>
    </head>
    <body>
    	<div id="pppd1">
    	<div id="ppd1">
    	<div id="pd1">
    		<div id="d1"></div>
    	</div>
    	</div>
    	</div>
    </body>
    </html>
    <script>
    	var d1 = document.getElementById('d1');	
    	console.log(d1.offsetLeft);
    </script>
    <!-- 
    ie 6/7 () 无论父级怎么改变offset永远不变
    offsetLeft = (父padding-left)+(当margin-left)
    ---------------------------------------------------------------------------------
    
    父级没有定位且父级是body时
    firefox
    offsetLeft = (父padding-left)+(父margin-left)+(当margin-left)
    
    ie8/9/10/11 chrome
    offsetLeft = (父padding-left)+(父margin-left)+(父border-left)+(当margin-left)
    
    
    
    ---------------------------------------------------------------------------------
    父级没有定位且父级有多层时
    ie8/9/10/11 chrome (所有父,包括body)
    offsetLeft = (所有父padding-left)+(所有父margin-left)+(所有父border-left)+(当margin-left)
    
    firefox  (所有父,不包括body)
    offsetLeft = (所有父padding-left)+(所有父margin-left)+(所有父border-left)+(当margin-left)+ (body的padding-left)+(body的margin-left)
    
    
    --------------------------------------------------------------------------------------
    父级有定位且定位不是在body
    ie8/9/10/11 chrome 和firefox 
    向上取父级,把所有父级元素的padding-left、margin-left、border-left相加,直到的遇到定位时,把定位元素的padding-left相加,最后加上自身元素的margin-left
    offsetLeft = (无定位父padding-left)+(无定位父margin-left)+(无定位父border-left)+(有定位父padding-left)+(当padding-left)
    ----------------------------------------------------------------------------------------
    父级有定位且定位是了在body
     chrome  
    向上取父级,把所有父级元素的padding-left、margin-left、border-left相加,直到的遇到body定位时,把body定位元素的padding-left和border-left相加,最后加上自身元素的margin-left
    offsetLeft = (无定位父padding-left)+(无定位父margin-left)+(无定位父border-left)+(有定位父padding-left)+(有定位父border-left)+(当padding-left)
    
    ie8/9/10/11 和firefox  这个和定位不是在body时是一样的
    向上取父级,把所有父级元素的padding-left、margin-left、border-left相加,直到的遇到body定位时,把body定位元素的padding-left和border-left相加,最后加上自身元素的margin-lef
    offsetLeft = (无定位父padding-left)+(无定位父margin-left)+(无定位父border-left)+(有定位父padding-left)+(当padding-left)
    
    ----------------------------------------------------------------------------------------
    1级父级有定位且定位不是body
    在chrome和firefox下,ie还没有测试
    offsetLeft =(当margin-left);
    所以可以用这个属性去写滑动的效果
     -->
    
    
  • 相关阅读:
    没有加注解的后果
    异常:javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;
    页面的跳转
    SpringBoot的修改操作
    抛出异常
    SpringBoot中的控制层的程序中的方法有返回值的原因
    Maven创建的项目使用SpringBoot框架运行时Progress窗口出现的过程
    @Entity注解不同来源
    maven项目不能正常导入到eclipse中
    使用mpvue开发小程序特别需要注意生命周期勾子created和beforeCreate问题
  • 原文地址:https://www.cnblogs.com/hyx626/p/9840239.html
Copyright © 2011-2022 走看看