CSS display:none이란?
CSS의 display: none은 개발자가 display 속성값을 none으로 설정해 특정 요소를 화면에서 완전히 숨길 수 있게 해주는 기능입니다. display가 none으로 지정된 요소는 렌더링 과정에서 어떠한 박스(box)도 생성되지 않으며, 해당 요소의 자식 요소들이 display 값을 별도로 지정했더라도 함께 화면에 표시되지 않습니다.
참고로 display: none은 visibility: hidden과 달리 요소가 차지하던 공간 자체가 사라지기 때문에, 페이지 레이아웃에 영향을 주지 않으면서 요소를 제거한 것과 같은 효과를 냅니다.
문법(Syntax)
CSS display:none의 기본 문법은 다음과 같습니다 −
Selector {
display: none;
}예제 1: 버튼 클릭으로 요소 숨기기
다음 예제는 'Hide Primary Colors(기본 색상 숨기기)' 버튼을 클릭하면 primary 클래스를 가진 요소들에 display: none이 적용되어 화면에서 사라지는 동작을 보여줍니다 −
<!DOCTYPE html>
<html>
<head>
<title>CSS Display None</title>
<style>
form {
width:70%;
margin: 0 auto;
text-align: center;
}
* {
padding: 2px;
margin:5px;
box-sizing: border-box;
}
input[type="button"] {
border-radius: 10px;
}
.child{
display: inline-block;
height: 40px;
width: 40px;
color: white;
border: 4px solid black;
}
.child:nth-of-type(1){
background-color: #FF8A00;
}
.child:nth-of-type(2){
background-color: #F44336;
}
.child:nth-of-type(3){
background-color: #C303C3;
}
.child:nth-of-type(4){
background-color: #4CAF50;
}
.child:nth-of-type(5){
background-color: #03A9F4;
}
.child:nth-of-type(6){
background-color: #FEDC11;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>CSS-Display-None</legend>
<div id="container">
<div class="child"></div><div class="child primary"></div><div class="child"></div><div class="child"></div><div class="child primary"></div><div class="child primary"></div>
</div><br>
<input type="button" value="Hide Primary Colors" onclick="displayNone()">
</fieldset>
</form>
<script>
var primaryColor = document.getElementsByClassName('primary');
function displayNone(){
for(var i=0; i<3; i++)
primaryColor[i].style.display = 'none';
}
</script>
</body>
</html>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −
'Hide Primary Colors' 버튼을 클릭하기 전 −

'Hide Primary Colors' 버튼을 클릭한 후 −

예제 2: 다양한 display 값 비교
이번에는 flex, none, inline-block, grid 등 여러 display 값을 함께 사용하여 각 값이 화면에 어떻게 렌더링되는지 살펴보겠습니다. 이 예제에서 id가 none인 span 요소에는 display: none이 적용되어 화면에 표시되지 않습니다 −
<!DOCTYPE html>
<html>
<head>
<style>
#flex {
display: flex;
}
#none {
display: none;
}
.inline-block {
display: inline-block;
background-color: mintcream;
}
.grid {
display: grid;
background-color: orange;
}
div {
margin: 50px;
padding: 10px;
height: 10px;
line-height: 5px;
text-align: center;
background-color: red;
border: 2px solid blue;
}
div > div {
background-color: yellow;
border: 2px solid green;
}
div > div > div {
background-color: sandybrown;
border: 4px solid darkred;
}
</style>
</head>
<body>
<div><span id="flex">AAAAAA</span>
<div><span id="none">BBBBBB</span>
<div>
<span class="inline-block">CCCCC</span>
<span class="inline-block">DDDDD</span>
<div>
<span class="grid">EEEE FFFF</span>
<span class="grid">GGGG HHHH</span>
</div>
</div>
</div>
</div>
</body>
</html>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −
