[CSS]요소를 보이지 않게 하는 속성 3가지

chooing·2022년 4월 8일
2

CSS

목록 보기
5/10

웹페이지를 구현하다보면 디자인 상으로는 없는 요소이지만 접근성을 위해 넣어야하는 요소가 있다. 이 요소는 보이지 않아야해 화면에서 숨김처리가 되어야하는데, 이때 사용되는 CSS 설정 중 overflow:hidden이라는 속성이 들어간다.

display: nonevisibility: hidden을 안다면 왜 overflow:hidden가 사용되었는지 궁금할 것이다. 어차피 3개다 화면에서 안보이게 하는건 똑같이 않는가? 이번에 그 차이에 대해 알아보고자 한다.

case01. height 값을 넘어선 콘텐츠 내용

예시는 하늘색 상자에 비해 글씨가 많아져 밖으로 삐져나온 것을 볼 수 있다. 이때 앞서 말한 3가지를 각각 적용했을 때 결과는 다음과 같다.

  • visibility: hidden
    요소가 보이지 않지만 요소가 있었던 높이값만큼 공간이 남아있다. 이 경우 요소가 존재하지만 보이지만 않게 한 것이다. 요소가 남아있기때문에 접근성은 유지할 수 있지만 불필요한 공간이 생겨버린다.

  • display: none
    예시에서 하늘색 박스가 사라져 있는 것을 볼 수 있다. 이처럼 이 속성을 적용하면 요소가 완전히 사라진다. 요소가 없는 걸로 되기 때문에 접근성이 아예 없다. 존재하지 않는 요소이기때문에 공간 또한 차지하지않는다.

  • overflow:hidden
    요소의 크기 값 밖으로 넘어간 부분을 보이지 않게 한다. 보이지 않게 하는 것 뿐으로 해당 요소가 사라진 것이 아니기 때문에 접근성 또한 지켜지며 height 값을 조정하여 공간을 조정할 수 있다.

case02. 빨간 상자 사라지게 하기

이번에는 원하는 요소만 보이지 않게 하기위해 3가지 방법을 적용해 보는 예시이다.

  • visibility: hidden
    상자가 보이진 않지만 공간이 여전히 남아있어 순서대로 정리되지 않는다. 다만 보이지만 않을 뿐 존재하므로 접근성이 지켜진다.

  • display: none
    상자가 보이지도 않고 빈공간도 없어 다음 요소가 정리되었지만, 요소를 아예 지워버렸기때문에 스크린리더와 같은 접근성 프로그램에선 읽혀지지 않는다.

  • overflow:hidden
    상자의 크기를 0으로 만들고 overflow 속성을 적용해 공간이 없게 하여 빨간상자가 보이지 않고 공간도 차지하지 않아 나란히 정리되어 있다.
    접근성 또한 상자가 완전히 사라진게 아니기 때문에 접근성 또한 지켜진다.

그래서 결론은?

visibility: hiddendisplay: noneoverflow:hidden
요소 존재 유무OXO
공간 차지OX△(조정하면 가능)
접근성△(일부 안읽힘)XO
profile
멋찐 프론트엔드 개발자가 되기 위해 공부 중입니다

2개의 댓글

comment-user-thumbnail
2022년 4월 9일

짤 만드시는건가요?사진 보자 마자 내용이 이해되요ㅋㅋㅋㅋ
마지막에 결론을 표로 정리해 주셔서 보기 너무 좋았어요! 저도 앞으로 결론 부분을 써줘야 겠네요🙌

1개의 답글