본문 바로가기

HTML+CSS

html/css #6-line-height 심화, flexbox

inline-block은 텍스트 기준의 base line을 기준으로 정렬되어 있다! 

따라서 line-height를 이동하면 개체들이 다 함께 이동하게 된다. 

 

 

vertical-align을 통해 baseline 고정하기
vertical-align: top;

value 값은 top, bottom 등을 줄 수 있다. 

top -> 상단 기준으로 baseline 고정

bottom -> 하단 기준으로 baseline 고정

 

 

ex) vertical-line:bottom :아래쪽을 고정

아래쪽을 vertical-line으로 고정해준 상태에서 각각의 height값을 다르게 줬을 때

 

*참고 : 하이픈 규칙

list-items ( '-'하이픈은 자식 요소들의 클래스 이름을 지을 때)

list_red ( '_'언더바는 종류, 타입들의 클래스 이름을 지을 때)

 

 

 

 

flexbox

 

  • 직계부모를 컨트롤하는 컨셉
  • 가로배치하고 싶은 대상의 직계 부모에다가 display:flex 값을 준다.

 

 

frog의 부모인 playground를 display:flexbox로 값을 준다. 

직계 자식만 반응을 한다.

 

 

 

flex-basis
	flex-basis: auto; /*flex가 기본적으로 가지고있는 사이즈의 관한 값, auto 적용 시 컨텐츠 크기 만큼이다. */
  • flex-basis는, flex가 기본적으로 가지고 있는 사이즈에 관련된 값이며
  • 초기화 값은 auto 이며, 적용 시 컨텐츠 크기 만큼이다. 
  • 값을 주면 사이즈는 고정값이다.

 

flex 요소들을 하숙생으로 생각하면, 

cntainer의 남는 공간은 공용 공간(거실)이다. 

 

 

flexbox 정렬
            .playground {
                border: 10px solid maroon;
                width: 980px;
                margin: 0 auto;
                border-radius: 24px;
                background-color: skyblue;
                display: flex;
            }
            .frog {
                background-color: mediumseagreen;
                color: lime;
                font-size: 40px;
                border: 6px solid green;
                border-radius: 10px;
                margin: 10px;
               
                flex-basis: auto; /*flex가 기본적으로 가지고있는 사이즈의 관한 값, auto 적용 시 컨텐츠 크기 만큼이다. */
            }

            .frog.corona{
                background-color:red;
                margin-left:auto;
            }
        </style>
    </head>
    <body>

        <div class="playground">
            <div class="frog">Frog</div>
            <div class="frog">Frog</div>
            <div class="frog corona">Frog</div>
        </div>

    </body>

frog corona만 오른쪽 정렬이 가능하다. 

flex-basis:auto를 통해 내부 'Frog' 텍스트의 크기만큼 박스 크기가 잡혔다.

 

flex-grow

 

  • 사용 가능한 공간(공용공간) 의 크기를 비율로 나눠 쓸 수 있는 것
  • 단위없이 비율이다.
  • 컨텐츠의 크기를 제외하고 비율적으로 계산된다. (flex-basis:auto)

flex-grow: 1 -> 1:1:1로 나눠 쓸 수 있다. 

flex-grow: 0 -> 공간 나눠쓰지 않는다.

 

flex-grow를 각각 3, 3, 4로 준 모습

 

 

*flex-basis: 0 으로 주면 내부 컨텐츠 값과 상관 없이 flex-grow로 비율을 나눌 수 있다. 

 

 

flex-shrink : 비율적으로 줄어드는 것
  • 초기화값은 1
  • 균등하게 공간을 뺏는다. 
  • 공간을 빼야할 때가 도래하면 shrink가 작동한다. 

*컨텐츠에 상관없이 무조건 너비가 고정되어야하는 flex item이 있다면 flex-shrink: 0을 적용해야한다. 

 flex-shrink: 1 -> 1:1:1로 줄어든다.

flex-shrink: 0 ->줄어듬 없도록 한다. 

마지막 개구리만 shrink: 0 을 준 모습

 

 

 

gap

flexbox들 간에 간격을 조정하는 것

  • 부모에게 적용되는 property이다.
  • 초기값은 normal이다.
  • flex에만 적용되는 값은 아니다.
  • margin처럼 작용하지만 margin 값은 아니다.