본문 바로가기
💻 1. 웹개발_Front end/1-3 CSS

[CSS] 05-1 CSS 포지셔닝과 주요 속성들

by 달님🌙 2021. 9. 5.
반응형

 

1. CSS 포지셔닝이란?

 

① CSS를 이용해 웹 문서 요소를 적절히 배치하는 것

 

* 2단 레이아웃

 

 

2. box-sizing 속성 – 박스 너비 기준 정하기

 

① 웹 문서에 여러 요소를 배치하려면 각 요소의 너비 값을 기준으로 해야되는데 width 속성은 박스 모델 전체의 너비가 아니고 콘텐츠 부분의 너비임. 따라서 패딩이나 테두리 크기는 따로 계산해야됨

② box-sizing 속성을 사용하면 width 속성을 콘텐츠 영역의 너비 값으로 할지 요소의 너비 값으로 할지 지정 가능

③ 기본형 

box-sizing: content-box | border-box

 

④ 속성 값

 

<예제 – box-sizing-001.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>width값의 기준 정하기</title>
    <style>
        .box1 {
            box-sizing: content-box;
            width: 300px;
            height: 150px;
            margin: 10px;
            padding: 30px;
            border: 2px solid red;
        }
        .box2 {
            box-sizing: border-box;
            width: 300px;
            height: 150px;
            margin: 10px;
            padding: 30px;
            border: 2px solid red;
        }
    </style>
</head>
<body>
    <div class="box1">box-sizing</div>
    <div class="box2">box-sizing</div>
</body>
</html>

 

 

3. float 속성 – 왼쪽이나 오른쪽에 배치하기

 

① 웹 요소를 문서위에 떠있게 만듬. 왼쪽 구석이나 오른쪽 구석에 요소를 배치

② 기본형 

float: left | right | none

 

③ 속성 값

 

<예제 – float-001.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>float</title>
    <style>
        .left-img {
            float: left;
            margin-left: 15px;
        }
        p {
            line-height: 30px;
        }
    </style>
</head>
<body>
    <img src="images/tomato.jpg" class="left-img">
    <h1>토마토</h1>
    <p>토마토는 비타민 A,C가 풍부하여 칼륨과 같은 각종 미네랄은 혈액의 산성도를 낮추는 역할을 해주며 
        혈압을 내리고 혈관을 튼튼하게 해준다. 토마토에 들어있는 피코펜이라는 성분은 뛰어난 항암 작용을 보이며 
        잘 알려져 있듯이 블루베리와 함께 대표적인 향산화 음식이기도 하다.
    </p>
</body>
</html>

 

<예제 – float-002.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>float</title>
    <style>
        .box1 {
            margin-right: 10px;
            padding: 20px;
            background-color: yellow;
            float: left;
        } 
        .box2 {
            margin-right: 10px;
            padding: 20px;
            background-color: blue;
            color: white;
            float: left;
        }
        .box3 {
            margin-right: 10px;
            padding: 20px;
            background-color: green;
            float: left;
        }
        .box4 {
            margin-right: 10px;
            padding: 20px;
            background-color: white;
            float: right;
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <!--div.box*4-->
    <div class="box1">box1</div>
    <div class="box2">box2</div>
    <div class="box3">box3</div>
    <div class="box4">box4</div>
</body>
</html>

 

 

4. clear 속성 – float 속성 해제하기

 

① float 속성이 더 이상 유효하지 않다고 알려주는 속성

② 기본형 

clear: none | left | right | both

 

 

<예제 – float-003.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>float 해제</title>
    <style>
        div {
            padding: 20px;
            margin: 10px;
        }
        .box1 {
            background-color: #ffd800;
            float: left;
        } 
        .box2 {
            background: #0094ff;
            float: left;
        }
        .box3 {
            background: #00ff21;
        }
        .box4 {
            background-color: #a874ff;
            clear: both;
        }
    </style>
</head>
<body>
    <!--div.box*4-->
    <div class="box1">box1</div>
    <div class="box2">box2</div>
    <div class="box3">box3</div>
    <div class="box4">box4</div>
</body>
</html>

 

<예제 – float-004.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>float 해제</title>
    <style>
        img {
            float: left;
        }
        p#left {
            clear: left;
        }
    </style>
