float과 가상선택자 ::after, ::before의 개념 이해하기 🙌
float의 사전적 의미는 '붕 뜨다, 부유하다' 이다.
직계자식 중 하나의 이미지를 float 시키면 붕 떠서 좌 또는 우로 붙는 것.
여기서 이미지는 부모에게 없는 자식 취급을 받으며 뒤따르는 다른 자식들이 빈 자리를 채우게 되는데, 이 때 이미지를 텍스트가 감싸는 형태를 만들어주는 게 float이다.
위 사진처럼 float을 지정하는 순간 해당 부모 안에 있는 레이아웃이 무너지고, 자식들이 집을 나가는 사태가 발생한다. 해결 방안👇
clear:both (형제 "나는 나의 길을 가겠어!")
- clear는 float으로 인해 망가진 레이아웃을 위해 만들어진 태그이다.
- 다른 형제들이 float이 적용된 태그에 영향을 받지 않도록 한다.
- 적용은 영향을 받고있는 형제 태그에!
[ 두 가지 적용 방법 ]
<div class="clear"></div>
를 추가한 후,.clear{ clear:both; }
를 작성한다.가상선택자는 가상요소로써 마치 콘텐츠가 추가된 것처럼 행동한다.
"clear:both" 속성을 적용할 형제태그에 p::after
이런 식으로 붙여 사용한다.
참고로 after, before 는 content:''; 가 필수로 따라오며,
인라인요소이기 때문에 display:block; 이 필요하다.
p::after{
display:block;
clear:both;
content:''; //가상 콘텐츠 추가~!
}
>> HTML에 빈 태그를 만들지 않아도 되어서 좋다!!
>> 검색엔진에는 반영 안됨.