본문 바로가기
Front/CSS

CSS - header 메뉴 정렬 (float / clear)

by Hyeon_ 2021. 12. 9.

float

  • 왼쪽 또는 오른쪽 정렬할 때 사용하는 속성
    • float:left;
    • float:right;

clear

  • float 속성 해제
    • clear:left; -> float:left; 해제
    • clear:right; -> float:right; 해제
    • clear:both: -> float:left;와 float:right; 모두 해제

float 속성 문제

  • float을 적용해서 정렬된 요소 다음에 오는 요소가 float이 적용된 요소 뒤로 붙는 현상
  • 정상
    • float:right; 를 적용하고 해제했을 때 / float:left;를 적용하고 해제했을 때

  • float:right; 를 적용했을 때 문제

  • float:left; 를 적용했을 때 문제

문제 해결

  • 방법(1) : float이 적용된 요소 다음에 오는 요소에 clear 적용
  • 방법(2) : float이 적용된 요소의 부모 요소에 가상 요소를 만들고 float 적용
    • 부모요소::after { ... clear:both; }

가상 클래스

  • 싱글 콜론(:)사용
    • a:hover

가상 요소

  • 더블콜론(::) 사용
    • .clearfix::after

clear 예제

clear.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS : clear 속성</title>
    <style type="text/css">

        /* clear 사용법1 - 다음 요소에 clear 적용 */
        #menu {list-style:none; padding:0;}
        #menu li {float:right;}
        #p1 {clear:right;}

        /* clear 사용법2 - float 적용된 요소의 부모 요소에 가상요소(::after) 만들고 clear 적용 */
        #menu2 {list-style:none; padding:0;}
        #menu2 li {float:right;}

        .clearfix::after {
            display:block;
            content:'';
            clear:both;
        }

        /* clear 사용법3  - 부모요소(<ul>)에 height 속성 설정하면 clear 적용 */
        #menu3 {
            list-style:none;
            padding:0;
            height:20px;
            background:grey;
            color: white;
        }
        #menu3 li {float:right;}

    </style>
</head>
<body>
    <div>
        <ul id="menu">
            <li>메뉴1</li>
            <li>메뉴2</li>
            <li>메뉴3</li>
        </ul>
        <p id="p1">메뉴 다음에 오는 요소</p>
    </div>
    <hr>
    <div>
        <ul id="menu2" class="clearfix">
            <li>메뉴1</li>
            <li>메뉴2</li>
            <li>메뉴3</li>
        </ul>
        <p id="p2">메뉴 다음에 오는 요소</p>
    </div>
    <hr>
    <div>
        <ul id="menu3">
            <li>메뉴1</li>
            <li>메뉴2</li>
            <li>메뉴3</li>
        </ul>
        <p id="p3">메뉴 다음에 오는 요소</p>
    </div>

</body>
</html>

'Front > CSS' 카테고리의 다른 글

Bootstrap - 주요 기능  (0) 2021.12.07
Bootstrap  (0) 2021.12.06
CSS - 반응형 웹  (0) 2021.12.06
CSS 연습문제  (0) 2021.12.06
CSS - 속성  (0) 2021.12.05