Programming/CSS

[CSS] overflow, visibility, display

2023. 9. 26. 09:51
목차
  1. 🍁오버플로우 (overflow)
  2. 🍁가시성 (visibility)
  3. hover 기능 활용
  4. 🍁디스플레이 (display)
  5. 가로로 정렬된 메뉴 만들기

🍁오버플로우 (overflow)


박스에 담을 수 있는 내용을 초과하면 초과한 내용이 박스를 빠져나간다. 하지만 height: auto; 값을 주면 그만큼 박스가 커지기 때문에 내용이 빠져나가지 않는다.

만약 박스 크기를 유지하면서 내용을 보이지 않게 하거나 보이게 하고 싶다면 overflow를 사용하면 된다.

 

<style>
    #box {
        border: 1px solid black;
        width: 200px;
        height: 200px;
        /* overflow: visible; */
        /* overflow: hidden; */
        /* overflow: scroll; */
        overflow: auto;
    }
</style>

visible은 오버플로우가 발생하면 넘치는 대로 두고, hidden은 오버플로우가 발생한 부분을 안 보이게 한다.

scroll은 오버플로우가 발생하지 않아도 scroll 바를 만들고, auto는 오버플로우가 발생하지 않으면 scroll바를 만들지 않는다.

 

overflow x, y

overflow-x: ;
overflor-y: ;

오버플로우는 x와 y에 따라 속성을 다르게 줄 수 있다.

 

🍁가시성 (visibility)


가시성은 요소를 화면에 보이게 할지, 보이지 않게 할지를 결정하는 것이다.

 

#cat1 {
    visibility: hidden;
}

첫 번째 고양이의 visibility를 hidden으로 설정하자 보이지 않는다. 그런데 고양이가 있던 자리는 그대로 남아있다.

즉, 눈에만 보이지 않을 뿐 요소의 원래 영역은 그대로 유지된다.

 

hover 기능 활용

#cat1:hover {
    visibility: hidden;
}

마우스를 올려뒀을 때 고양이를 보이지 않게 하려고 hover를 쓰는 것은 부자연스럽다.

고양이가 나타나고 사라지는 것을 반복하며 깜박이기 때문이다.

 

첫 번째 고양이 위에 마우스를 올려두면 반응

#cat1:hover + #cat2 {
    visibility: hidden;
}
#cat1:hover ~ img {
    visibility: hidden;
}

다른 고양이에게 마우스를 올려뒀을 때 형제 선택자를 사용한다면 자연스럽게 두 번째 고양이를 안 보이게 할 수 있다.

 

부모 상자 위에 마우스를 올려두면 반응

<body>
    <div id="box">
        <img src="../asset/images/catty02.png" id="cat1">
        <img src="../asset/images/catty04.png" id="cat2">
        <img src="../asset/images/catty05.png" id="cat3">
    </div>
</body>
<style>
    #box {
        border: 10px solid black;
        padding: 30px;
    }

    #box:hover > img {
        visibility: hidden;
    }
</style>

부모 선택자를 이용하여 박스 위에  마우스를 올려뒀을 때 모든 고양이들을 보이지 않게 할 수 있다.

 

🍁디스플레이 (display)


디스플레이는 가장 많은 출력 속성을 가지고 있는 기능 중에 하나이다.

display 속성은 HTML 요소가 브라우저에서 보여지는 방법, 즉 레이아웃에 대해 결정한다.

 

가로로 정렬된 메뉴 만들기

블럭 태그와 인라인 태그 성질 변환

<body>
    <h1>블럭 태그</h1>
    <div id="box1box">상자1</div>
    <div id="box2box">상자2</div>
    <div id="box3box">상자3</div>

    <h1>인라인 태그</h1>
    <a href="#"><link1 class="link">링크1</link1></a>
    <a href="#"><link2 class="link">링크2</link2></a>
    <a href="#"><link3 class="link">링크3</link3></a>
</body>
<style>
    .box {
        border: 1px solid black;
        display: inline;
    }

    .link {
        border:1px solid black;
        display: block;
        width: 100px;
        height: 100px;
    }
</style>

  • 블럭 태그 -> 인라인 태그
  • 인라인 태그 -> 블럭 태그

display를 inline 또는 block으로 설정하면 블럭 태그를 인라인 태그로 만들 수 있고, 또한 반대로 인라인 태그를 블럭 태그로 취급할 수 있다.

위 코드에서는 블럭 태그가 인라인 태그로 성질이 바뀌었기 때문에 원래 블럭 태그인 링크 박스의 width와 height를 지정해 줄 수 있게 되었다.

 

