1.  웹 문서의 레이아웃

1) display 속성

 

🐰  display 속성은 주로 웹 문서의 내비게이션을 만들면서 메뉴 항목을 가로로 배치할 때 많이 사용한다.

종류 설명
block 인라인 레벨 요소를 블록 레벨 요소로 만든다.
inline 블록 레벨 요소를 인라인 레벨 요소로 만든다.
inline-block 인라인 레벨 요소와 블록 레벨 요소의 속성을 모두 가지고 있으며 마진과 패딩을 지정할 수 있다.
none 해당 요소를 화면에 표시 x

 

display: block 사용 예
<head>
    <style>
        .transform {
            display: block; /* 속성 변경 */
        }
    </style>
</head>
<body>
    <!-- span 태그의 기본 속성에 의한 배치 -->
    <span>SPAN 01</span>
    <span>SPAN 02</span>
    <span>SPAN 03</span>
    <!-- span 태그의 변경된 속성에 의한 배치 -->
    <span class="transform">SPAN 04</span>
    <span class="transform">SPAN 05</span>
    <span class="transform">SPAN 06</span>

</body>

출력 결과


display: inline 사용 예
<head>
    <style>
        li {
            border: 2px solid black; 
        }
        .v_menu {
            list-style: none; /* 목록 항목의 스타일 기호를 없앰 */
        }
        .h_menu {
            display: inline;
        }
    </style>
</head>
<body>
    <ul>
        <li class="v_menu">세로메뉴01</li>
        <li class="v_menu">세로메뉴02</li>
        <li class="v_menu">세로메뉴03</li>
        <li class="v_menu">세로메뉴04</li>
    </ul>

    <ul>
        <li class="h_menu">네이버</li>
        <li class="h_menu">다음</li>
        <li class="h_menu">쿠팡</li>
        <li class="h_menu">구글</li>
    </ul>
</body>

출력 결과


display: inline-block 사용 예

 

  -  inline의 경우 한줄로 배치할 수 있지만, 넓이와 높이, 마진과 같은 정확한 값이 필요한 경우에는 적용이 힘듦
  -  inline 속성의 특성은 내부 콘텐츠만큼만 공간을 차지하고 있어서 넓이와 높이의 스타일이 적용이 안됨
  -  inline-block을 사용하면 해당 요소들을 가로로 배치할 수 있고 각 요소의 넓이와 높이 등 정확한 수치를 지정할 수 있음

<head>
    <style>
        li {
            border: 2px solid black;
        }
        .menu1 {
            display: inline; 
            background-color: yellowgreen;
            width: 150px;
            height: 40px; /* 넓이, 높이를 지정하였으나 inline 속성이기에 넓이, 높이가 적용되지 않음 */
        }
        .menu2 {
            display: inline-block; 
            background-color: orange;
            width: 150px;
            height: 40px; 
        }
    </style>
</head>
<body>
    <ul>
        <li class="menu1">inline</li>
        <li class="menu1">inline</li>
        <li class="menu1">inline</li>
        <li class="menu1">inline</li>
    </ul>

    <ul>
        <li class="menu2">inline-block</li>
        <li class="menu2">inline-block</li>
        <li class="menu2">inline-block</li>
        <li class="menu2">inline-block</li>
    </ul>
</body>

출력 결과


display: none 사용 예


   -  해당 요소와 공간을 모두 표시하지 않음
   -  비슷한 속성 중에 visibility: hidden; 이 있는데, visibility 속성은 화면에는 요소가 보이지 않으나 공간은 그대로 유지

        사용 예)
        팝업창(레이어 방식) 닫기.
        반응형 웹의 경우 모바일에서는 보이지만 PC에서는 보이지 않게 하려면 display: none 속성을 사용

<head>
    <style>
        .camera02 {
            display: none; /* 해당 요소의 공간과 내용을 없앰 */
           /* visibility: hidden; */
        }
    </style>
</head>
<body>
    <img src="img2/camera04.png" class="camera01" alt="camera04.png">
    <img src="img2/camera05.png" class="camera02" alt="camera05.png">
    <img src="img2/camera06.png" class="camera03" alt="camera06.png">
</body>

출력 결과

 


2) 왼쪽이나 오른쪽으로 배치하는 float 속성

 

🐰  html 초기 형태는  table 태그가 레이아웃을 잡는 용도로 사용
🐰  html4 부터는 레이아웃 용도로 table 태그 대신 div에 float 속성을 부여하는 방향으로 사용
🐰  html5 이후 부터 display 속성에 flex, grid 추가 하여 레이아웃에 사용

 

    💡 float 속성
      · float의 사전적 의미는 '떠오르다', '떠다니다'
      · 웹 페이지에서는 float을 왼쪽이나 오른쪽에 배치할 때 사용하며 배치를 하지 않을 경우 'none'으로 표현
      · 삽화 사용뿐 아니라, 레이아웃(block)을 나열할 때 많이 사용

 

left : 문서의 왼쪽으로 배치. 블록 박스를 왼쪽으로부터 나열하고 싶을 때 사용.
right : 문서의 오른쪽으로 배치. 블록 박스를 오른쪽으로부터 나열하고 싶을 때 사용.
none : 배치하지 않음. 정렬하지 않음
 ➡️  left와 right를 통해 나열 속성을 지정하면 display 개념은 무시됨. (none은 제외)

 

<head>
    <style>
        .camera {
            float: left;
        }
    </style>
</head>
<body>
    <img src="img/camera01.png" class="camera" alt="camera01">
    <h2>TITLE-1</h2>
    <p>
        Lorem Ipsum is simply dummy text of the printing and typesetting industry.
    </p>
</body>

출력 결과

 

