offsetLeft不是当前元素的左外边框到包含元素的左内边框之间的像素距离吗?
为什么多出了8px
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test2</title>
<style media="screen">
.cc{
padding: 50px 30px;
}
.fc{
background-color: blue;
width:300px;
height: 200px;
}
</style>
</head>
<body>
<p class="cc">
<p class="fc" >
</p>
</p>
</body>
<script type="text/javascript">
var fc = document.querySelector('.fc');
console.log(fc.offsetLeft+':'+fc.offsetTop);
</script>
</html>
offsetLeft
및offsetTop
은offsetParent
요소를 기준으로 한 거리를 반환하는 반면,offsetParent
는 요소의 가장 가까운 상위 위치 요소를 참조합니다. 위치가 지정된 요소가 없으면 문서 루트 노드입니다.지금 출력하는 값에 본문 자체를 더한 값에는 8px의 여백이 있는데 이는 실제로 정확합니다.
body { margin:0 }
을 추가하거나 상위 요소에 위치 지정을 추가하면 예상한 숫자가 출력됩니다.기본적으로 8px의 여백이 있습니다. 기본 스타일을 지우려면
*{margin:0;}
을 사용하세요.