비트교육센터/웹

[비트교육센터] 웹 26일차 CSS

달의요정루나 2023. 7. 5. 18:11

1. CSS

- CSS: HTML문서에 색이나 모양, 출력 위치 등 외관을 꾸미는 언어이며, CSS로 작성된 코드를 스타일 시트(style sheet)라고 부른다.

1) CSS스타일 시트로 웹페이지 꾸미기

[1] CSS 적용 X

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>스타일 없는 웹 페이지</title>
</head>

<body>
    <h3>CSS 스타일 맛보기</h3>
    <hr>
    <p>나는 <span>웹 프로그래밍</span>을 좋아합니다.</p>
</body>

</html>

--> 결과

[2] CSS 적용 O

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>스타일을 가진 웹 페이지</title>
    <style>
        /* CSS 스타일 시트 작성 */
        body {
            background-color: mistyrose;
        }

        h3 {
            color: purple;
        }

        hr {
            border: 5px solid yellowgreen;
        }

        span {
            color: blue;
            font-size: 20px;
        }

        /* span 태그 스타일 선언 */
    </style>
</head>

<body>
    <h3>CSS 스타일 맛보기</h3>
    <hr>
    <p>나는 <span>웹 프로그래밍</span>을 좋아합니다.</p>
</body>

</html>

- <body>요소의 배경색을 mistyrose로 지정한다.

- <h3>요소의 글자 색을 purple로 지정한다.

- <hr>수평선을 yellowgreen에 두께 5픽셀 외곽선으로 지정한다.

- <span> 요소의 글자를 blue에 20픽셀로 지정한다.

--> 결과

2) CSS스타일 시트로 웹페이지 꾸미기

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>&lt;style&gt; 태그로 스타일 만들기</title>
    <style>
        body {
            background-color: linen;
            color: blueviolet;
            margin-left: 30px;
            margin-right: 30px;
        }

        h3 {
            text-align: center;
            color: darkred;
        }
    </style>
</head>

<body>
    <h3>소연재</h3>
    <hr>
    <p>저는 체조 선수 소연재입니다. 음악을 들으면서
        책읽기를 좋아합니다. 김치 찌개와 막국수 무척
        좋아합니다.</p>
</body>

</html>

- 페이지 전체 글자색(color)은 blueviolet, 배경색(background-color)은 linen으로 하고, 페이지의 왼쪽 마진(margin-left), 오른쪽 마진(margin-right)은 30픽셀로 했다.

- <h3> 태그로 출력되는 글자색은 darkred로 했다.

--> 결과

3) style속성에 스타일 시트 만들기

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>&lt;style&gt; 속성에 스타일 시트 만들기</title>
    <style>
        p {
            color: red;
            font-size: 15px;
        }

        /* 모든 p 태그에 적용 */
    </style>
</head>

<body>
    <h3>손 홍 민</h3>
    <hr>
    <p>오페라를 좋아하고</p>
    <p>엘비스 프레슬리를 좋아하고</p>
    <p style="color:blue">김치부침개를 좋아하고</p>
    <p style="color:magenta; font-size:30px">축구를 좋아합니다.</p>
</body>

</html>

- style태그에 <p>태그에 관한 디자인을 넣어준다. html에 있는 모든 <p>태그를 red색에 15픽셀 크기로 꾸미지만, style속성을 이용해 2개의 <p>는 다른 모양으로 꾸민다.

 

--> 결과

4) style속성에 스타일 시트 만들기

[1] mystyle.css

body {
    background-color: linen;
    color: blueviolet;
    margin-left: 30px;
    margin-right: 30px;
}

h3 {
    text-align: center;
    color: darkred;
}

[2] ex4-05.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>&lt;link&gt; 태그로 스타일 파일 불러오기</title>
    <link type="text/css" rel="stylesheet" href="mystyle.css">
</head>

<body>
    <h3>소연재</h3>
    <hr>
    <p>저는 체조 선수 소연재입니다. 음악을 들으면서 책읽기를 좋아합니다.
        김치 찌개와 막국수 무척 좋아합니다.</p>
</body>

</html>

- CSS3 스타일 시트만 떼어내어 .css확자를 가진 파일에 저장하고, 필요한 웹페이지에서 불러 사용할 수 있다.

- <link>태그를 이용했다.

--> 결과