<head>
    <style>
      div {
        width: 300px;
        height: 300px;
        border: 2px solid black;
      }

      .box1 {
        float: left;
      }

      .box2 {
        float: left;
      }
      .box3 {
        float: right;
      }
    </style>
</head>
<body>
    <div class="box1">01</div>
    <div class="box2">02</div>
    <div class="box3">03</div>
</body>

출력 결과

 


 

3) float 속성을 해제하는 clear 속성

 


🐰  float 속성으로 박스를 배치하면 이어지는 요소들도 동일한 속성이 적용
🐰  float 속성이 더 이상 필요하지 않다면 기존 속성을 해체하기 위한 clear 속성을 사용

  🥕  clear : float 나열에 대한 값을 지우고, 문서의 흐름을 제거하기 위해 사용하는 태그

  clear: left  ▶️  왼쪽으로 붙는 float 정렬을 취소
  clear: right  ▶️  오른쪽으로 붙는 float 정렬을 취소
  clear: both  ▶️  왼쪽, 오른쪽으로 붙는 float 정렬을 취소
  clear: none  ▶️  clear 속성을 설정하지 않은 것과 같음

 

<head>
    <style>
        div {
            width: 300px;
            height: 300px;
            border: 2px solid black;
        }
        .box1 {
            float: left;
        }
        .box2 {
            float: left;
        }
        .box3 {
            float: left;
        }
        .clear {
            clear: both;
        }
    </style>
</head>
<body>
    <div class="box1">01</div>
    <div class="box2">02</div>
    <div class="box3">03</div>
    <div class="clear">04</div>
    <div>05</div>
    <div>06</div>
    <div>07</div>
</body>

 

출력 결과

 

display : inline-block 과 float : left 속성의 다른점

 

 - inline-block은 가로로 배치하면서도 기본 마진과 패딩을 가지고 있지만,

    float: left는 가로로 배치될 때 요소에 기본 마진과 패딩이 없고 clear 속성으로 플로팅을 해제해야 함

 


2.  여백을 조절하는 속성

 

1) 요소 주변의 여백을 설정하는 margin 속성

margin: <크기>|<백분율>|auto

 

 

🐰  마진 margin은 요소 주변의 여백을 의미

🐰  top ▶️ right ▶️ bottom ▶️ left 순으로 적용

 

 

 

 

 

 


 

2) margin 속성을 사용하여 웹 문서를 가운데 정렬하기

 

🐰  웹 문서 전체를 화면 중앙에 배치할 때 margin 속성을 사용

🐰  margin-left 와 margin-right 의 속성값을 auto로 지정

       ➡️  CSS는 웹 브라우저 화면의 너비에서 요소 너빗값을 뺀 나머지 영역을 좌우 마진으로 자동 계산

       ➡️  block 속성을 가진 박스의 넓이가 지정되어 있을 때 margin:0 auto를 통해 가운데 배치가 가능하며

            margin: auto auto 라고 입력하면 브라우저의 위아래는 자동 인식이 되지 않지만 좌우는 자동으로 가운데 배치가 가능

<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .banner {
            width: 740px;
            height: 120px;
            background-color: burlywood;
            float: left;
        }
        .login {
            width: 333px;
            height: 120px;
            background-color: beige;
            float: left;
            margin-left: 8px;
            /* 로그인 박스 기준에서 간격을 주고자 왼쪽 바깥쪽 여백을 지정하였으며,
            배너 박스 기준일 때 바깥쪽 여백은 margin-right가 됨. */
        }

        .main {
            width: 1081px; /* 배너 박스와 로그인 박스를 더한 값 */
            height: 120px; /* 두 개 박스의 고정 높이 */
            margin: 100px auto;
            /* margin 값이 2개일 때 top bottom, left right로 지정 */
        }
    </style>
<body>
    <div class="main">
        <div class="banner">배너영역</div>
        <div class="login">로그인</div>
    </div>
</body>

출력 결과

 

안쪽 박스에 border가 추가 되면 박스의 넓이와 높이에 영향을 주게 되어서 박스들이 밑으로 밀려나는 현상이 나타남
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .banner {
            width: 740px;
            height: 120px;
            background-color: burlywood;
            float: left;
            border: 2px solid black;
        }
        .login {
            width: 333px;
            height: 120px;
            background-color: beige;
            float: left;
            margin-left: 8px;
            border: 2px solid black;
        }
        /*
        배너 영역 박스 넓이 : 740 + 2 + 2 = 744px
        로그인 박스 넓이 : 333 + 8 + 2 + 2 = 345px
        부모 박스의 넓이 : 744 + 345 = 1089px
        부모 박스의 높이 : 120 + 2 + 2 = 124px
         */
        .main {
            width: 1081px; /* 배너 박스와 로그인 박스를 더한 값 */
            height: 120px; /* 두 개 박스의 고정 높이 */
            margin: auto auto /* margin 값이 2개일 때 top bottom, left right로 지정 */
        }
    </style>
<body>
    <div class="main">
        <div class="banner">배너영역</div>
        <div class="login">로그인</div>
    </div>
</body>

출력 결과

 


 

3) 마진 중첩 이해하기

 

🐰  박스 모델들을 세로로 배치할 경우 각 마진과 마진이 서로 만나면 마진값이 큰 쪽으로 겹쳐지는 문제가 발생

       ▶️ 이런 현상을 마진 중첩 margin overlap 또는 마진 상쇄 margin collapse 라고 함

       ▶️ 오른쪽 마진과 왼쪽 마진이 만날 경우에는 중첩되지 않음

 


 

4) 콘텐츠와 테두리 사이의 여백을 설정하는 padding 속성

 

 

 

🐰  패딩 padding 이란 콘텐츠 영역과 테두리 사이의 여백을 말함

