프론트엔드 공부/CSS 기초

12일차 프론트엔드 공부 - Float, Flex

프망생222 2024. 9. 10. 18:50

- 12일차 프론트엔드 공부 -



가상 클래스 선택자

 

:first-of-type

 

:first-child

형제 요소 중 첫번째 요소를 선택하는 가상 클래스

 

:first-of-type

형제 요소 중 첫번째 요소를 선택하는 가상 클래스 하지만 :first-child와 다르게 :first-of-type 이라는 가상 클래스가 적용된 선택자에 해당 되는 요소만 카운트한다

 

:last-of-type

 

:nth-of-type(n)

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <title>Document</title>
    <link rel="stylesheet" href="./index.css">
</head>
<body>
    <div class="container">
        <h1>제목입니다.</h1>
        <p>첫번째 p입니다.</p>
        <p>두번째 p입니다.</p>
        <span>첫번째 span입니다.</span>
        <p>세번째 p입니다.</p>
    </div>
</body>
</html>

 

* {
    box-sizing: border-box;
}

.container span:first-child {
    background-color: red;
}

.container p:first-of-type {
    background-color: blue;
}

.container p:last-of-type {
    background-color: yellow;
}

.container p:nth-of-type(2) {
    background-color: green;
}

.container span:first-of-type {
    font-weight: 600;
    text-decoration: underline;
}

 

 

 

:active

활성화된 요소를 선택하는 가상 클래스 선택자

 

활성화된 요소란?

버튼 등을 클릭해서 요소의 동작이 활성화되어있는 상태

 

:focus

focus를 받고 있는 입력 창 등의 요소를 선택하는 가상 클래스 선택자

 

focus를 받고 있는 요소란?

Tab 키 등을 이용해서 입력창의 커서가 활성화되어있는 상태

 

:visited

사용자가 방문한 적 있는 링크를 선택하는 가상 클래스 선택자

 

사용자가 방문한 적 있는 링크란?

링크를 눌러서 해당 경로를 방문한 기록이 브라우저상에 남아 있는 링크 (기본 컬러 -보라색)

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <title>Document</title>
    <link rel="stylesheet" href="./index.css">
</head>
<body>
    <button class="button1">나는 버튼입니다.</button>
    <input type="text" class="input1">
    <a href="http://google.com" class="link1">나는 링크입니다.</a>
</body>
</html>

 

.button1:active {
    background-color: red;
}

.input1:focus {
    background-color: green;
}

.link1:visited {
    color: red;
}

 

active를 이용하여 버튼을 누르고 있을 때 배경색이 빨간색으로 변경되게 했다.

focus를 이용하여 입력 창이 선택되어있으면 배경색이  초록색으로 변경되게 했다.

visited를 이용하여 링크를 누르면 이후 링크색이 빨간색으로 변경되게 했다

링크 색이 변한 모습

 

flex 레이아웃

 

flex-wrap

flex-item이 여러개일 때, item들의 줄바꿈을 허용할 것인지 말 것인지 결정한다.

 

flex-wrap : nowrap(기본값)

 

flex-wrap : wrap

 

align-content

여러줄이 된 flex-item의 중심 반대 축 정렬을 어떻게 할 지 결정한다.

 

align-content : stretch (기본값)

align-content : stretch (기본값)

 

align-content : flex-start

align-content : flex-start


align-content : flex-end

align-content : flex-end

 

align-content : center

align-content : center

align-content : space-between

align-content : space-between

align-content : space-around

align-content : space-around

align-content : space-evenly

align-content : space-evenly

flex-flow 

flex-direction과 flex-wrap을 합쳐놓은 단축 속성

 

flex-direction : row;

flex-wrap : wrap;

 

→ flex-flow : column wrap

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <title>Document</title>
    <link rel="stylesheet" href="./index.css">
</head>
<body>
    <div class="container">
        <div>box1</div>
        <div>box2</div>
        <div>box3</div>
        <div class="box4">box4</div>
        <div class="box5">box5</div>
        <div>box6</div>
        <div>box7</div>
        <div>box8</div>
    </div>
</body>
</html>

 

* {
    box-sizing: border-box;
}

.container {
    width: 600px;
    height: 500px;
    background-color: #eeeeee;
    border: 2px solid red;
    padding: 10px;
    display: flex;
    flex-wrap: wrap;
    align-content: space-evenly;
}

.container div {
    background-color: blue;
    margin: 5px;
    width: 200px;
    color: white;
}

.box4{
    order: 3;
}

.box5 {
    order: 1;
}