[3] ex4-05.html(@import 이용)

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>&lt;@import&gt;로 외부 스타일 불러오기</title>
    <style>
        @import url(mystyle.css);
    </style>
</head>

<body>
    <h3>소연재</h3>
    <hr>
    <p>저는 체조 선수 소연재입니다. 음악을 들으면서 책읽기를 좋아합니다.
        김치 찌개와 막국수 무척 좋아합니다.</p>
</body>

</html>

- @import를 통해 css파일을 html에 불러올 수 있다.

 

5) 여러 스타일 시트 중첩

[1] mystyle.css

p{
    background: mistyrose;
}

[2] ex4-08.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>스타일 합치기 및 오버라이딩</title>
    <link type="text/css" rel="stylesheet" href="external.css">
    <style>
        p {
            color: blue;
            font-size: 12px;
        }
    </style>
</head>

<body>
    <h3>p 태그에 스타일 중첩</h3>
    <hr>
    <p>Hello, students!</p>
    <p style="font-size:25px">안녕하세요 교수님!</p>
</body>

</html>

- <p>태그에 여러 스타일 시트가 중첩된 것이다.

- Hello, students!에는 background색 mistyrose, 글자색 blue, 글자크기 12픽셀이 적용된다.

- 안녕하세요 교수님!은  background색 mistyrose, 글자색 blue, 글자크기 25픽셀이 적용된다.

 

--> 결과

 

 

6) 셀렉터

- 셀렉터: HTML 태그의 모양을 꾸밀 스타일 시트를 선택하는 기능이다.

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>셀렉터 만들기</title>
    <style>
        h3,
        li {
            /* 태그 이름 셀렉터 */
            color: brown;
        }

        div>div>strong {
            /* 자식 셀렉터 */
            background: yellow;
        }

        ul strong {
            /* 자손 셀렉터 */
            color: dodgerblue;
        }

        .warning {
            /* class 셀렉터 */
            color: red;
        }

        body.main {
            /* class 셀렉터 */
            background: aliceblue;
        }

        #list {
            /* id 셀렉터 */
            background: mistyrose;
        }

        #list span {
            /* 자손 셀렉터 */
            color: forestgreen;
        }

        h3:first-letter {
            /* 가상 클래스 셀렉터 */
            color: red;
        }

        li:hover {
            /* 가상 클래스 셀렉터 */
            background: yellowgreen;
        }
    </style>
</head>

<body class="main">
    <h3>Web Programming</h3>
    <hr>
    <div>
        <div>2학기 <strong>학습 내용</strong>입니다.</div>
        <ul id="list">
            <li><span>HTML5</span></li>
            <li><strong>CSS</strong></li>
            <li>JAVASCRIPT</li>
        </ul>
        <div class="warning">60점 이하는 F</div>
    </div>
</body>

</html>

[1] 태그 이름 설렉터

- 태그 이름이 셀렉터로 사용되는 유형이다.

- 셀렉터는 , 로 분리한다.

h3,
        li {
            /* 태그 이름 셀렉터 */
            color: brown;
        }

[2] class 설렉터

- 셀렉터 이름 앞에 . 을 붙인 경우, 이 셀렉터는 html 태그의 class 속성으로만 지정할 수 있다.

        div>div>strong {
            /* 자식 셀렉터 */
            background: yellow;
        }

[3] id 설렉터

- 셀렉터 이름 앞에 # 을 붙인 경우, 이 셀렉터는 html 태그의 id속성으로만 지정할 수 있다.

#list {
            /* id 셀렉터 */
            background: mistyrose;
        }

[4] 설렉터 조합하기

1) 자식 셀렉터: 부모 자식 관계인 두 설렉터를 '>' 기호로 조합한 형태이다.

        div>div>strong {
            /* 자식 셀렉터 */
            background: yellow;
        }

2) 자손 셀렉터: 자손 관계인 2개 이상의 태그를 나열한 형태이다.

        ul strong {
            /* 자손 셀렉터 */
            color: dodgerblue;
        }

[5] 가상 클래스 셀렉터

- 어떤 상황이 발생했을 때 적용하도록 CSS3 표준에 만들어진 설렉터이다.

- h3:firstletter는 <h3>태그의 첫번째 글자만 red색으로 출력하는 셀렉터이다.