</head>
<body>
    <img src="images/tomato.jpg">
    <p id="left">토마토는 비타민 A,C가 풍부하여 칼륨과 같은 각종 미네랄은 혈액의 산성도를 낮추는 역할을 해주며 
        혈압을 내리고 혈관을 튼튼하게 해준다. 토마토에 들어있는 피코펜이라는 성분은 뛰어난 항암 작용을 보이며 
        잘 알려져 있듯이 블루베리와 함께 대표적인 향산화 음식이기도 하다.
    </p>
</body>
</html>

 

 

5. position 속성 – 배치 방법 지정하기

 

① 웹 문서안의 요소들을 자유자재로 배치해 주는 속성. HTML, CSS를 이용해 웹 문서를 제작할 때 중요하게 사용되는 속성 중 하나

② 기본형

position: static | relative | absolute | fixed

 

③ position 속성에서 사용 가능한 속성 값

 

④ static을 제외한 나머지 속성 값은 위치 조절 가능. top, bottom, left, right로 지정

- top : 위쪽에서 얼마나 떨어져 있는지

- bottom : 아래쪽에서 얼마나 떨어져 있는지

- left : 왼쪽에서 얼마나 떨어져 있는지

- right : 오른쪽에서 얼마나 떨어져 있는지

 

 

⑤ static 속성 값 – 문서의 흐름대로 배치하기

- position 속성의 기본 값으로 요소를 나열한 순서대로 배치

- top, bottom, left, right로 위치 지정 불가

- float 속성으로 좌우 배치는 가능

 

⑥ relative 속성 값 – 문서 흐름 따라 위치 지정하기

- static과 동일하게 요소를 나열한 순서대로 배치

- top, bottom, left, right로 위치 지정 가능

 

⑦ absolute 속성 값 – 원하는 위치에 배치하기

- 문서의 흐름과 상관없이 top, bottom, left, right로 원하는 위치에 배치

- 기준이 되는 위치 가장 가까운 부모 요소 중 position: relative;인 요소

 

⑧ fixed 속성 값 – 브라우저 창 기준으로 배치하기

- absolute 속성과 동일하게 문서 흐름과 상관없이 배치 가능하지만 기준이 되는 위치가 브라우저 창

- 브라우저 창 왼쪽 위 꼭지점(0, 0) 기준으로 좌표 계산

- 브라우저 창 화면을 스크롤해도 계속 같은 위치에 고정

 

<예제 – relative-001.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>position relative</title>
    <style>
        .box1 {
            float: left;
            width: 100px;
            background: yellow;
            margin-right: 10px;
            padding: 20px;
        }
        .box2 {
            /*relative : 문서 흐름대로 위치 저장
                         다른 요소를 기준으로 배치됨*/
            position: relative;
            left: -50px;
            top: 30px;
            width: 300px;
            background: blue;
            float: left;
            padding: 20px;
        }
    </style>
</head>
<body>
    <div class="box1">box1</div>
    <div class="box2">box2</div>
</body>
</html>

 

<예제 – absolute-001.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>position absolute</title>
    <style>
        #wrap {
            position: relative;
            width: 300px;
            height: 300px;
            border: 1px solid #ccc;
        }
        .box {
            /*absolute : 부모요소 중 position:relative인 부모요소 기준으로 위치 지정
                         부모요소 기준으로 절대적인 위치에 배치*/
            position: absolute;
            width: 50px;
            height: 50px;
            background: blue;
        }
        #crd1 {
            top: 0;
            left: 0;
        }
        #crd2 {
            top: 0;
            right: 0;
        }
        #crd3 {
            bottom: 0;
            left: 0;
        }
        #crd4 {
            bottom: 0;
            right: 0;
        }
        #crd5 {
            top: 120px;
            left: 120px;
        }
    </style>