🐰  4개 방향의 패딩을 한꺼번에 지정할 수도 있고, 예약어를 사용해서 특정 방향에만 지정할 수도 있다.

 

 

 

 

 

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]


 

1.  CSS 박스 모델

 

1) 블록 레벨 요소와 인라인 레벨 요소

 

🍒  블록 레벨 block-level 요소 

      -  화면의 가로(폭) 길이 (100%)를 차지, 뒤에 오는 요소는 줄 바꿈이 일어나며 

          여러 개의 <div> 태그를 나열하면 수직 방향으로 정렬이 됨

           ▶️  대표적인 태그 : div, p, h1~h6, ul, ol, form, table, blockquote~

<body>
    <div>HTML5-WEB</div>
    <div>HTML5-WEB</div>
    <div>HTML5-WEB</div>
    <div>HTML5-WEB</div>
    <div>HTML5-WEB</div>
</body>

출력 결과


 

🍒  인라인 레벨 inline-level 요소

    -  해당 태그의 컨텐츠 만큼 공간을 차지(폭이 컨텐츠의 양에 비례), 글자와 같이 옆으로 나열되며 나타남
    -  줄 바꿈이 일어나지 않기 때문에 <span></span> 이라고 나열하면 수평 방향으로 정렬
    -  width, height, margin-top, margin-bottom이 적용되지 않음
    -  태그 종류 : a, img, span, sub, sup, i, b, em(글자를 꾸미는 태그 종류), input

<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
    </style>
</head>
<body>
    <span>SPAN-inline</span>
    <span>SPAN-inline</span>
    <span>SPAN-inline</span>
    <span>SPAN-inline</span>
    <span>SPAN-inline</span>

</body>

출력 결과

 


span에 margin 적용 시 margin-left, margin-right는 적용되어서 나오는 예시
<head>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        span {
            width: 100px;
            height: 100px;
            background-color: aqua;
            margin: 10px;
            float: left;
        }
    </style>
</head>
<body>
    <span> inline 성격의 태그</span>
    <span> inline 성격의 태그</span>
</body>

출력 결과

 


2)  박스 모델의 기본 구성

 

 

 

🍒  박스모델 box model 요소

     -  박스 형태인 요소를 말함

     -  콘텐츠 영역 ▶️ 패딩 padding ▶️ 테두리 border ▶️ 마진 margin 으로 구성

     -  마진이나 패딩은 웹 문서에서 다른 콘텐츠 사이의 간격이나 배치 등을 고려할 때 필요한 개념

 

 

💡  박스의 실제 넓이와 높이 공식
     - 한개의 박스에 margin + border + padding 값이 모두 적용되었다는 가정
     - width 속성과 height 속성은 텍스트가 들어가는 영역(contents)의 넓이와 높이를 지정

* 전체 넓이 : width + 2 * (margin + border + padding)
* 전체 높이 : height + 2 * (margin + border + padding)

 

3) 콘텐츠 영역의 크기를 지정하는 width, height 속성

 

종류 설명
<크기> 너비나 높이의 값을 px이나 em 단위로 지정
<백분율> 박스 모델을 포함하는 부모 요소를 기준으로 너빗값이나 높잇값을 백분율(%) 로 지정
auto 박스 모델의 너빗값과 높잇값이 콘텐츠 양에 따라 자동으로 결정된다. 기본값.

🍒  넓이 / width : 크기 | 백분율 | auto
🍒  높이 / height : 크기 | 백분율 | auto

 

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box1 {
            width: 300px; /* 고정 넓이 */
            height: 100px; /* 고정 높이 */
            background-color: blue;
        }
        #box2 {
            width: 50%; /* 가변 넓이 - 현재 브라우저 창 너비의 50%를 유지 */
            height: 100px; /* 고정 높이 */
            background-color: green;
        }
      
    </style>
</head>
<body>
    <div class="box1">BOX-1</div>
    <div id="box2">BOX-2</div>
</body>

 

전체 창 출력
브라우저 창 크기를 줄였을 때

 


 

4) box-sizing 속성

 

🍒  width 속성과 height 속성은 콘텐츠 주변의 여백이나 테두리를 뺀 콘텐츠 영역의 크기를 가리킨다

🍒  웹 문서에 여러 가지 요소를 배치할 때 실제 박스 모델이 차지하는 크기는 콘텐츠와 테두리 사이의 여백, 테두리 두께까지 계산해야 함

 

  💡 box-sizing은 박스 모델의 크기를 쉽게 계산하기 위해 지정하는 속성

종류 설명
boder-box 테두리까지 포함해서 너빗값을 지정
content-box 콘텐츠 영역만 너빗값을 지정. 기본값.
<head>
    <style>
        div {
            width: 300px;
            height: 300px;
            border: 10px solid black; /* 테두리 스타일 */
            padding: 30px; /* 안쪽 여백 공통 지정 */
        }
        .box1 {
            box-sizing: border-box;
            /* 박스의 테두리와 여백을 박스의 넓이와 높이에 포함. 넓이가 300px */
        }
        .box2 {
            box-sizing: content-box;
            /* 기본값과 동일. 넓이: 300 + 20 + 60 = 380px */
        }
    </style>
</head>
<body>
    <div class="box1">01</div>
    <div class="box2">02</div>

</body>

출력 결과


 

5)  box-shadow 속성

 

🍒  사진 주변에 그림자를 추가하는 속성

🍒  수평 거리와 수직 거리는 필수로 지정 ▶️  그림자의 위치는 수평 거리와 수직 거리의 값에 따라 움직이기 때문

box-shadow: <수평거리> <수직거리> <흐림 정도> <번짐 정도> <색상> inset

 