- <li> 태그위에 마우스가 올라오면, yellowgreen을 배경색으로 출력. 마우스가 내려가면 원래대로 복귀한다.

        h3:first-letter {
            /* 가상 클래스 셀렉터 */
            color: red;
        }

        li:hover {
            /* 가상 클래스 셀렉터 */
            background: yellowgreen;
        }

--> 결과

7) 색

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>CSS3 색 활용</title>
    <style>
        div {
            margin-left: 30px;
            margin-right: 30px;
            margin-bottom: 10px;
            color: white;
        }
    </style>
</head>

<body>
    <h3>CSS3 색 활용</h3>
    <hr>
    <div style="background-color:deepskyblue">
        deepskyblue(#00BFFF)</div>
    <div style="background-color:brown">
        brown(#A52A2A)</div>
    <div style="background-color:fuchsia">
        fuchsia(#FF00FF)</div>
    <div style="background-color:darkorange">
        darkorange(#FF8C00)</div>
    <div style="background-color:#008B8B">
        darkcyan(#008B8B)</div>
    <div style="background-color:#6B8E23">
        olivedrab (#6B8E23)</div>
</body>

</html>

- 색 이름과 색 코드로 <div> 태그의 배경색을 칠한다.

--> 결과

8) 텍스트

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>텍스트 꾸미기</title>
    <style>
        h3 {
            text-align: right;
            /* 오른쪽 정렬 */
        }

        span {
            text-decoration: line-through;
            /* 중간 줄 */
        }

        strong {
            text-decoration: overline;
            /* 윗줄 */
        }

        .p1 {
            text-indent: 3em;
            /* 3 글자 들여쓰기 */
            text-align: justify;
            /* 양쪽 정렬 */
        }

        .p2 {
            text-indent: 1em;
            /* 1 글자 들여쓰기 */
            text-align: center;
            /* 중앙 정렬 */
        }
    </style>
</head>

<body>
    <h3>텍스트 꾸미기</h3>
    <hr>
    <p class="p1">HTML의 태그만으로 기존의
        워드 프로세서와 같이 들여쓰기, 정렬, 공백,
        간격 등과 세밀한 <span>텍스트 제어</span>를
        할 수 없다. </p>
    <p class="p2">그러나,
        <strong>스타일 시트</strong>는 이를
        가능하게 한다. 들여쓰기, 정렬에 대해서
        알아본다
    </p>
    <p><a href="http://www.naver.com" style="text-decoration : none">
            밑줄이 없는 네이버 링크</a>
</body>

</html>

- 문단 들여쓰기나 문단 정렬 등 텍스트의 출력모양을 제어할 수 있다.

--> 결과

9) 폰트

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>폰트</title>
    <style>
        body {
            font-family: "Times New Roman", Serif;
            font-size: large;
        }

        h3 {
            font: italic bold 40px consolas, sans-serif;
        }
    </style>
</head>

<body>
    <h3>Consolas font</h3>
    <hr>
    <p style="font-weight:900">font-weight 900</p>
    <p style="font-weight:100">font-weight 100</p>
    <p style="font-style:italic">Italic Style</p>
    <p style="font-style:oblique">Oblique Style</p>
    <p>현재 크기의
        <span style="font-size:1.5em">1.5배</span>
        크기로
    </p>
</body>

</html>

- font-family: 폰트 이름을 지정한다.

- font-size: 글자 크기를 지정한다.

- font-style: 폰트 스타일을 나타낸다.

- font-weight: 글자의 굵기를 지정한다.

- font: 단축 프로퍼티로, font-style font-weight font-size font-family순으로 지정한다.

--> 결과

10) 박스

[1] 박스 모델

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>박스 모델</title>
    <style>
        body {
            background: ghostwhite;
        }

        span {
            background: deepskyblue;
        }

        div.box {
            background: yellow;
            border-style: solid;
            border-color: peru;

            margin: 40px;
            border-width: 30px;
            padding: 20px;
        }
    </style>
</head>

<body>
    <div class="box">
        <span>DIVDIVDIV</span>
    </div>
</body>

</html>

 

- 콘텐츠(Content): html 태그의 텍스트나 이미지 부분

- 패딩(Padding): 콘텐츠를 직접 둘러싸고 있는 내부 여백

- 테두리(Border): 패딩 외부의 외곽선으로 직선이나 점선 혹은 이미지를 입힐 수 있음

- 여백(Margin): 박스의 맨 바깥 영역. 테두리 바깥 공간으로 아래위 인접한 태그와 만나는 공간

--> 결과

[2] 박스 모델 활용

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>박스 모델</title>
    <style>
        div.inner {
            background: yellow;
            padding: 20px;
            border: 5px dotted red;
            margin: 30px;
        }
    </style>
</head>

<body>
    <h3>박스 모델</h3>
    <p>margin 30px, padding 20px, border 5px의 빨간색 점선</p>
    <hr>
    <div class="inner">
        <img src="media/mio.png" alt="고양이눈">
    </div>
</body>

</html>

- <div>태그에 이미지를 담은 것이다.

--> 결과

11) 테두리

[1] 다양한 테두리선 스타일

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>다양한 테두리</title>
</head>

<body>
    <h3>다양한 테두리</h3>
    <hr>
    <p style="border: 3px solid blue">3픽셀 soild</p>
    <p style="border: 3px none blue">3픽셀 none</p>
    <p style="border: 3px hidden blue">3픽셀 hidden</p>
    <p style="border: 3px dotted blue">3픽셀 dotted</p>
    <p style="border: 3px dashed blue">3픽셀 dashed</p>
    <p style="border: 3px double blue">3픽셀 double</p>
    <p style="border: 15px groove yellow">15픽셀 groove</p>
    <p style="border: 15px ridge yellow">15픽셀 ridge</p>
    <p style="border: 15px inset yellow">15픽셀 inset</p>
    <p style="border: 15px outset yellow">15픽셀 outset</p>
</body>

</html>

- border 프로퍼티에 테두리의 두께(width), 테두리 선 스타일(style), 테두리 선 색(color)을 한번에 지정한다. 

--> 결과

[2] 고급 테두리

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>둥근 모서리 테두리</title>
    <style>
        p {
            background: #90D000;
            padding: 20px;
            width: 300px;
        }

        #round1 {
            border-radius: 50px;
        }

        #round2 {
            border-radius: 0px 20px 40px 60px;
        }

        #round3 {
            border-radius: 0px 20px 40px;
        }

        #round4 {
            border-radius: 0px 20px;
        }

        #round5 {
            border-radius: 50px;
            border-style: dotted;
        }
    </style>
