<div id="sample01" class="sample">
<h3 class="blue">크기 및 위치를 표현하는 속성 및 메서드</h3>
<div class="view">
<div class="sbox">
<span>
width: 400px; <br>
margin: 20px; <br>
border: 1px; <br>
padding: 20px;
</span>
</div>
<p class="sResult">여기에 결과값이 표시됩니다.</p>
</div>
<div class="button">
<a href="#" class="btn1">박스의 너비값(clientWidth)을 구합니다.</a>
<a href="#" class="btn2">박스의 높이값(clientHeight)을 구합니다.</a>
<a href="#" class="btn3">박스의 Y축 값(clientTop)을 구합니다.</a>
<a href="#" class="btn4">박스의 X축 값(clientLeft)을 구합니다.</a>
<a href="#" class="btn5">박스의 너비값(offsetWidth)을 구합니다.</a>
<a href="#" class="btn6">박스의 높이값(offsetHeight)을 구합니다.</a>
<a href="#" class="btn7">박스의 Y축 값(offsetTop)을 구합니다.</a>
<a href="#" class="btn8">박스의 X축 값(offsetLeft)을 구합니다.</a>
<a href="#" class="btn9">박스의 element.getBoundingClientRect( )을 구합니다.</a>
</div>
<!-- //button -->
</div>
a {
text-decoration: none;
}
.sample .view {
border: 1px solid #aaa2dd;
padding: 30px 20px 20px 20px;
}
.sample .blue {
background-color: #eeebff;
padding: 10px 20px 10px 20px;
border-radius: 5px 5px 0 0;
margin-bottom: 0;
border: 1px solid #aaa2dd;
border-bottom: 0;
color: #222;
}
.sample .sbox {
width: 400px;
height: 200px;
background-color: #c6bff3;
border: 1px solid #9887f7;
padding: 20px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
margin: 20px auto;
text-align: center;
color: #fff;
}
.sample .sbox::after {
content: '';
width: 480px;
height: 280px;
border: 1px dashed #9887f7;
position: absolute;
left: -21px;
top: -21px;
}
.sample .sbox::before {
content: '';
width: 398px;
height: 198px;
border: 1px dashed #9887f7;
position: absolute;
left: 20px;
top: 20px;
}
.sample .sResult {
text-align: center;
padding-top: 10px;
}
.sample .button {
border: 1px solid #a2cbfa;
border-top: 0;
padding: 20px;
}
.sample .button a {
border: 1px solid #958bdb;
color: #8b80ce;
border-radius: 40px;
padding: 10px 20px;
display: inline-block;
margin: 5px;
}
.sample .button a:hover {
background-color: #958bdb;
color: #fff;
}
const box1 = document.querySelector("#sample01 .sbox");
document.querySelector("#sample01 .btn1").addEventListener("click", (e) => {
e.preventDefault();
document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.clientWidth + " px 입니다. (바깥여백/테두리 불포함)";
});
document.querySelector("#sample01 .btn2").addEventListener("click", (e) => {
e.preventDefault();
document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.clientHeight + " px 입니다. (바깥여백/테두리 불포함)";
});
document.querySelector("#sample01 .btn3").addEventListener("click", (e) => {
e.preventDefault();
document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.clientTop + " px 입니다. (부모를 기준으로 계산)";
});
document.querySelector("#sample01 .btn4").addEventListener("click", (e) => {
e.preventDefault();
document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.clientLeft + " px 입니다. (부모를 기준으로 계산)";
});
document.querySelector("#sample01 .btn5").addEventListener("click", (e) => {
e.preventDefault();
document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.offsetWidth + " px 입니다. (바깥여백/테두리 포함)";
});
document.querySelector("#sample01 .btn6").addEventListener("click", (e) => {
e.preventDefault();
document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.offsetHeight + " px 입니다. (바깥여백/테두리 포함)";
});
document.querySelector("#sample01 .btn7").addEventListener("click", (e) => {
e.preventDefault();
document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.offsetTop + " px 입니다. (문서를 기준으로 계산)";
});
document.querySelector("#sample01 .btn8").addEventListener("click", (e) => {
e.preventDefault();
document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.offsetLeft + " px 입니다. (문서를 기준으로 계산)";
});
document.querySelector("#sample01 .btn9").addEventListener("click", (e) => {
e.preventDefault();
const box = document.querySelector("#sample01 .sbox");
const result = document.querySelector("#sample01 .sResult");
const rect = box.getBoundingClientRect();
result.innerHTML = "";
// rect 안에 있는 key 값을 불러오자
for( let key in rect){
if(typeof rect[key] !== "function"){ // key 값에서 함수가 아닌 것을 찾기
let span = document.createElement("span"); // 그 값을 span 에 넣어줌
span.textContent = `${key}: ${rect[key]} `; // 표현 방법 (x : 100) 설정
result.appendChild(span); // 그 결과를 span 에 출력
}
}
// document.querySelector("#sample01 .sResult").innerHTML = "이 박스의 가로값은 "+ box1.getBoundingClientRect() + " px (문서를 기준으로) 입니다.";
// console.log(box1.getBoundingClientRect());
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.