display는 요소를 삭제하거나 인라인 속성이나 블록 속성으로 바꿔 보이게 한다.
visibility는 해당 요소를 숨기거나 보이게 할 수 있다.
여기서 인라인 속성이란 좌우로 나열하여 보여주는 것이고
블록속성은 위 아래로 나열하여 보여준다.
display: [none / inline / block];
visibility: [hidden / visible];
위와 같이 사용한다.
none : 삭제
inline : 인라인 적용
block : 블록 적용
hidden : 숨기기
visible : 보이기
삭제와 숨기기는 별 차이 없어보이지만
삭제를 하면 공간을 차지 하지 않고 사라지지만
숨기기를 하면 빈 공간으로 남아있다.
예제를 확인해보자
<html>
<head>
<meta charset="UTF-8">
<title>요소 보이기/숨기기</title>
<link rel="icon" href = "img/btn.png">
<style>
li{
list-style-type: none;
background-color: aqua;
padding: 20px;
display: inline;
}
a:hover{
/*해당 요소를 숨기므로 영역은 남아있음*/
visibility: hidden;/*[visible|hidden]*/
}
#dis{
/*해당 요소를 지우므로 영역도 없어짐*/
/*지웠다 새로 그리는 느낌이기 때문에 조금 느려질 수 있다.*/
display: none;/*[none|inline|block]]*/
}
</style>
<!--스타일이 많으면 로딩이 느려질 수 있다.-->
<!--아이디가 # 클래스가 . 태그는 p-->
</head>
<body>
<ul>
<a href="#"><li>HTML</li></a>
<a href="#"><li>CSS</li></a>
<a href="#"><li>JAVA-SCRIPT</li></a>
<a href="#" id="dis"><li>J-Query</li></a>
<a href="#"><li>BOOT STRAP</li></a>
</ul>
</body>
</html>
![](https://t1.daumcdn.net/cfile/tistory/99FA04335BC6B2DF18)
인라인 속성이라 좌우로 나열되고 사진에는 안나왔지만 마우스가 CSS 부분에 있어 중간에 빈 부분이 있다.
그리고 J-Query도 나와야 하지만 display: none;이라 자리의 흔적조차 보이지 않는다.
display를 이용해서
https://qdgbjsdnb.tistory.com/134
https://qdgbjsdnb.tistory.com/142
두 예제를 합친 최종본의 본문을 보였다 숨겼다를 적용해보자
본문 내용은 조금 변경한다.
<html>
<head>
<meta charset="UTF-8">
<title>메인 Page</title>
<link rel="icon" href = "img/btn.png">
<style>
div.content{
background-image: url("img/bg.png");
background-repeat: no-repeat;
background-position: right bottom;
background-size: 200px;
height: 60%;
}
dt{
font-weight: 600;
font-size: 120%;
}
#dt1:hover{
/*해당 요소를 숨기므로 영역은 남아있음*/
visibility: hidden;/*[visible|hidden]*/
}
#dt2:hover{
/*해당 요소를 숨기므로 영역은 남아있음*/
visibility: hidden;/*[visible|hidden]*/
}
#dt3:hover{
/*해당 요소를 숨기므로 영역은 남아있음*/
visibility: hidden;/*[visible|hidden]*/
}
#dt4:hover{
/*해당 요소를 숨기므로 영역은 남아있음*/
visibility: hidden;/*[visible|hidden]*/
}
</style>
</head>
<body>
<iframe src="exercise_03_navi.html" width="100%" height="51" frameborder="0" scrolling="no"></iframe>
<h2>HTML</h2>
<hr/>
<div class="content">
<dl>
<a href="#" id="dt1">
<dt>
정의
<dd>
HTML은 Hyper Text Markup Language의 약자 입니다.
</dd>
</dt>
</a>
<a href="#" id="dt2">
<dt>
용도
<dd>
웹 어플리케이션의 뼈대를 만듭니다.
</dd>
</dt>
</a>
<a href="#" id="dt3">
<dt>
추가 학습1
<dd>
CSS
</dd>
</dt>
</a>
<a href="#" id="dt4">
<dt>
추가 학습2
<dd>
JAVA SCRIPT, J-Query
</dd>
</dt>
</a>
</dl>
</div>
<iframe src="exercise_03_footer.html" width="100%" frameborder="0" scrolling="no"></iframe>
</body>
</html>
결과는 다음과 같다.
![](https://t1.daumcdn.net/cfile/tistory/99CBA0415BC6B52919)
![](https://t1.daumcdn.net/cfile/tistory/99DABB415BC6B52A18)
첫번째 결과에 추가학습 2에 마우스를 올렸을 때 스크린샷이다.(마우스가 안찍힘)
추가로 예전에 했던 iframe 예제에서 메뉴의 HTML을 눌렀을 때
위의 페이지로 이동하게 하려면 다음과 같이 바꾸면 된다.
![](https://t1.daumcdn.net/cfile/tistory/9949983A5BC6B6BE14)
여기서 파란 네모친 부분에 HTML을 누르면
다음 화면으로
![](https://t1.daumcdn.net/cfile/tistory/990923395BC6B6D921)
이 부분은 메뉴바에서 <a href="subpage01.html"><li>HTML</li></a>부분이 있는데
이렇게 입력했을 때는 iframe 내에서만 열려 이상하게 표시된다.
그러므로 대상을 부모 프레임으로 바꾸어 주어야 한다.
<a href="subpage01.html" target="_parent"><li>HTML</li></a> 타겟을 위와같이 입력하면 된다.