</head>

<body>
    <h3>둥근 모서리 테두리</h3>
    <hr>
    <p id="round1">반지름 50픽셀의 둥근 모서리</p>
    <p id="round2">반지름 0, 20, 40, 60 둥근 모서리</p>
    <p id="round3">반지름 0, 20, 40, 20 둥근 모서리</p>
    <p id="round4">반지름 0, 20, 0, 20 둥근 모서리</p>
    <p id="round5">반지름 50의 둥근 점선 모서리</p>
</body>

</html>

- border-radius를 이용해 테두리의 모서리를 둥글게 만들 수 있다.

--> 결과

[3] 이미지 테두리

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>이미지 테두리 만들기</title>
    <style>
        p {
            background: yellow;
            width: 200px;
            height: 60px;
            padding: 10px;
            border: 20px solid lightgray;
            /*border-width와 border-style 동시 지정 */

        }

        #round {
            border-image: url("media/border.png") 30 round;
        }

        #repeat {
            border-image: url("media/border.png") 30 repeat;
        }

        #stretch {
            border-image: url("media/border.png") 30 stretch;
        }
    </style>
</head>

<body>
    <h3>이미지 테두리 만들기</h3>
    <hr>
    다음은 원본 이미지입니다.<br>
    <img src="media/border.png" alt="원본">
    <hr>
    <p>20x20 크기의 회색 테두리를 가진 P 태그</p>
    <p id="round">round 스타일 이미지 테두리</p>
    <p id="repeat">repeat 스타일 이미지 테두리</p>
    <p id="stretch">stretch 스타일 이미지 테두리</p>
</body>

</html>

- border-image를 이용해 테두리에 이미지를 입힐 수 있다.

--> 결과

12) 배경

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>배경 꾸미기</title>
    <style>
        div {
            background-color: skyblue;
            background-size: 100px 100px;
            background-image: url("media/spongebob.png");
            background-repeat: repeat-y;
            background-position: center center;
        }

        div {
            width: 200px;
            height: 200px;
            color: blueviolet;
            font-size: 16px;
        }
    </style>
</head>