종류 설명
<수평 거리> 그림자가 가로로 얼마나 떨어져 있는지 나타냄.
양수는 오른쪽 / 음수는 왼쪽
<수직 거리> 그림자가 세로로 얼마나 떨어져 있는지 나타냄.
양수는 아래쪽 / 음수는 위쪽
<흐림 정도> 생략하면 0을 기본값으로 하여 진한 그림자를 표시.
값이 커질수록 부드러운 그림자를 표시하며 음수는 사용불가.
<번짐 정도> 양수는 모든 방향으로 그림자가 퍼져 박스보다 그림자가 크게 표시.
음수는 모든 방향으로 그림자가 축소되어 보임.
기본값은 0
<색상> 한 가지만 지정할 수도, 공백으로 구분해서 여러 개 색상 지정 가능
기본값은 검정색
inset 이 키워드를 함께 표시하면 안쪽 그림자로 그린다.

 

2.  테두리 스타일 지정

 

1) 박스 모델의 방향

 

🍒  박스 모델은 상하좌우 4개의 방향이 있어 테두리나 마진, 패딩 등을 지정할 때 한꺼번에 똑같이 지정하거나

      모두 다르게 지정할 수도 있다.

🍒  맨 윗 부분은 top ▶️ 오른쪽은 right ▶️ 아래쪽은 bottom ▶️ 왼쪽은 left  (시계 방향)

       

 


 

2) 테두리 스타일을 지정하는 border-style 속성

 

종류 설명
none 기본값. 테두리가 없다.
hidden 테두리를 감춘다. 표에서 border-collapse: collapse일 경우 다른 테두리도 표시되지 않는다.
solid 테두리를 실선으로 표시
dotted 테두리를 도트형태의 점선으로 표시
dashed 테두리를 직선형태의 점선으로 표시
double 테두리를 이중선으로 표시. 두 선 사이의 간격이 border-width값이 된다.
groove 테두리를 창에 조각한 것처럼 표시. 홈이 파인 듯 입체 느낌이 난다.
inset 표에서 border-collapse: seperate일 경우 전체 박스 테두리가 창에 박혀 있는 것처럼 표시
표에서 border-collapse: collapse일 경우 groove와 똑같이 표시
outset 표에서 border-collapse: seperate일 경우 전체 박스 테두리가 창에서 튀어나온 것처럼 표시
표에서 border-collapse: collapse일 경우 ridge와 똑같이 표시
ridge 테두리를 창에서 튀어나온 것처럼 표시
<style>
    #box1 { border-style:solid; }  /* 실선 */
	#box2 { border-style:dotted; }  /* 점선 */
    #box3 { border-style:dashed; }  /* 짧은 직선 */
</style>


 

3) 테두리 두께를 지정하는 border-width 속성

 

border-width: <크기> | thin | medium | thick

 

🍒  속성 값이 1개  ▶️  4개 방향 테두리 모두 같은 값 적용

🍒  속성 값이 2개  ▶️  첫 번째 값은 top, bottom 테두리 / 두 번째 값은 left, right 테두리 적용

🍒  속성 값이 3개  ▶️  top, right, bottom 순으로 적용 / left 값은 마주보는 right 속성값과 똑같이 적용

🍒  속성 값이 4개  ▶️  top, right, bottom, left 순으로 적용


 

4) 테두리 색상을 지정하는 border-color 속성

 

🍒  테두리 색상을 지정

      ➡️  border-color 사용해서 4개 방향의 테두리 색상 한꺼번에 지정

      ➡️  border-top-color 처럼 테두리 방향을 넣어주면 색상을 하나씩 지정 가능


 

5) 테두리 스타일 묶어 지정하는 border 속성

 

🍒  테두리 스타일과 두께, 색상의 속성을 따로 사용하면 소스 길이가 길어짐

       ▶️  3가지를 한꺼번에 표현하는 방법이 border 속성을 사용하는 것 ( 속성 값 순서는 상관 없다 )

<style>
    * {
        margin: 0;
        padding: 0;
    }
    .box1 {
        width: 300px; /* 고정 넓이 */
        height: 100px; /* 고정 높이 */
        border: green 2px solid; /* 테두리 굵기는 2px, 테두리 스타일 solid, 테두리 색상 green */
    }
    .box2 {
        width: 300px;
        height: 100px;
        border: red dashed;
        border-width: 1px 5px 10px 12px; /* 12시 부터 시계 방향으로 */
    }
    .box3 {
        width: 300px;
        height: 100px;
        border: blue 1px dotted;
        border-bottom-width: 5px; /* 아래 테두리만 따로 지정 */
    }
    .box4 {
        width: 300px;
        height: 100px;
        border: pink dashed;
        border-width: 5px 10px; /* (12시 6시) (3시 9시) */
    }
     </style>
</head>
<body>
    <div class="box1">BOX-1</div>
    <div class="box2">BOX-2</div>
    <div class="box3">BOX-3</div>
    <div class="box4">BOX-4</div>
</body>


 

6) 둥근 테두리를 만드는 border-radius 속성

 

border-radius: <크기> | <백분율>

 

🍒  border-radius 속성을 사용하면 꼭짓점 부분에 원이 있다고 가정해서 둥글게 처리

      ▶️  이 때 원의 반지름을 이용하면 둥근 정도를 나타낼 수 있다

🍒  라운드 지정하는 순서는 top-left, top-right, bottom-right, bottom-left
🍒  원 형태로 만들고 싶다면 border-radius 반지름값을 너비나 높이의 50%로 지정하면 된다.

 

 

<head>  
    <style>
        div {
            width: 300px;
            height: 100px;
            border: green 10px solid;
            margin: 10px;
        }
        .box1 {
            border-radius: 30px ; /* 전체 모서리를 30px로 라운드 지정 */
        }
        .box2 {
            border-radius: 10px 20px 30px 40px;
            /* top-left: 10px, top-right: 20px; bottom-right: 30px, bottom-left: 40px 라운드 지정 */
        }
        .box3 {
            border-radius: 10px 40px;
            /* top-left: 10px, top-right: 40px; bottom-right: 10px, bottom-left: 40px 라운드 지정 */
        }
        .box4 {
            width: 100px; height: 100px; border-radius: 100px; /* 원모양 */
        }
      
    </style>
