새로새록

html 본문

소프트웨어융합/코드잇 정리.py

html

류지나 2022. 2. 6. 23:59

display의 종류

모든 요소는 딱 한 개의 display 값을 갖고 있습니다. 가질 수 있는 display의 종류는

  1. inline
  2. block
  3. inline-block
  4. flex
  5. list-item
  6. none

등 여러 가지가 있는데, 대부분의 요소들은 inline과 block 중 한 가지입니다.


inline display

inline 요소들은 다른 요소들과 같은 줄에 머무르려고 하는 성향과, 필요한 만큼의 가로 길이만 차지하는 성향이 있습니다.

다음 요소들은 기본 display 값이 inline입니다.

  1. <span>
  2. <a>
  3. <b>
  4. <i>
  5. <img>
  6. <button>

block display

block 요소들은 다른 요소들과 독단적인 줄에 가려고 하는 성향과, 최대한 많은 가로 길이를 차지하는 성향이 있습니다.

다음 요소들은 기본 display 값이 block입니다.

    • <div>
    • <h1>, <h2>, <h3>, <h4>, <h5>, <h6>
    • <p>
    • <nav>
    • <ul>
    • <li>

 


가로 가운데 정렬

inline-block 요소면 부모 태그에 text-align: center;를
block 요소면 margin-left: auto;, margin-right: auto;를 써주면 되죠?
 
 

세로 가운데 정렬

 

가짜 요소 더하기

vertical-align: middle;을 하면 해결될까요? 우선 vertical-align 속성은 인라인 또는 인라인 블록 요소에 적용되기 때문에 .info를 인라인 블록으로 바꾸겠습니다. 그리고 vertical-align: middle;을 설정해주면...?

.info 요소를 완전 가운데로 오게 하려면 우선 소문자 'x'가 가운데로 와야 합니다. 방법이 하나 있습니다. 세로 길이가 100%인 요소를 만들고, 그 요소에도 vertical-align: middle;을 하는 거죠!

 

근데 아직도 문제가 조금 있습니다. .info의 가로 길이가 100%라면 어떻게 되는지 봅시다.

갑자기 이상한 곳에 위치되네요. 사실 .helper 와 .info 요소 사이에 띄어쓰기가 한 칸 있어서, 가로 길이 100%인 .info 요소는 자리 부족으로 다음 줄로 가버립니다!

이 문제를 해결하기 위해서는 두 가지 방법이 있습니다.우선 띄어쓰기를 없애는 방법:

띄어쓰기 공간 만큼의 마이너스 여백을 주는 방법:

주의 사항: 어떤 요소에 height: 100%;를 설정하기 위해서는 부모의 height가 설정되어 있어야 합니다. 위 경우에는 .helper의 부모인 .container에 height가 설정되어 있었기 때문에 가능했던 것이죠.

 

line-height로 해결

.info를 인라인 블록으로 설정해주면, line-height 속성을 활용해볼 수도 있습니다. 부모인 .container에 height와 동일한 line-height를 줘보세요

 

line-height 속성은 자식들에게 상속되기 때문에 .info에는 line-height: normal;을 꼭 써주셔야 합니다!

<!DOCTYPE html>
<div class="container">
  x
  <div class="info">
    <h1>Hello!</h1>
    <p>My name is young.</p>
  </div>
</div>

 

다른 방식?

위의 방법들 말고도 세로 가운데 정렬을 하는 다양한 방식들이 있습니다. 포지셔닝을 이용할 수도 있고, 최근에 나온 flexbox를 이용할 수도 있습니다.

'소프트웨어융합 > 코드잇 정리.py' 카테고리의 다른 글

git  (0) 2022.03.11
자료구조 - 링크드 리스트 연산들  (0) 2022.02.03
파이썬 - 폴더관리 예시제들  (0) 2022.01.30
파이썬, 문자열갖고놀기  (0) 2022.01.29
파일다루기 - 출력방식연구  (0) 2022.01.28