<ul>과 <li> 태그의 공간

<body>
    <ul>
        <li>메뉴</li>
        <li>메뉴</li>
        <li>메뉴</li>
        <li>메뉴</li>
        <li>메뉴</li>
    </ul>
</body>
<style>
    ul {
        border: 1px solid red;
    }

    li {
        border: 1px solid blue;
    }
</style>
ul {
    border: 1px solid red;
    padding: 0;
}

먼저 <ul>태그와 <li> 태그의 공간을 확인해 보도록 하자.

아닛😮 그런데 <li> 태그의 왼쪽에 여백이 있다! 이건 누구의 것일까?

이 여백은 빨간색 상자(ul)가 가지고 있는 안쪽 여백이다.

<ul> 태그의 padding을 0으로 설정하자 여백이 사라졌다. 

 

inline-block

<ul id="menu">
    <li>메뉴</li>
    <li>메뉴</li>
    <li>메뉴</li>
    <li>메뉴</li>
    <li>메뉴</li>
</ul>
#menu li {
    display: inline-block;
    width: 15%;
}

<li> 태그의 display를 inline으로 설정하자 불릿이 사라지고, 가로로 나열이 된다.

이때 크기를 지정하려면 inline-block으로 설정하면 된다. 이는 inline 성질을 갖고 있으면서 inline처럼 크기를 지정할 수 있는 display이다.

 

hover 속성 부여

#menu li {
    display: inline-block;
    width: 15%;
    background-color: #CCC;
    text-align: center;
    padding: 10px;
}

#menu li:hover {
    background-color: #333;
    color: white;
}

hover 속성을 부여하여 마우스를 올려뒀을 때 메뉴의 색이 변하게 했다.

우리가 사용하는 많은 웹 페이지의 메뉴와 버튼이 이런 방법으로 만들어진다.

더보기
저작자표시 비영리 변경금지 (새창열림)
  1. 🍁오버플로우 (overflow)
  2. 🍁가시성 (visibility)
  3. hover 기능 활용
  4. 🍁디스플레이 (display)
  5. 가로로 정렬된 메뉴 만들기
'Programming/CSS' 카테고리의 다른 글
  • [CSS] CSS 초기화 작업, 디자인 프레임워크
  • [CSS] display: 인라인 요소의 개행, float
  • [CSS] 박스 모델: border, width, height, padding, margin
  • [CSS] 텍스트 속성, 웹 폰트, 수치 표현법
Isaac-Christian
Isaac-Christian
내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라 (빌립보서 4:13)
Bible, Lee, Data내게 능력 주시는 자 안에서 내가 모든 것을 할 수 있느니라 (빌립보서 4:13)
Isaac-Christian
Bible, Lee, Data
Isaac-Christian
전체
오늘
어제
  • Isaac (504)
    • Worship (5)
    • Portfolio (12)
      • Bigdata (5)
      • License (3)
      • Service (4)
    • Programming (360)
      • C (3)
      • C++ (2)
      • Git (2)
      • Java (59)
      • JDBC (22)
      • Oracle (55)
      • HTML (19)
      • CSS (31)
      • JavaScript (47)
      • TypeScript (2)
      • React (5)
      • jQuery (5)
      • Servlet (4)
      • JSP (12)
      • Spring (32)
      • AWS (18)
      • R (9)
      • AI (6)
      • Python (14)
      • Figma (9)
      • NVIDIA Omniverse (2)
    • Problem Solving (84)
    • Learning (20)
      • English (15)
      • Spanish (0)
      • Chinese (2)
      • Task (3)
    • Daily Life (23)
      • Review (11)
      • Music (1)
      • Diary (7)
      • ROKMC (4)

블로그 메뉴

  • 🏕️ Home
  • 🌟 GitHub
  • 🪐 BOJ
  • 🗃️ Portfolio
  • 🏷️ tag

공지사항

  • 로마서 12:11-17
  • 데살로니가전서 5:16-18
  • 마태복음 11:28-30

인기 글

태그

  • HTML
  • Spring
  • JavaScript
  • VS Code
  • 개발자 환경 구축
  • class
  • io
  • array
  • Client
  • AWS
  • JSP
  • Server
  • problem solving
  • DBeaver
  • oracle
  • CSS
  • JDBC
  • SQL
  • Java
  • English

최근 댓글

최근 글

hELLO · Designed By 정상우.
Isaac-Christian
[CSS] overflow, visibility, display
상단으로

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.