</head>
<body>
    <div class="box1">BOX-1</div>
    <div class="box2">BOX-2</div>
    <div class="box3">BOX-3</div>
    <div class="box4">BOX-4</div>
</body>

 

출력 결과

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]


 

1. CSS 란?

👩🏻‍💻  CSS (style)각 요소들이 어떻게 보이는가를 정의하는데 사용되는 스타일 시트 언어로 홈페이지의 스타일 즉 디자인 요소를 담당

 

1) 스타일

 

a.  스타일 형식

[기본구조]
선택자(Selector) { 속성(property) : 값(value); }
(* 스타일은 기본적으로는 마지막에 작성된 순서대로 표현되어짐!)

 

  ✏️  맨 앞의 선택자는 스타일을 어느 태그에 적용할 것인지 알려 주는 것

  ✏️  속성과 값이 하나의 쌍으로 이루어진 것을 스타일 규칙이라 하며, 세미콜론(;)으로 구분해 스타일 규칙을 여러 개 지정할 수 있다.

 

b. 스타일의 주석 표기

<style>
    /* style 안에 작성하는 주석방법! */
</style>

 

  ✏️  /* */ 안에 한 줄 또는 여러 줄 들어갈 수 있다.


💡 CSS 소스 경량화 

    -  CSS 소스는 네트워크를 이용해 파일로 내려받으므로 되도록 파일 크기가 작은 것이 좋다.

    -  즉, 줄 바꿈, 공백등을 제거하고 꼭 필요한 정보만 남겨 파일을 작게 만드는 것을 'CSS 소스 경량화(minify)' 라고 한다. 

 

 


2) 스타일 시트

 

📁  스타일 규칙을 한눈에 확인하고 필요할 때마다 수정하기도 쉽도록 한군데 묶어 놓은 것을 '스타일 시트'라고 한다.

 

스타일 시트 갈래

 

a.  브라우저 기본 스타일

  ·  CSS를 사용하지 않은 웹 문서라 하더라도 웹 브라우저에 표시할 때는 기본 스타일을 사용

 

b. 사용자 스타일

 

💡  인라인 스타일(Inline style)

    -  HTML 요소 내부에 style 속성을 사용하여 CSS 스타일을 적용하는 방법

</h2 style="color:green">

 

 

💡  내부 스타일 시트(Internal style sheet)

    - <style>태그를 사용하여 CSS 스타일을 적용하는 방법

<head>
  <style>
       body { background-color: lightyellow; }
  </style>
</head>

 


💡  외부 스타일 시트(External style sheet)
    -  외부에 작성된 .CSS문서 즉 스타일 시트 파일을 연결하여 적용하는 방법

<head>
    <link rel="stylesheet" href="외부 스타일 시트 파일 경로">
</head>

 

    ⚡️  외부 스타일 시트 작성
         1. html 파일이 있는 디렉토리에 css 라는 이름의 디렉토리를 생성
         2. css 디렉토리에 main.css 파일 생성
         3. html 파일의 <style> 태그 안의 부분을 복사해서 main.css에 붙여넣기
               ▶️  <style> 태그는 포함하지 않음
         4. html 파일의 <style> 태그 삭제
         5. <link> 태그로 css 파일을 연결

     ⚡️  외부 스타일 시트의 단점
           - 캐쉬 때문에 바로 적용이 안 되는 경우가 있음


 

<!-- main.css 파일 -->
.de {
    color: #09F;
}
<head>
    <meta charset="UTF-8">
    <title>CSS 지정 방식</title>
        <link rel="stylesheet" href="./css/main.css" />
</head>

<body>
    <p class="de">
        디지털 디자인 이란 ?<br>
        우선 '디지털(Digital)' 그리고 '디지털 스토리텔링(Digital Storytelling)'이란 말에 대해 생각해보자.
    </p>

</body>

출력 결과

 


2.  CSS 기본 선택자 

1)  클래스 선택자  class selector

.클래스명 { 스타일 규칙 }

 

👩🏻‍💻  클래스 이름을 사용해서 다른 선택자와 구별하는데, 클래스 이름 앞에 마침표(.)를 붙여야 한다. 

👩🏻‍💻  클래스 스타일을 적용할 때는 태그 안에 class="클래스명" 처럼 class 속성을 사용해서 지정

👩🏻‍💻  요소 하나에 클래스 스타일을 2개 이상 적용할 수 있다.  

       ▶️ 이 때 공백으로 구분해서 스타일 이름을 적으면 된다.

<head>
    <meta charset="UTF-8">
    <title>CSS 지정 방식</title>
    <style>
        .de {
            color: #09F;
        }
    </style>
</head>

<body>
    <p class="de">
        디지털 디자인 이란 ?<br>
        우선 '디지털(Digital)' 그리고 '디지털 스토리텔링(Digital Storytelling)'이란 말에 대해 생각해보자.
    </p>
</body>

출력 결과


 

2) 전체 선택자  universal selector

* { 속성: 값... }


 👩🏻‍💻  html내에 등장하는 모든 형태를 선택 (초기화, 기본 설정값) 가급적 사용안하는 것이 좋음.

         ➡️ reset.css 치면 나오는 글 참고해서 작성하는 것이 좋다.

<style>
    * {
         margin: 0; /* 바깥여백 */
         padding: 0; /* 안쪽여백 */
      }