<body>
    <h3>div 박스에 배경 꾸미기</h3>
    <hr>
    <div>SpongeBob is an over-optimistic
        sponge that annoys other characters. </div>
</body>

</html>

- <div>박스에 100*100 크기로 배경이미지를 출력하고 남은 곳에는 skyblue 색의 배경색이 칠해지도록 하고, 배경 이미지는 중간에 y축을 따라 반복배치 했다.

--> 결과

13) 마우스 커서

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>마우스 커서</title>
</head>

<body>
    <h3>마우스 커서</h3>
    아래에 마우스를 올려 보세요. 커서가 변합니다.
    <hr>
    <p style="cursor: crosshair">십자 모양 커서</p>
    <p style="cursor: help">도움말 모양 커서</p>
    <p style="cursor: pointer">포인터 모양 커서</p>
    <p style="cursor: progress">프로그램 실행 중 모양 커서</p>
    <p style="cursor: n-resize">상하 크기 조절 모양 커서</p>
</body>

</html>

- cursor를 이용해 html 태그 위에 출력되는 마우스의 커서 모영을 지정할 수 있다.

--> 결과

2. CSS 활용

1) 박스의 유형 제어, display

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>display 프로퍼티</title>
    <style>
        div {
            border: 2px solid yellowgreen;
            color: blue;
            background: aliceblue;
        }

        span {
            border: 3px dotted red;
            background: yellow;
        }
    </style>
</head>

<body>
    <h3>인라인, 인라인 블록, 블록</h3>
    <hr>
    나는 <div style="display:none">
        div(none)</div>입니다.<br><br>
    나는 <div style="display:inline">
        div(inline)</div> 입니다.<br><br>
    나는 <div style="display:inline-block; height:50px">
        div(inline-block)</div> 입니다.<br><br>
    나는 <div>div<span style="display:block">
            span(block)</span> 입니다.
    </div>
</body>

</html>

- display를 이용하면 디폴트 박스 유형을 무시하고 html 태그의 박스 유형을 달리 지정할 수 있다.

 

1) 블록 박스 - display:block

- width, height 값을 주어 태그가 출력되는 블록박스의 크기를 변경할 수 있으며, 한 줄을 독점적으로 차지해 양 옆에 다른 요소가 배치되지 않는다.

2) 인라인 박스 - display:inline

- 인라인 박스로 변경한 사례이다. 새 줄에 출력되지도 새 줄로 넘어가지도 못한다.

3) 인라인 블록 박스 - display:inline-block

- 기본적으로 인라인 박스이면서 블록 박스처럼 height, width로 크기를 조절하고 padding(패딩), margin(여백) 등을 조절할 수 있다.

 

--> 결과

2) 박스의 배치, position

- position을 이용하면 normal flow를 무시하고 원하는 위치에 박스를 배치할 수 있다.

[1] 정적, 상대 배치

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>relative 배치</title>
    <style>
        div {
            display: inline-block;
            height: 50px;
            width: 50px;
            border: 1px solid lightgray;
            text-align: center;
            color: white;
            background: red;
        }

        #down:hover {
            position: relative;
            left: 20px;
            top: 20px;
            background: green;
        }

        #up:hover {
            position: relative;
            right: 20px;
            bottom: 20px;
            background: green;
        }
    </style>
</head>

<body>
    <h3>상대 배치, relative</h3>
    <hr>
    <div>T</div>
    <div id="down">h</div>
    <div>a</div>
    <div>n</div>
    <div id="up">k</div>
    <div>s</div>
</body>

</html>

1) 정적배치 - position: static(디폴트)

- 웹페이지가 작성된 순서대로 html 태그의 출력 위치를 정하는 방식으로, 브라우저의 디폴트 배치방식이다.

2) 상대배치 - position: relative

- HTML태그가 출력되는 위치를 left, top, bottom, right 값만큼 이동할 수 있다.

--> 결과

[2] 절대 배치

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>절대 배치</title>
    <style>
        div {
            display: inline-block;
            position: absolute;
            /* 절대 배치 */
            border: 1px solid lightgray;
        }

        div>p {
            /* div의 자식 p */
            display: inline-block;
            position: absolute;
            /* 절대 배치 */
            height: 20px;
            width: 15px;
            background: lightgray;
        }
    </style>
</head>