</head>
<body>
    <div id="wrap">
        <div class="box" id="crd1"></div>
        <div class="box" id="crd2"></div>
        <div class="box" id="crd3"></div>
        <div class="box" id="crd4"></div>
        <div class="box" id="crd5"></div>
    </div>
</body>
</html>

 

<예제 – fixed-001.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>position fixed</title>
    <style>
        #fx {
            /*fixed : 브라우저 창 기준으로 절대적인 위치에 배치
            스크롤을 내려도 고정된 위치에 배치되어 표시됨*/
            position: fixed;
            top: 5px;
            right: 5px;
            width: 50px;
            height: 50px;
            background: orange;
        }
        #content {
            width: 400px;
        }
        p {
            line-height: 30px;
        }
    </style>
</head>
<body>
    <div id="fx"></div>
    <div id="content">
        <p>토마토는 비타민 A,C가 풍부하여 칼륨과 같은 각종 미네랄은 혈액의 산성도를 낮추는 역할을 해주며 
            혈압을 내리고 혈관을 튼튼하게 해준다. 토마토에 들어있는 피코펜이라는 성분은 뛰어난 항암 작용을 보이며 
            잘 알려져 있듯이 블루베리와 함께 대표적인 향산화 음식이기도 하다.
        </p>
        <p>토마토는 비타민 A,C가 풍부하여 칼륨과 같은 각종 미네랄은 혈액의 산성도를 낮추는 역할을 해주며 
            혈압을 내리고 혈관을 튼튼하게 해준다. 토마토에 들어있는 피코펜이라는 성분은 뛰어난 항암 작용을 보이며 
            잘 알려져 있듯이 블루베리와 함께 대표적인 향산화 음식이기도 하다.
        </p>
    </div>
</body>
</html>

 

 

6. visibility 속성 – 요소를 보이게 하거나 보이지 않게 하기

 

① 특정 요소를 화면에 보이게 하거나 보이지 않게 또는 겹치게 설정하는 속성

② 기본형

visibility: visible | hidden | collapse

 

③ 속성 값

 

 

<예제 – visibility-001.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Visibility</title>
    <style>
        img {
            margin: 10px;
            padding: 5px;
            border: 1px solid black;
        }
        .invisible {
            visibility: hidden;
        }
        .invisible2 {
            display: none;
        }
    </style>
</head>
<body>
    <img src="images/pic1.jpg">
    <img src="images/pic2.jpg" class="invisible">
    <img src="images/pic3.jpg">
    <img src="images/pic1.jpg" class="invisible2">
    <img src="images/pic2.jpg">
</body>
</html>

 

 

7. z-index 속성 – 요소를 쌓는 순서 정하기

 

① 요소 위에 요소를 쌓을 때 쌓는 순서 지정

② z-index: <숫자>

③ z-index가 작을수록 아래에 쌓이고 클수록 위에 쌓임

④ z-index를 명시하지 않으면 맨 먼저 삽입된 요소가 1로 지정되고 그 후 삽입되는 요소들은 1씩 증가

 

<예제 – z-indext-001.html>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>z-index</title>
    <style>
        div#wrapper {
            position: relative;
        }
        div#box {
            position: absolute;
            width: 100px;
            height: 100px;
            border: 1px solid black;
            font-size: 26px;
        }
        .b1 {
            left: 50px;
            top: 50px;
            background-color: orange;
        }
        .b2 {
            left: 100px;
            top: 70px;
            background-color: blue;
        }
        .b3 {
            left: 70px;
            top: 110px;
            background-color: red;
        }
    </style>
</head>
<body>
    <!--div#wrapper>div#box.b1*3-->
    <div id="wrapper">
        <div id="box" class="b1"></div>
        <div id="box" class="b2"></div>
        <div id="box" class="b3"></div>
    </div>
</body>
</html>

 

 

 

 

 

반응형

댓글