</style>
</head>
<body>
    <h4>Artwork Concept Drawing</h4>
    <h1>아트웍 컨셉 드로잉</h1>
    <p>
        편집 포트폴리오에 포함될 수 있는 북커버 및 동화책 삽화 제작, 웹 포트폴리오에 포함될 수 있는 아트웍 실습,
        3D 캐릭터 디자인이나 모션 그래픽에 사용할 수 있는 아트웍 표현에 대하여 학습합니다.
    </p>
</body>

 

출력 결과

 


3)  타입 선택자 type selector 

태그명 { 스타일 규칙 }


👩🏻‍💻  특정 태그를 사용한 모든 요소에 스타일을 적용하는 선택자로, html 화면 내에서 하나의 이름으로 한 번만 사용권장
       ➡️  주로 큰 단락, 부모에서 사용

👩🏻‍💻  여러 태그들을 한 번에 선택해 스타일 속성을 적용할 때 쉼표 사용

 

  💡  태그(tag)와 요소(element)

      -  태그는 말 그대로 태그 자체를 가리키는 반면, 요소는 태그를 적용한 것을 가리킴

      -  즉 요소는 태그 안에 적힌 문자들을 지칭

<style>
        * {
            margin: 0; /* 바깥여백 */
            padding: 0; /* 안쪽여백 */
        }

        body {
            background: #000000; /* 배경색 지정. #000 -> 검정색 */
            color: white; /* 글자색 */
        }
</style>
</head>
<body>
    <h4>Artwork Concept Drawing</h4>
    <h1>아트웍 컨셉 드로잉</h1>
    <p>
        편집 포트폴리오에 포함될 수 있는 북커버 및 동화책 삽화 제작, 웹 포트폴리오에 포함될 수 있는 아트웍 실습,
        3D 캐릭터 디자인이나 모션 그래픽에 사용할 수 있는 아트웍 표현에 대하여 학습합니다.
    </p>
</body>

출력 결과


 

태그 선택자와 클래스 선택자를 함께 사용하면 더 정확하게 태그를 선택할 수 있음 
   ex. 태그명.클래스명
<head>
    <style>
        li.select {
            color: red;
        }
    </style>
</head>
<body>
    <h1 class="select">Lorem ipsum</h1>
    <ul>
        <li class="select">Lorem ipsum</li>
        <li>Lorem ipsum</li>
        <li>Lorem ipsum</li>
        <li>Lorem ipsum</li>
    </ul>
</body>

 

출력 결과

 

 


4) id 선택자  id selector

#아이디명 { 스타일 규칙 }

 

👩🏻‍💻  id 선택자도 클래스 선택자와 마찬가지로 특정 부분에 스타일을 적용할 때 사용
👩🏻‍💻  마침표(.) 대신 # 기호를 사용한다는 점만 제외하면 클래스 선택자와 사용법은 동일
👩🏻‍💻  주로 큰 단락, 부모에서 사용. 자바 스크립트에서 사용.

<head>
    <meta charset="UTF-8">
    <title>스타일시트</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #title1 {color: #666666;}
        #title2 {color: blue;}
        #title3 {color: orange;}
        #title4 {color: red;}
        #title5 {color: gray;}
        #title6 {color: green;}
    </style>
</head>
<body>
    <h1 id="title1">웹디자인</h1>
    <h2 id="title2">스마트폰 웹디자인</h2>
    <h3 id="title3">웹기획</h3>
    <h4 id="title4">웹프로그래밍</h4>
    <h5 id="title5">웹퍼블리쉬</h5>
    <h6 id="title6" style="color:red;">제이쿼리</h6>
</body>

출력 결과

 


id는 고유값이어야 하지만, 스타일시트에서는 id 속성 중복이 문제가 되지 않음
하지만 자바스크립트는 id 속성이 중복될 경우에 문제가 발생
    예) getElementById(), getElementsByClassName()

id 속성은 중복되지 않게 사용해야 함
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #rint { color: red;}
    </style>
</head>
<body>
    <h1 id="rint">CSS3 Selector Basic</h1>
    <h2 id="rint">CSS3 Selector Basic</h2>
    <h3 id="rint">CSS3 Selector Basic</h3>
</body>

출력 결과

 


5) 그룹 선택자

선택자1, 선택자2 { 스타일 규칙 }

 

👩🏻‍💻  여러 선택자에서 같은 스타일 규칙을 사용하는 경우 쉼표(,)로 구분해 여러 선택자 나열 후 스타일 규칙을 한 번만 정의

 


 

3. 캐스케이딩 스타일 시트

 

🚀  캐스케이딩 cascading 은 CSS 의 'C'에 해당하며, 스타일 시트에서 우선순위가 위에서 아래로 적용된다는 의미로 사용

🚀  CSS에서는 웹 요소에 둘 이상의 스타일을 적용할 때 우선순위에 따라 적용할 스타일을 결정

 

스타일 충돌하지 않게 하는 방법 : 스타일 우선순위 적용 / 스타일 상속

 

 

1) 스타일 우선순위

 

👾  어떤 스타일을 먼저 적용할 것인지 결정하는 규칙

👾  웹 브라우저 내용을 표시할 때 사용자 스타일, 제작자 스타일, 웹 브라우저 기본 스타일 순으로 우선 적용

👾  중요도가 같은 스타일인 경우 필요한 요소에만 적용할 스타일 일수록 우선순위가 높아진다.