<body>
    <h3>Merry Christmas!</h3>
    <hr>
    <p>예수님이 탄생하셨습니다.</p>
    <div>
        <img src="media/christmastree.png" width="200" height="200" alt="크리스마스 트리">
        <p style="left:50px; top:30px">M</p>
        <p style="left:100px; top:0px">E</p>
        <p style="left:100px; top:80px">R</p>
        <p style="left:150px; top:110px">R</p>
        <p style="left:30px; top:130px">Y</p>
    </div>
</body>

</html>

1) 절대배치 - position: absolute

- 절대 위치는 left, top, bottom, right값으로 정하며, 부모 태그안에서의 상대좌표이다.

- 브라우저 크기가 변해도 절대 배치된 태그 위치는 변하지 않는다.

--> 결과

 

[3] 고정 배치

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>고정 배치</title>
    <style>
        #fixed {
            position: fixed;
            bottom: 10px;
            right: 10px;
            width: 100px;
            padding: 5px;
            background: red;
            color: white;
        }
    </style>
</head>

<body>
    <h3>Merry Christmas!</h3>
    <hr>
    <img src="media/christmastree.png" width="300" height="300" alt="크리스마스 트리">
    <div id="fixed">예수님이 탄생하셨습니다.
    </div>
</body>

</html>

1) 고정배치 - position: fixed

- left, top, right, bottom 값으로 뷰포트의 특정 위치에 고정시키는 배치 방식이다.

- 뷰포트(브라우저의 보이는 영역)에 고정시켜 브라우저에 항상 보이게 한다.

--> 결과

 

[4] float를 이용한 유동 배치

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>float 배치</title>
    <style>
        #float {
            float: right;
            /* 뷰포트의 오른쪽에 붙여 */
            border: 1px dotted black;
            width: 7em;
            /* 7개의 글자 크기 */
            padding: 0.25em;
            margin: 1em;
        }
    </style>
</head>

<body>
    <h3>학기말 공지</h3>
    <hr>
    <div>
        <p id="float">
            24일은 피아니스트 조성진의 크리스마스 특별
            연주가 있습니다.</p>
        <p>
            이제 곧 겨울 방학이 시작됩니다. 학기 중 못다한
            Java, C++ 프로그래밍 열심히 하기 바랍니다.
            인턴을 준비하는 학생들은 프로젝트 개발에
            더욱 힘쓰세요. 그럼 다음 학기에 만나요.</p>
    </div>
</body>

</html>

1) 유동배치 - float: left 혹은 float:right

- float프로퍼티를 지정시 태그를 오른편이나 왼편에 항상 배치시킬 수 있다.

--> 결과

3) 수직으로 쌓기, z-index

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>z-index 프로퍼티</title>
    <style>
        div {
            position: absolute;
        }

        img {
            position: absolute;
        }

        #spadeA {
            z-index: -3;
            left: 10px;
            top: 20px;
        }

        #spade2 {
            z-index: 2;
            left: 40px;
            top: 30px;
        }

        #spade3 {
            z-index: 3;
            left: 80px;
            top: 40px;
        }

        #spade7 {
            z-index: 7; 
            left: 120px;
            top: 50px;
        }
    </style>
    <!--z-index 값 순서대로 겹쳐지는 순서가 다르다. 같으면 나중에 그린것이 위로온다.-->
</head>

<body>
    <h3>z-index 프로퍼티</h3>
    <hr>
    <div>
        <img id="spadeA" src="media/spade-A.png" width="100" height="140" alt="스페이드A">
        
        <img id="spade2" src="media/spade-2.png" width="100" height="140" alt="스페이드2">

        <img id="spade3" src="media/spade-3.png" width="100" height="140" alt="스페이드3">

        <img id="spade7" src="media/spade-7.png" width="100" height="140" alt="스페이드7">
    </div>
</body>

</html>

- z-index는 html 태그들을 z축을 따라 수직으로 쌓는 순서를 지정하는 프로퍼티로 값이 클수록 위에 쌓인다.

--> 결과

4) 보이게 하거나 숨기게 하는 것, visibility

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>visibility 프로퍼티</title>
    <style>
        span {
            visibility: hidden;
        }
    </style>
</head>

<body>
    <h3>다음 빈 곳에 숨은 단어?</h3>
    <hr>
    <ul>
        <li>I (<span>love</span>) you.
        <li>CSS is Cascading
            (<span>Style</span>) Sheet.
        <li>응답하라 (<span>1988</span>).
    </ul>
