whatisthis?

CSS part 2 - (1) Float 下 본문

WEB STUDY/HTML,CSS

CSS part 2 - (1) Float 下

thisisyjin 2021. 12. 27. 14:40

https://mywebproject.tistory.com/191

 

CSS part 2 - (1) Float 上

Float The float CSS property places an element on the left or right side of its container, allowing text and inline elements to wrap around it. The element is removed from the normal flow of the p..

mywebproject.tistory.com

지난 시간 학습했던 float를 사용했을 때의 문제점

#1. parent의 height 감소

#2. block 으로 바뀌지만 한줄 차지는 X

 

>>> float 가 일어나면 block 요소들은 무시하지만, inline 요소들은 float를 알아챈다.

float를 피해서 흘러가게 됨 - 따라서 흐름이 망가지고 레이아웃이 난리가 나는 것.

 

 

 

<float 문제 - 해결법>

 

 

 

#1. overflow : hidden

- 쉬운 방법. 

 

float를 하면 parent가 집나간 자식 element를 찾기 못하고 height가 감소하지만,

overflow: hidden을 해주면 자식 element를 찾아서 높이 감소가 없다!

 

하지만 / 왜 이렇게 작동하는지도 모른 채 사용하는 것은 자제해야 할듯.

 

for. 이해

더보기

 

MDN Block formatting context 

 

해당 문서를 보면 block formatting context라고 하여 CSS 랜더링 하는 방법에 대한 설명이 나옵니다.

이 BFC는 자신이 포함하고 있는 float 된 요소들을 강제로 자신에게 포함하도록 만든다고 합니다.

BFC가 생성되는 여려 경우 중에 overflow에 visible 값 이외에 값을 넣으면 생성되는 경우가 있습니다.

아마 해당 이유로 overflow:hidden이 동작하는 거 같습니다.

정리하자면 overflow에 visible 이외의 값을 넣어 BFC를 생성하게 되었고 이는 자식 float 요소를 자기에게 포함시키는 결과를 발생시켜 문제를 해결하게 되었다고 볼 수 있을거 같아요!

추가로 overflow는 브라우저에게 overflowing content를 다루기 위해 BFC를 생성하는 것을 당부하고 있습니다.

 

cr: edu.goorm - mention : 김프프님

 

 

#2.  Clearfix

- float 문제점을 해결하는 정석적인 방법.

- CSS의 property중에 'clear'라는 것이 있는데, 그 값을 고정해주는 것.

 

💡CSS clear 속성

- float로 망가진 레이아웃 고치기 위해 만들어진 것. display: block에서만 사용 가능.

- ex> Float: left를 한 블록을 찾을 수 있는  clear: left - float를 찾아서 그에 맞게 자리로 돌아감

- 부모요소도 자신의 height값을 잘 찾을 수 있다. (clear을 해준 블록은 float가 아니므로 자식으로 인식)

- clear는 left / right / both 총 세 개의 값이 존재한다! (both는 left와 right 모두)

 

- html로 div를 설정한 후 clear: left 해주면 해결되지만, 아무런 의미도 없으므로 권장 X.

>> HTML은 건들이지 않고, CSS로만 해결하기 위해 가상 요소(Pseudo-Element)를 이용하자.

- Pseudo Element 에 clear: left를 적용시킴.

 

.parent::after {
	content: "";
	display: block;
	clear: left;
}

부모 요소의 마지막 자식으로 만듬.  parent::after

 

- CSS에서 가상 요소를 사용하는 법

::로 표기함. (예> .class::before )

가상 요소를 사용할 때 반드시 작성해야 하는 property는 content이다.

 

<div class="psuedo">thisisyjin</div>
.pseudo::before {
	content: ' :) Welcome ';
	margin-right: 20px;
	font-style: italic
}

<RESULT>

:) welcome    thisisyjin

 

안에 텍스트가 없으면 content: '' 로 하고

display: inline-block > width, height 설정 또는 background 색 설정 등 다양하게 가능.

 

 

 

'WEB STUDY > HTML,CSS' 카테고리의 다른 글

CSS part 2 - Float prac.02  (0) 2022.01.10
CSS part 2 - Float prac.01  (0) 2022.01.08
CSS part 2 - (1) Float 上  (0) 2021.12.07
CSS part 1 - (5) Inline-Block  (0) 2021.12.07
CSS part 1 - (4) Inline Box  (0) 2021.12.07