a. ! important : 스타일에 강제 스타일 적용 시 사용 ex) background-color: yellow !important;
b. 인라인 스타일  ex) <h2 style="color:green">
c. id 스타일  ex) #id { color: #000; }
d. 클래스 스타일  ex) .class { color:#000; }
e. 타입 스타일  ex) h1 { color:#fff; }

 

<head>  
    <style>

        * {
            margin: 0;
            padding: 0;
        }

        p {
            font-style: italic; /* 글자 스타일 */
            color: red !important /* 글자 색상. 중요 스타일은 !important 붙임 */
        }

        p {
            color: orange; /* 글자 색상 */
        }
    </style>
</head>
<body>
    <h1>디자인스킬업</h1>
    <p style="color:blue;">
        2D 그래픽은 모든 그래픽에서 기본이라 할 수 있습니다. 그래픽 작업에서 높은 비중을 차지합니다.
    </p>
</body>

출력 결과


💡 소스코드의 작성 순서

    -  스타일 시트에서 중요도와 적용범위가 같아면 그 다음은 스타일을 정의한 소스 순서로 우선순위가 정해진다.

        ➡️  나중에 작성한 스타일이 먼저 작성한 스타일을 덮어쓴다.

<head>
     <style>
        * {
            margin: 0; /* 바깥여백 */
            padding: 0; /* 안쪽여백 */
        }
        body {
            background: #000000; /* 배경색 지정. #000 -> 검정색 */
            color: white; /* 글자색 */
        }
        body {
            background: #999; /* 동일한 속성에 값을 지정하는 경우 나중의 것이 적용됨 */
            font-family: '돋움'; /* 기본 글꼴 돋움 */
            font-size: 10px; /* 글자 크기 10px */
        }
        body {
            line-height: 30px; /* 줄 간격 30px */
        }
        a {
            text-decoration: none; /* a 속성을 가진 링크에 어떤 꾸밈도 하지 않음 */
            color: yellow; /* 링크를 지정한 글자의 색상을 노란색으로 지정 */
        }
        .color1 {
            color:green;
        }
    </style>
</head>

<body>
    <h4>Artwork Concept Drawing</h4>
    <h1 class="color1">아트웍 컨셉 드로잉</h1>
    <p class="color1">
        편집 <a href="#">포트폴리오</a>에 포함될 수 있는 북커버 및 동화책 삽화 제작, 웹 포트폴리오에 포함될 수 있는 아트웍 실습,
        3D 캐릭터 디자인이나 모션 그래픽에 사용할 수 있는 아트웍 표현에 대하여 학습합니다.
    </p>
</body>

출력 결과


 

2) 스타일 상속

 

👾  웹 문서에서 사용하는 여러 태그는 서로 포함 관계

       ▶️ 이 때 포함하는 태그를 부모 요소, 포함된 태그를 자식요소
👾  '스타일 상속' : 부모 태그에 특정 값을 적용 시 아래, 즉 하위 요소에도 그 속성들이 그대로 적용
       ▶️  예를 들어 정렬 text-align, color, font-size...

       ▶️   body 태그는 웹 문서에서 사용한 모든 태그의 부모요소

<head>
    <meta charset="UTF-8">
    <title>스타일시트</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
       
        body {
            font-family: '돋움'; /* 글꼴 */
            color: red; /* 글자 색상 */
        }
    </style>
</head>
<body>
    <h1>디자인과정</h1>
    <ul>
        <li>웹학과</li>
        <li>편집디자인학과</li>
        <li>CG학과</li>
        <li>모션영상학과</li>
        <li>건축인테리어학과</li>
        <li>기계학과</li>
    </ul>
</body>

출력 결과

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it HTML+CSS+자바스크립트 웹 표준의 정석' ]

 


 

1.  이미지 태그

1) 이미지 삽입 <img> 태그

<!-- 기본형 -->
<img src="이미지 파일 경로" alt="대체용 텍스트">

 

👩🏻‍🚀  src 속성은 이미지 파일의 경로를 지정하여 웹 브라우저에 알려 주는 역할

👩🏻‍🚀  alt 속성에는 화면 낭독기 등에서 이미지를 대신해서 읽어 줄 텍스트를 입력

 

💡  웹에서 사용하는 대표적인 이미지 파일 형식

종류 설명
GIF
(graphic interchange format)
표시할 수 있는 색상 수는 최대 256가지. 작은 이미지에 주로 사용
JPG/JPEG
(joint photographic experts group)
GIF 보다 색상과 명암을 다양하게 표현 가능. 이미지 수정하고 저장하는 작업 반복 시 화질이 떨어질 수 있다.
PNG
(portable network graphics)
네트워크용으로 개발된 파일 형식. 색상을 다양하게 표현하면서도 투명한 배경도 만들 수 있어 웹에서 가장 많이 사용

 

💡  src 속성

    ·  파일 경로를 정확하게 입력하지 않으면 이미지가 화면에 나타나지 않는다.

    ·  웹 문서 파일의 위치를 기준으로 파일의 경로가 정해진다.

    ·  웹 문서 파일과 이미지 파일이 같은 경로에 있다면 src 속성에 이미지 파일의 이름만 적으면 된다

        ▶️  하위 폴더에 이미지 파일이 있다면 src 속성에 하위 폴더와 함계 이미지 파일 이름을 적어야 한다.

 

💡  alt 속성

    ·  alt 속성을 지정하면 인터넷이 불안정하거나 이미지 파일 경로를 잘못 넣었을 때 이미지 대신 텍스트가 표시

    ·  메뉴를 이미지로 삽입하는 경우와 같이 내용을 강조하기 위해 이미지로 처리할 때

        alt 속성안에 들어갈 텍스트는 이미지를 부연설명 하는 것이 아닌 이미지 안에 포함된 텍스트를 알려줘야 한다.

 

💡  이미지 크기 조절 width, heigh 속성

    ·  웹 브라우저 창에서 보이는 이미지 크기만 조절하고 싶을 때 사용

    ·  width는 너비, height는 높이를 지정. 둘 중 하나만 지정해도 나머지 속성 비율은 자동으로 계산하여 나타낸다.

 

💡  이미지 크기 표현 단위