</body>

</html>

- visibility를 이용해 html 태그를 출력할 건지 숨길건지를 정할 수 있다.

- 보이게 하려면 visible, 숨길거면 hidden을 설정하면 된다. 단, hidden으로 설정시 공간은 차지하지만 텍스트는 보이지 않는다.

--> 결과

5) 리스트 단축 프로퍼티, list-style

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>리스트로 메뉴 만들기</title>
    <style>
        #menubar {
            background: olive;
        }

        #menubar ul {
            /* 여백과 패딩 모두 0 */
            margin: 0;
            padding: 0;
            width: 567px;
            /* 모든 아이템(<li>)을 한 줄에 품을 수 있는 폭 */
        }

        #menubar ul li {
            display: inline-block;
            /* 새 줄로 넘어가지 않게 */
            list-style-type: none;
            /* 마커 삭제 */
            padding: 0px 15px;
            /* top=bottom=0, left=right=15px */
        }

        #menubar ul li a {
            color: white;
            text-decoration: none;
            /* 링크 보이지 않게 */
        }

        #menubar ul li a:hover {
            color: violet;
            /* 마우스 올라 갈 때 색 */
        }
    </style>
</head>

<body>
    <nav id="menubar">
        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">Espresso</a></li>
            <li><a href="#">Cappuccino</a></li>
            <li><a href="#">Cafe Latte</a></li>
            <li><a href="#">F.A.Q</a></li>
        </ul>
    </nav>
</body>

</html>

- list-style은 마커의 타입, 위치 이미지를 지정할 수 있다.

list-style: list-style-type  list-style-position  list-style-image

--> 결과

6) 표 꾸미기

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>표 응용</title>
    <style>
        table {
            /* 이중 테두리 제거 */
            border-collapse: collapse;
        }

        td,
        th {
            /* 모든 셀에 적용 */
            text-align: left;
            padding: 5px;
            height: 15px;
            width: 100px;
        }

        thead,
        tfoot {
            /* <thead>의 모든 셀에 적용 */
            background: darkgray;
            color: yellow;
        }

        tbody tr:nth-child(even) {
            /* 짝수 <tr>에 적용*/
            background: aliceblue;
        }

        tbody tr:hover {
            /* 마우스가 올라오면 pink 배경 */
            background: pink;
        }
    </style>
</head>

<body>
    <h3>1학기 성적</h3>
    <hr>
    <table>
        <thead>
            <tr>
                <th>이름</th>
                <th>HTML</th>
                <th>CSS</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>합</th>
                <th>310</th>
                <th>249</th>
            </tr>
        </tfoot>
        <tbody>
            <tr>
                <td>황기태</td>
                <td>80</td>
                <td>70</td>
            </tr>
            <tr>
                <td>이재문</td>
                <td>95</td>
                <td>99</td>
            </tr>
            <tr>
                <td>이병은</td>
                <td>85</td>
                <td>90</td>
            </tr>
            <tr>
                <td>김남윤</td>
                <td>50</td>
                <td>40</td>
            </tr>
        </tbody>
    </table>
</body>

</html>

 

--> 결과

7) 폼 꾸미기

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>폼 스타일 주기</title>
    <style>
        input[type=text] {
            /* text 창에만 적용 */
            color: red;
        }

        input:hover,
        textarea:hover {
            /* 마우스 올라 올 때 */
            background: aliceblue;
        }

        input[type=text]:focus,
        input[type=email]:focus {
            /* 포커스 받을 때 */
            font-size: 120%;
        }

        label {
            display: block;
            /* 새 라인에서 시작 */
            padding: 5px;
        }

        label span {
            display: inline-block;
            width: 90px;
            text-align: right;
            padding: 10px;
        }
    </style>
</head>

<body>
    <h3>CONTACT US</h3>
    <hr>
    <form>
        <label>
            <span>Name</span><input type="text" placeholder="Elvis">
        </label>
        <label>
            <span>Email</span><input type="email" placeholder="elvis@graceland.com">
        </label>
        <label>
            <span>Comment</span><textarea placeholder="메시지를 남겨주세요"></textarea>
        </label>
        <label>
            <span></span><input type="submit" value="submit">
        </label>
    </form>
</body>

</html>

 

--> 결과