display: none : HTML 구조는 남고, 화면에서 영역이 사라진다.
visibility: hidden : 화면에서 사라지지만 영역은 가지고있다.
opacity: 0 : 불투명도를 조절하는거라 영역은 그대로 있다. 애니메이션 적용가능
transfrom : scale(0) : 요소의 크기를 축소시켜 안보이게함. 애니메이션 적용가능
position: absolute : top, left 를 함께 사용해 요소를 다른곳으로 보내버린다. 영역도 사라짐.
width: 0; height: 0; : 화면에서 영역이 사라진다. 단, 텍스트는 남을 수 있는데 overflow: hidden을 추가해주면 텍스트도 사라짐
각 속성들이 어떻게 숨겨지는지 궁금하다면 아래 코드펜을 확인해보자!
See the Pen Untitled by So-An (@So-An) on CodePen.
웹 접근성이란 고령자, 장애인, 비 장애인 등 웹을 이용하려는 사용자 모두에게 동등한 정보를 제공해야 하는것을 말한다.
예시로 네이버 사이트에 접속을 했다고치자. 대부분의 사람들은 아이콘을 봤을때 아 저게 메뉴구나, 페이구나를 알아볼 수 있다. 하지만 시각장애인이 접속했을때 저런 아이콘 하나로 이게 무슨 버튼인지, 무슨아이콘인지 알 수 없다. 웹 접근성을 위해서는 스크린 리더가 읽을 수 있도록 보조로 설명하는 글이 필요하다.

실제로 개발자 도구를 켜서 네이버 사이트를 보다보면 blind 클래스를 가진 요소들을 찾아볼 수 있다. 이 클래스를 가진 요소들은 화면상에서 보여지진 않지만, 스크린리더가 읽을 수 있는 요소들이다.

앞서 다양한 CSS 속성을 사용해서 요소 숨기는법을 알려줬다. 하지만 대표적으로 display: none같은 경우는 스크린리더기에서 읽히지 않는다.
웹 접근성을 위해서는 화면에서만 보이지 않으면서 스크린 리더가 읽을수 있게 작성을 해줘야한다.
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap; /* 줄바꿈 금지 */
}
.hide {
display: block;
position: absolute;
border: 0;
width: 1px;
height: 1px;
clip: rect(1px, 1px, 1px, 1px);
overflow: hidden;
}
.blind {
position: absolute;
clip: rect(0, 0, 0, 0);
width: 1px;
height: 1px;
margin: -1px;
overflow: hidden;
}
작성자마다 사용하는 속성이 약간씩 다르지만 핵심은 이거인듯하다
position: absolute를 이용해 본문의 흐름에서 떼어놓고width: 1px hight: 1px을 주어 최소 크기로 만들고margin: -1px 요소에 역마진을 부여함으로써 요소가 차지하는 공간을 제거한다.clip: rect(0, 0, 0, 0) : 요소를 클리핑하여 표시되지않게 한다overflow: hidden 속성으로 요소를 넘치지 않게 만들어준다.See the Pen CSS 요소 숨기기2 by So-An (@So-An) on CodePen.