종류 설명
% 웹 브라우저 창의 너비와 높이를 기준으로 이미지 크기를 결정
px 이미지의 너비나 높이를 해당 픽셀 크기만큼 표시
<body>
    <!--
    이미지를 나타내주는 태그. 단독 태그.
    글자와 같이 나열되는 성격(inline 속성)

    <img src="이미지 파일의 1)경로 또는 2)url" alt="대체문자">
    alt: 주석문, 이미지가 안보일 때를 대비한 대체문자, html5 기본 규칙!

    이미지의 확장자(대표)
        jpg -> 가장 대표적인 이미지 표현방식, 이미지의 색상을 가장 잘 표현할 수 있는 확장자!
        gif -> 투명한 배경이 가능한, 색상이 256개의 표현만 가능~ 화질이 떨어져 보임 / 움짤, 움직이는 이미지
        png -> 이미지의 색상을 유지하며 투명한 배경을 나타낼 수 있는 확장자!

    이미지 파일의 경로 : * 작성하는 문서(html)의 기점으로부터.
    -->
    <!-- 경로에 맞게 불러온 이미지 -->
    <img src="./img/camera01.png" alt="카메라1"><br>

    <!-- 경로에 맞지 않게 불러온 이미지 -->
    <img src="../img/camera02.png" alt="카메라2"><br>

    <!-- 넓이 옵션을 적용한 이미지 (원 사이즈보다 크게 적용하면 이미지가 흐릿해짐) -->
    <img src="img/camera03.png" alt="카메라3" width="600"><br>

</body>

 


 

  📍 웹 페이지의 이미지 주소 복사로 가져온 경우

<body>
    <!-- 이미지태그를 url로 연결하는 방법 -->
    <img src="https://image.istarbucks.co.kr/upload/store/skuimg/2021/04/[30]_20210415144252425.jpg">
</body>

 

  📍 figure 와 figcaption

<body>
    <!-- figure : 이미지, 사진, 삽화 같은 콘텐츠를 넣을 때 사용 -->
    <figure>
        <img src="img/camera01.png" alt="카메라1">
        <!-- figure 요소에 캡션을 넣을 때 사용하는 태그로 figure 안에서 사용, 제일 처음이나 마지막에 배치! -->
        <figcaption>카메라를 올바르게 촬영하는 방법</figcaption>
    </figure>
</body>

 


 

2.  하이퍼링크 삽입

1) 링크를 삽입하는 <a> 태그와 href 속성

<!-- 기본형식 -->
<a href="링크할 주소">텍스트 또는 이미지</a>

 

  👾  한 번이라도 클릭한 링크는 자주색으로 변경

 

a. 텍스트 링크 만들기

 

👩🏻‍🚀  텍스트 링크는 <a>와 </a> 태그 사이에 링크로 만들 텍스트를 입력하고,

      href 속성에는 텍스트를 클릭하면 연결할 문서의 경로와 파일명을 넣으면 된다.

 

b. 이미지 링크 만들기

 

👩🏻‍🚀  <a>와 </a> 태그 사이에 <img> 태그를 넣어 만든다.

 

c. 링크를 새 탭에서 열어주는 target 속성

 

👩🏻‍🚀  target 속성에 _blank를 지정하면 링크를 클릭했을 때 연결된 문서가 새 탭에서 열린다.

<body>
    <!-- a 태그 : 웹페이지의 연결, url연결 시 사용
    1) 다른 페이지의 전환 (메뉴 표현) 2) 글자와 같이 나열되는 성격!(inline 속성)
    링크연결 시 기본 스타일 (글자색, 밑줄, 손모양의 커서) / 브라우저 내에서 바로 전환

    href = h + ref : h : hypertext, ref : reference
    -->
    <!-- 링크 target 값의 종류 -->
    <p>
        <!--target 값을 지정하지 않으면 _self와 같음 -->
        <a href="https://www.naver.com">네이버(none)</a>
    </p>

    <p>
        <!-- 현재 페이지에서 바로 페이지로 이동 -->
        <a href="https://www.daum.net" target="_self">다음(_self)</a>
    </p>

    <p>
        <!-- 현재 페이지는 그대로 두고 새로운 브라우저 창이나 탭을 열어 이동 -->
        <a href ="https://www.starbucks.co.kr/" target="_blank">스타벅스(_blank)</a>
    </p>

</body>


 

<body>
    <!-- 다양한 링크의 형태 -->
    <p>
        <!-- 같은 도메인이라도 http://와 https:// 의 홈페이지 주소가 다른 경우도 있음. 주의할 것
        -->
        <a href="https://www.naver.com">네이버</a>
    </p>

    <p>
        <!-- 같은 폴더 내의 html 페이지로의 이동 -->
        <a href="./04.html">메인페이지로</a>
    </p>

    <p>
        <!-- 아웃룩 메일 계정으로 연결할 때 -->
        <a href="mailto:webmaster@koreaedugroup.com">관리자</a>
    </p>

    <p>
        <!-- 빈 링크 또는 임시 링크로 표시 -->
        <a href="#">임시링크</a>
    </p>

    <!-- 빈 링크의 경우 문서의 탑으로 이동하는 성격이 있음 -->
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <a href="#">임시링크</a><br>
    <a href="#none">임시링크 2</a>

</body>

 


 📍 링크 속성 변경

<style>
    a { /* 태그를 먼저 선택 후 속성명과 속성을 입력 */
        text-decoration: none; /* 텍스트 꾸미기 : 밑줄 사용 안함 */
        color: black; /* 텍스트의 색상을 검정색으로 */
    }
</style>

 

 

[ 내용 참고 : IT 학원 강의 및 책 'Do it 한권으로 끝내는 웹 기본 교과서']

+ Recent posts