JS下offsetLeft,style.left,以及jQuery中的offset().left,css("left")的區別。javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
body{
margin:50px;
/**/
}
.wrap{
width:300px;
height: 300px;
background-color: red;
left:200px;
position:relative;
}
.inner{
position: absolute;
width: 100px;
height: 100px;
left: 50px;
background-color: blue;
}
</style>
<script type="text/javascript" src="js/lib/bootstrap/js/jquery-1.11.3.js"></script>
</head>
<body>
<div class="wrap" id="wrap" style="left:200px;">
<div class="inner" id="inner">
</div>
</div>
<script type="text/javascript">
console.log($(".wrap").css("left")); /*若是父元素中有定位元素,都是相對於上一個定位元素(position不爲static)定位。此處相對於body的左邊,有單位 200px*/
console.log($(".wrap").offset().left); /* 它永遠是相對於文檔的左邊緣(每每體現爲瀏覽器的左邊緣)定位的 沒有單位 249.9999999 */
console.log(document.getElementById("wrap").offsetLeft); /*若是沒有已經定位的父元素,那麼offsetLeft指向的是文檔(document)的左邊緣 沒有單位 250*/
console.log(document.getElementById("wrap").style.left); /*style.left與css("left")指向的是body的左邊緣* 有單位 200px/
console.log($(".inner").css("left")); /* 相對於上一個定位元素 50px */
console.log($(".inner").offset().left); /*文檔的左邊緣 沒有單位 300*/
console.log(document.getElementById("inner").offsetLeft); /*相對於上一級 沒有單位 50*/
// console.log("若是style.left沒有在內聯樣式中指定:"+document.getElementById("inner").style.left);
</script>
</body>
</html>