본문 바로가기

HTML & CSS

[211019~20] CSS 텍스트 & 색상 & 레이아웃 스타일

기본 속성

 

▶ CSS의 단위 구성

구 분  단위 내용
상대 크기 em 부모 요소의 크기가 기준 (상대 크기)
배수를 의미, 1배=1em=100%, 
1.5배= 1.5em=150%와 같음
rem 최상위의 부모 요소(브라우저)의 크기 기준으로 배수
% 기본 설정된 크기에서 상대적으로 크기 설정
초기설정 100%
절대 크기 px 기본 지정된 크기
pt

 

css 단위 구성

 

 

텍스트 스타일

▶ 글꼴 속성


▷ font-family

폰트의 글꼴을 설정해주는 속성으로 글꼴1이 없으면 글꼴2, 글꼴3으로 선택되어 설정됨, 다 없으면 브라우저 기본 글꼴 적용

사용자가 사용하는 운영체제마다 설치된 글꼴의 종류가 다양하기 때문에 지원하지 않는 글꼴이 있는 경우 다음 글꼴로 브라우저 화면에 표시하기 위해 사용

선택자{font-family: 글꼴1[, 글꼴2, 글꼴3];}

▷ font-size

글자의 크기를 조절하는 속성으로 em, px, pt 단위가 있음

선택자{font-size: 숫자단위;}

▷ font-weight

글자 굵기를 조절하는 속성
normal  기본
bold 굵게
bolder 기본보다 더 굵게
lighter 기본보다 더 가늘게
100~900 400이 normal, 700이 bold에 해당, 세밀한 조절 가능

▷ font-variant

영어를 작은 대문자로 표시해주는 속성

선택자{font-variant: normal or small-caps;}

▷ font-style

글자를 이텔릭체로 표시하는 속성

선택자{font-style: normal or italic or oblique;}
* italic : 처음부터 기울어진 글자가 존재
* oblique : 기본 글자를 기울여서 표시 (이탤릭체 지원 안 하는경우 강제로 기울여 줌)

▷ font

글꼴 속성을 모아서 표현할 수 있는 스타일 속성

속성 값이 기본 값인 하위 속성 값은 생략할 수 있지만 font-size 속성과 font-family 속성 값은 반드시 작성해야 합니다.

font: font-style font-variant font-weight font-size/line-height font-family

글꼴 속성 예시

[example3.html]

<!DOCTYPE
html>

<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>CSS 속성</title>
    <link type="text/css" rel="stylesheet" href="/static/css/ch03_3.css">
</head>
<body>
    <h2>글꼴 종류</h2>
    <div class="fnt-1">
        font-family 속성을 사용한 예
    </div>
    <div class="fnt-2">
        font-size 속성을 사용한 예
    </div>
    <div class="fnt-3">
        font-weight 속성을 사용한 예
    </div>
    <div class="fnt-4">
        font-variant 속성을 사용한 예
    </div>
    <div class="fnt-5">
        font-style 속성을 사용한 예
    </div>
    <div class="fnt-6">
        font 속성을 사용한 예 <!-- 모든 font 설정 한번에 지정 -->
    </div>
</body>
</html>
[ch03_3.css]

div.fnt-1
{

    font-family: '맑은 고딕', Courier, monospace;
}
div.fnt-2 {
    font-size: 24px;
}
div.fnt-3 {
    font-weight: lighter;
}
div.fnt-4 {
    font-variant: small-caps;
}
div.fnt-5 {
    font-style: italic;
}
div.fnt-6 {
    /*style variant weight size family*/
    font: italic small-caps bold 24px '맑은 고딕', Courier;
}

글꼴 속성 예시

 

 

▶ 텍스트 스타일

 

▷ color

글자 색을 정하는 속성

선택자{color: 색상;}
* 색 지정 방법 : rgb(000, 000, 000) / red / #ff0000

▷ text-decoration

글자에 밑줄이나 취소선, 윗 선을 긋거나 밑줄을 표시하지 않는 속성
none 밑줄 삭제
underline 밑줄 표시
overline 윗줄 표시
line-through 취소선 표시

▷ text-transform

영문자를 표시할 때 대소문자를 원하는 대로 바꿀 수 있는 속성
none 변환 없이 표시
capitalize 시작하는 첫 번째 글자를 대문자로 변환
uppercase 모든 글자를 대문자로 변환
lowercase 모든 글자를 소문자로 변환

▷ text-shadow

텍스트에 그림자 효과를 주는 속성

선택자{text-shadow: none or 가로 세로 번짐 색상;}
* 인자(가로, 세로, 번짐, 색상)를 여러 개 사용할 때 “,“로 구분하여 그림자로 활용 가능

▷ white-space

공백을 처리해주는 속성

선택자{white-space: normal or nowrap or pre or pre-line or pre-wrap}
normal 여러 개의 공백을 하나로 표시
nowrap 여러 개의 공백을 하나로 표시, 줄 바꾸지 않고 한 줄 표시
pre 여러 개의 공백을 그대로 표시
pre-line 여러 개의 공백을 하나로 표시, 영역 넘어가면 자동 줄 바꿈
pre-wrap 여러 개의 공백을 그대로 표시, 영역 넘어가면 자동 줄바꿈

▷ letter-spacing

낱개 글자의 간격을 조정하는 속성

선택자{letter-spacing: 숫자(단위);}

▷ word-spacing

단어와 단어 사이 간격을 조정하는 속성

선택자{word-spacing: 숫자(단위);}

 

텍스트 스타일 예시

[example3.html]
 
 
<h2>텍스트 관련 스타일 종류</h2>

    <div class="txt-1">
        color 속성을 사용한 예
    </div>
    <div class="txt-2">
        text-decoration 속성을 사용한 예
    </div>
    <div class="txt-3">
        text-transform 속성을 사용한 예
    </div>
    <div class="txt-4">
        text-shadow 속성을 사용한 예
    </div>
    <div class="txt-5">
        white-space             속성을       사용한 예 입니다.
        관련 속성값 :
          normal    여러 개의 공백을 하나로, 자동줄바꿈 o
        , norap     여러 개의 공백을 하나로, 자동줄바꿈 x
        , pre       여러 개의 공백을 그대로 자동줄바꿈 x
        , pre-line  여러 개의 공백을 하나로, 자동줄바꿈 o
        , pre-wrap  여러 개의 공백을 그대로, 자동줄바꿈 o
    </div>
    <div class="txt-6">
        letter-spacing 속성을 사용한 예(자간)
    </div>
    <div class="txt-7">
        word-spacing 속성을 사용한 예(단어간)
    </div>
[ch03_3.css]

div.txt-1
{

    /*
    색은 고유명사 또는
    RGB 코드(붉은색, 초록색, 파란색 : 00 ~ FF)
    rgb() 함수로 표현할 수 있다.
     */
    color: rgb(255,0,0);
}
div.txt-2 {
    /* text-decoration: underline; */
    /* text-decoration: overline; */
    text-decoration: line-through;
}
div.txt-3 {
    /* text-transform: capitalize; */
    /* text-transform: uppercase; */
    text-transform: lowercase;
}
div.txt-4 { /*가로, 세로, 번짐*/
    /* text-shadow: 5px 5px 2px gray; */
    text-shadow: 5px 5px 1px gray, 5px 5px 2px red;
}
div.txt-5 {
    /* white-space: normal; */
    /* white-space: nowrap; */
    white-space: pre;
    /* white-space: pre-line; */
    /* white-space: pre-wrap; */
}
div.txt-6 {
    letter-spacing: 16px;
}
div.txt-7 {
    word-spacing: 32px;
}

example3

 

 

문단 스타일

 

▷ direction

글자 쓰기 방향 지정

선택자{direction: ltr or rtl;}
ltr 왼쪽에서 오른쪽으로 텍스트 표시
rtl 오른쪽에서 왼쪽으로 텍스트 표시

 

▷ text-align

문자 위치 조정(정렬) 속성

선택자{text-align: left or right or center or justify;}
left 왼쪽 정렬
right 오른쪽 정렬
center 가운데 정렬
justify 양쪽 정렬

▷ text-indent

문장을 들여쓰기 하는 속성

선택자{text-indent: 숫자(단위);}

▷ line-height

문장끼리의 줄 간격을 조정하는 속성

선택자{line-height: normal or 숫자(단위);}

▷ text-overflow

영역을 벗어나는 텍스트 표시 속성

선택자{text-overflow: clip or ellipsis;}
clip 영역을 넘어가는 텍스트를 자름
ellipsis 말 줄임으로 잘린 텍스트 표현

 

문단 스타일 예시

[example3.html]

   
<h2>문단 스타일</h2>

    <div>
        <p class="para-1-ltr">
            direction 속성(ltr)을 사용한 예.
        </p>
    </div>
    <div>
        <p class="para-1-rtl">
            direction 속성(rtl)을 사용한 예.
        </p>
    </div>
    <div>
        <p class="para-2">
            text-align 속성을 사용한 예<br>
            Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
        </p>
    </div>
    <div>
        <p class="para-3">
            text-indent 속성을 사용한 예
        </p>
    </div>
    <div>
        <p class="para-4">
        line-height 속성을 사용한 예, 줄 간격을 위해 사용하는 속성으로 여러 줄이 있는 요소에 대해 확인바람.
    </div>
    <div>
        <p class="para-5">
        text-overflow 속성을 사용한 예, 영역을 벗어날만큼 많은 내용이 작성된 경우
    </div>
[ch03_3.css]

p.para-1-ltr
{

    direction: ltr; /*왼쪽부터 글자 써나가기*/
}
p.para-1-rtl {
    direction: rtl; /*오른쪽부터 글자 써나가기*/
}
p.para-2 {
    text-align: justify;
}
p.para-3 {
    text-indent: 8em;
}
p.para-4 {
    line-height: 2.4; /*em 생략*/
}
p.para-5 {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

example3

 

 

목록 스타일


▷ list-style-type

목록 기호의 스타일을 지정하는 속성
ul disc 흑색 원형
circle 흰색 원형
square 흑색 사각형
none 기호 표시 안 함
ol decimal 1로 시작하는 십진수
decimal-leading-zero 앞에 0이 붙은 십진수
lower-roman/upper-roman 소문자/대문자 로마자
lower-alpha/lower-latin 소문자 알파벳
upper-alpha/upper-latin 대문자 알파벳

▷ list-style-image

기호 대신 이미지 삽입

선택자{list-style-image: url(이미지 경로);}

▷ list-style-position

목록 기호 들여쓰기

선택자{list-style-position: inside or outside;}
inside 블릿이나 숫자를 안쪽으로 들여씀
outside default, 블릿이나 숫자를 밖으로 내어 씀

▷ list-style

목록 스타일 한 번에 지정하는 속성

선택자{list-style: type값 position값 image값;}
[example3.html]

    <div>
        <p>list-style-type 속성을 사용한 예</p>
        <ul class="lst-1">
            <li>목록 1</li>
            <li>목록 2</li>
            <li>목록 3</li>
        </ul>
    </div>
    <div>
        <p>list-style-image 속성을 사용한 예</p>
        <ul class="lst-2">
            <li>image</li>
            <li>등록하여</li>
            <li>불릿으로 사용</li>
        </ul>
    </div>
    <div>
        <p>list-style-position 속성을 사용한 예</p>
        <ul class="lst-3">
            <li>list-style-position은 불릿의 위치를 글자 내부로 배치하거나 글자 외부로 배치를 하는 속성이다.</li>
            <li></li>
        </ul>
    </div>
    <div>
        <p>list-style 속성을 사용한 예</p>
        <ul class="lst-4">
            <li>list-style</li>
        </ul>
    </div>
[ch03_3.css]

ul.lst-1 {
    list-style-type: none;
}
ul.lst-2 {
    list-style-image: url(/static/img/list-img2.gif);
}
ul.lst-3 {
    list-style-position: inside;
}
ul.lst-4 {
    /* type position image 순서 (글꼴의 font와 유사한 기능)*/
    list-style: square inside url(/static/img/list-img.gif);
    /*불릿타입, 이미지 동시지정 : 이미지 없다면 지정한 square 타입으로 나옴*/
}


example3

 


 

색상 스타일

 

 

구분 내용 표현 방법
영문 색 이름 영문으로 색 이름 작성 red, black, blue 등
16진수 표현  rgb값을 기준으로
16진수로 작성
#16진수 3자리
ex. #ff0000 (빨간색)
rgb/rgba rgb값을 0~255로 입력, 
rbga는 투명도 표현 가능
rgb(0~255, 0~255, 0~255)
ex. rgb(255, 0, 0)
rgb(0~255, 0~255, 0~255, 0~1) 
투명도 : 1 = 불투명 / 0=투명
hsl/hsla 색상, 채도, 밝기로
색 입력
hsl(색상 값, 채도 값(%), 명도 값(%))
hsla(색상 값, 채도 값(%), 명도 값(%), 
투명도)

 

 

배경 스타일

 

▶ 배경 색
▷ background-color

배경색을 지정하는 속성

선택자{background-color: 색상표현;}

▷ background-clip

배경 범위 조절

선택자{background-clip: 속성 값;}
border-box 박스 모델의 가장 외곽인 테
border-box  박스 모델의 가장 외곽인 테두리까지 적용
padding-box  테두리 제외한 패딩 범위까지 적용
content-box  내용부문만 적용

 

박스모델

margin : 외곽 여백 

padding : 내부 여백

기준 : 테두리(border)

 

 

 background-image

배경에 이미지 설정

선택자{background-image: url(경로);}


▷ background-repeat

배경 이미지 반복 출력 설정

선택자{background-repeat: 속성 값;}
repeat 브라우저에 가득 찰 때까지 가로/세로 반복
repeat-x/repeat-y 넓이/높이만큼 반복
no-repeat 이미지 한 번만 출력

▷ background-size

배경 이미지 크기를 조절하는 속성

선택자{background-size: 속성 값;}
auto 원래 배경 이미지 크기만큼 표시
contain 요소 안으로 이미지가 들어갈 수 있게 확대/축소
cover 요소 범위를 이미지가 덮을 수 있도록 확대/축소
크기 값(px)/백분율 수치화된 값으로 표현(가로, 세로)

▷ background-position

left/center/right 수평 위치 
top/center/bottom 수직 위치 
크기 값(px)/백분율 수치화된 값으로 표현(가로, 세로) 왼쪽 모서리 좌표

▷ background-origin

배경 이미지 배치할 때 기준을 지정하는 속성

선택자{background-origin: 속성 값;}
border-box 테두리 기준
padding-box 테두리를 뺀 패딩이 기준
content-box 내용 부분이 기준

▷ background-attachment

웹 페이지가 위아래로 움직여도 배경은 움직이지 않게 고정하는 속성

local도 있음.

선택자{background-attachment: 속성 값;}
scroll default, 배경 이미지가 움직이게 설정
fixed 배경 이미지가 움직이지 않게 설정

▷ background

배경 이미지 한 번에 설정하는 속성

선택자{background: image값 repeat값 attachment값 position값 clip값 origin값 size값;}

 

배경 스타일 예시

[example3.html]

   
<h2>배경 스타일</h2>

    <div class="bg-1">
        background-color 속성을 사용한 예
    </div>
    <div class="bg-2">
        background-clip 속성을 사용한 예
    </div>
    <div class="bg-3">
        background-image, background-repeat, background-size
        , background-position, background-origin, background-attachment
        속성을 사용한 예
    </div>
[ch03_3.css]

div.bg-1
{

    background-color: darkcyan;
    color: white;
}
div.bg-2 {
    background-color: darkgoldenrod;
    color: white;
    background-clip: padding-box;
    margin: 24px;   padding: 24px;
    border: 10px solid rgba(0, 0, 0, 0.26);

}
div.bg-3{
    height: 350px;
    margin: 24px; padding: 24px;
    border: 24px solid #ffffff00;
    background-image: url(/static/img/bg-img.png);
    background-repeat: no-repeat;
    background-size: auto;
    background-position: top;
    background-origin: border-box;
    background-attachment: scroll;
}

 


 

레이아웃 스타일

 

기본 스타일

▶ height/width

콘텐츠(내용)가 차지하고 있는 영역의 크기를 조절할 수 있는 속성

* 상대 크기 단위를 입력하면 창 크기에 따라 변경되지만
  절대 크기 단위를 입력하면 창 크기에 따른 변화가 없음
* height/width속성은 실제 콘텐츠 영역만의 길이를 의미하지만
  IE6버전에서는 padding, margin을 더한 값으로 인식하여 계산 유의
  실제크기 : (height/width)+padding+margin

선택자{width: 숫자(단위) or auto(default); 
          height: 숫자(단위) or auto(default);}

▶ 블록/인라인 레벨 요소
▷ 블록 레벨 요소

한 줄 전체 차지하는 요소로 박스 모델이라고도 함
한 줄에 여러 요소가 올 수 없는 요소

<div>, <p>, <hn>, <ul>, <ol>, <blockquote>, <form>, <hr>, <table>, <fieldset>, <address>


▷ 인라인 레벨 요소

한 줄에서 일부분만 차지하는 요소
한 줄에 여러 요소가 올 수 있는 요소

<img>, <object>, <br>, <sub>, <sup>, <span>, <input>, <textarea>, <label>, <button>

 

▶ display

화면 배치 방법 변경 속성
박스 레벨과 인라인 레벨 요소를 변경 가능하게 해줌

선택자{display: 속성 값;}
none 화면에서 표현되지 않고 공간도 차지하지 않음
block block레벨 요소로 변경, inline을 block처럼 배치 가능
inline inline레벨 요소로 변경, block을 inline처럼 배치 가능
inline-block inline레벨이면서 content에는 block에 대한 속성 지정
inline은 margin, height, width설정이 제대로 설정되지 않음

 

레이아웃 스타일 예시

[example3.html]

   
<h2>레이아웃 스타일</h2>

    <div class="lay-1">
        width, height 속성을 사용한 예
        <div class="lay-2">
            lay-1(상위요소)에 대한 상대 크기로 설정
        </div>
    </div>
    <div class="lay-3">
        display 속성을 사용한 예
        <div class="lay-3-inline">
            블럭레벨 요소를
        </div>
        <div class="lay-3-inline">
            inline 속성으로 변경
        </div>
        <div class="lay-3-inline">
            하여 나타낸 결과
        </div>
        <span class="lay-3-block">
            인라인 레벨 요소(span)를
        </span>
        <span class="lay-3-block">
            block 속성으로 변경
        </span>
        <span class="lay-3-block">
            하여 나타낸 결과
        </span>
        <div class="lay-3-inline-block">
            인라인/블럭레벨 요소를
        </div>
        <div class="lay-3-inline-block">
            inline-block 속성으로 변경
        </div>
        <div class="lay-3-inline-block">
            하여 나타낸 결과
        </div>
    </div>
[ch03_3.css]

div.lay-1 {
    width: 300px;
    height: 300px;
    background-color: darksalmon;
}
div.lay-2 {
    width: auto;
    height: 50%;
    background-color: darkseagreen;
}
div.lay-3 {
    background-color: darkseagreen;
}
div.lay-3-inline {
    background-color: floralwhite;
    /* inline : 필요한만큼만 범위 지정이 됨,
    마진의 경우 위 아래 마진은 적용이 안 됨! */
    display: inline;
    padding: 8px;
    margin: 8px;
    border: 1px solid black;
}
span.lay-3-block {
    background-color: coral;
    display: block;
    padding: 8px;
    margin: 8px;
    border: 1px solid black;
}
div.lay-3-inline-block {
    background-color: cornflowerblue;
    /* 인라인모델처럼 적용 + 블럭모델처럼 박스모델(margin top, bottom) 정상 적용 */
    display: inline-block;
    padding: 8px;
    margin: 8px;
    border: 1px solid black;
}

example3

 

테두리 스타일

 

▶ 테두리


▷ border-style

none 테두리가 나타나지 않음 default값
hidden 테두리가 나타나지 않음
dashed 짧은(dotted보다 길은 점선) 선으로 표시 
dotted 점선으로 표시
double 이중 선으로 표시
groove 홈이 파인 것처럼 테두리를 창에 조각한 것처럼 표시
inset border-collapse설정에 따라 groove와 같거나(collapse)
테두리가 창에 박혀 있는 표시(separate)
outset border-collapse설정에 따라 ridge와 같거나(collapse)
전체 박스 테두리가 창에서 튀어 나온 것처럼 표시(separate)
ridge 테두리가 튀어나온 것처럼 표시
solid 테두리를 실선으로 표시

 

▷ border-width

테두리의 두께를 정하는 속성

선택자{border[-위치]-width: 숫자(단위) or 속성 값;}
구분 내용 비고
속성 값 thin 얇게 위치를 설정하지 않고
전체 테두리 작성 시
시계 방향(위-우-아래좌)으로
각 위치 별
설정 가능
medium 중간
thick 두껍게
숫자  두께 정도 표시
위치  top, right, left, bottom

 

▷ border-color

테두리의 색상을 정하는 속성

* 각 테두리 별 설정하려면 위치(top, right, bottom, left)에 값을 넣고
전체를 한 번에 설정하려면 “border-color: 색상 값“ 이용

선택자{border[-위치]-color: 색상 값;}

 

▷ border

테두리 두께, 스타일, 색상을 한 번에 지정할 수 있는 속성

* 각 테두리 별 설정하려면 위치(top, right, bottom, left) 이용

선택자{border[-위치]: 두께 스타일 색상값;}

▷ border-radius

박스의 모서리를 둥글게 하는 속성
위치 : top-left, top-right, bottom-left, bottom-right

* 각 테두리 변에서부터 설정한 값만큼의 반지름을 가지는 원이 모서리에 그려지고
그 외곽부분이 그 원을 따라 둥글게 변하게 됨

선택자{border[-위치]-radius: 숫자(단위);}
선택자{border[-위치][-위치]-radius: 숫자 숫자(단위);}          : 비대칭 원 그리기

▶ 그림자
▷ box-shadow

박스 영역에 그림자 효과를 주는 속성

* 설정 값은 숫자(단위)표시
수평 거리 + : 오른쪽, - : 왼쪽 / 수직거리 + : 아래, - : 위
흐림 정도 : 값이 커지면 부드러운 느낌을 주며 음수 사용 불가
번짐 정도 : 양수로 하면 모든 방향으로 번져 커지고 음수로 하면 축소 됨
inset : 안쪽 그림자로 그리는 옵션, 필요 시 사용

선택자{box-shadow: 수평거리 수직거리 흐림정도 번짐정도
         색상 [inset];}

 

테두리 스타일 예시

[example3.html]

   
<h2>테두리 스타일</h2>

    <div class="brd-1">
        border 관련 스타일
    </div>
    <div class="brd-2">
        border 관련 스타일
    </div>
    <div class="brd-3">
        border 관련 스타일
    </div>
    <div class="box-1">
        box-shadow 속성
    </div>
    <div class="box-2">
        box-shadow 속성
    </div>


[ch03_3.css]

div.brd-1
{

    width: 150px;
    height: 150px;
    /* top rigth bottom left */
    border-style: solid dashed dotted double;
    border-width: 1px 2px 3px 4px;
    /* border-bottom-width: 1px; */
    border-color: red blue green purple;
}
div.brd-2 {
    width: 150px;
    height: 150px;
    margin-top: 8px;
    border-style: solid;
    /* top/bottom : 1px  right/left : 0 쌍으로 지정*/
    border-width: 1px 0;
}
div.brd-3 {
    width: 150px;
    height: 150px;
    margin-top: 8px;
    border-radius: 50%;
    background-color: crimson;
}
div.box-1 {
    margin-top: 12px;
    width: 150px;
    height: 150px;
    box-shadow: 5px 5px 6px 2px gray;
}
div.box-2 {
    margin-top: 12px;
    width: 150px;
    height: 150px;
    /*inset 안쪽그림자. 음수값 사용하면 빛비치는 방향이 반대(역행하는 x축 방향 y축 방향)*/
    box-shadow: -5px -5px 6px 2px black inset;
}

 

[2021.10.20]

 

cf. 박스모델 설정 (box-sizing)

<h2>박스 모델 설정</h2>
    <div>
        <div class="box-1">
            width, height 영역의 구성을 변경하는 속성<br>
            기본 설정 : 너비와 높이는 컨텐츠 영역의 크기로 설정된다.
        </div>
        <div class="box-2">
            width, height 영역의 구성을 변경하는 속성<br>
            box-sizing : 너비와 높이의 설정 영역을 변경하는 속성
        </div>
    </div>





.box-1 {
    background-color: beige;
    width: 200px;
    height: 200px;
    padding: 24px;
    box-sizing: content-box;
}
.box-2 {
    background-color: bisque;
    width: 200px;
    height: 200px;
    padding: 24px;
    box-sizing: border-box;
}

border-box : content의 크기를 padding과 border값까지 포함해서 200/200으로 설정한다.  

 

여백 스타일

 

▶ padding과 margin

 

▷ padding

 padding
테두리와 콘텐츠 영역 사이의 거리를 조절하는 속성

선택자{padding[-위치]: 숫자(단위);}

▷ margin

box레벨이나 inline레벨의 요소들간의 간격을 조절하는 속성

선택자{margin[-위치]: 숫자(단위);}

 

포지셔닝

 

box모델, inline모델을 페이지 상에서 배치하는 스타일
즉, 페이지 안 요소들을 원하는 위치에 배치하는 속성 의미
position 속성, float 속성이 있음

 

▶ 요소 배치
▷ position

페이지의 요소를 자유롭게 배치해주는 속성 top, left, right, bottom으로 위치 지정

선택자{position: 속성 값; [top: 숫자(단위);] 
         [left: 숫자(단위);] [right: 숫자(단위);] [bottom: 숫자(단위);]}
static 요소를 문서의 흐름에 맞춰 배치(default)
relative 이전 요소와 자연스럽게 연결해 배치, 위치 지정 가능
absolute 원하는 위치를 지정해 배치
* 부모/조상 요소의 position속성이 반드시 relative
fixed 지정한 위치에 고정 배치

▷ visibility

페이지에 특정 속성을 보이거나 보이지 않게 하는 속성

선택자{visiblility: 속성 값;}
visible default, 요소가 화면에 보임
hidden 요소를 화면에 안 보이게 하지만 페이지 공간은 차지
collapse 표의 행, 열, 행 그룹, 열 그룹 등에서 지정하면 서로
겹치도록 조절, 이외 영역에서는 hidden으로 처리

▷ z-index

페이지의 요소들을 순서대로 위에 쌓는 속성
속성 값이 크면 가장 위에 있는 요소, 작으면 밑에 있는 요소

* 요소가 항상 맨 위에 위치해야 하면 값을 999 또는 1000 등 큰 값으로 설정

선택자{z-index: 속성 값;}

▷ float

페이지 내 요소의 위치를 왼쪽이나 오른쪽으로 지정하는 속성

선택자{float: 속성 값;}
right 오른쪽 배치
left 왼쪽 배치
none 설정하지 않음

▷ clear

페이지에 float설정이 되어 있으면 그 속성이 그대로 그 다음 요소에 영향을 미치는데 
이를 초기화시키는 속성

선택자{clear: 속성 값;}
right 오른쪽 배치 취소
left 왼쪽 배치 취소
none 설정하지 않음, 앞에 내용 그대로 적용
both 두 개 다 취소

 

다단 스타일

▷ column-width

단의 너비 고정하고 다단 구성 * 너비를 기준으로 다단 개수를 나눔

선택자{
          -접두사-column-width: 숫자(단위) or auto;
           column-width: 숫자(단위) or auto;
 }

▷ column-count

단의 개수를 지정하여 다단을 나눔

선택자{
          -접두사-column-count: 숫자(단위) or auto;
          column-count: 숫자(단위) or auto;
 }

▷ column-gap

다단 사이의 여백 설정

선택자{
          -접두사-column-gap: 숫자(단위) or normal;
          column-gap: 숫자(단위) or normal;
 }

▷ column-rule

다단 사이의 효과를 주는 속성
column-rule-color default, 요소가 화면에 보임
색상 값
column-rule-style 다단 사이의 선 효과 지정
none, hidden, dotted, dashed, solid, double, 
groove, ridge, inset, outset
column-rule-width 너비를 지정하는 속성
숫자(단위) or thin, medium, thick
column-rule 효과를 한 번에 설정하는 속성
너비 스타일 색상

▷ column-span

단을 합치는 속성

선택자{column-span: 속성 값;}
1 default, 합치지 않은 것과 동일
all 전체를 합치는 것과 같음

 

 

표 스타일

▷ caption-side

테이블 캡션에 대한 위치를 지정하는 속성

선택자{caption-side: top or bottom;}

▷ width/height

표 높이와 너비를 지정하는 속성으로
테이블에 지정하면 테이블의 전체 크기, 
<td>에 지정하면 컬럼의 너비/높이 표시

선택자{height: 숫자(단위); width: 숫자(단위);}

▷ border

표의 테두리 스타일을 지정하는 속성 * 테두리 스타일 border속성 참고

선택자{border: width style color;}

▷ border-collapse

테두리 스타일을 변경하는 속성으로 표 테두리를 두 개로 표시할 지 한 개로 표시할 지 결정

선택자{border-collapse: 속성 값;}
separate 테두리를 따로 표시(두 개로 표시)
collapse 테두리를 합쳐서 표시(한 개로 표시)

▷ border-spacing

테두리를 두 개로 표현했을 때(separate) 가까운 쪽의 테두리 사이 거리 지정 속성

선택자{border-spacing: 가로 세로;}

▷ empty-cells

테두리 스타일 두 개로 표시할 때(separate) 빈 셀에 대해 표시할 지
하지 않을 지 결정하는 속성

선택자{empty-cells: 속성 값;}
show default, 빈 셀 표시
hide 표시하지 않음

▷ table-layout

<td>의 너비를 width로 지정해도 셀의 내용이 길어지면 자동으로
길어지고 table의 width 지정 값에 따라 안의 셀들이 조절되는데
<td>의 크기를 width로 고정하는 속성

선택자{table-layout: fixed or auto;}

* 속성 값 auto는 default 값이며, fixed로 <td>를 고정한 상태에서
<td> 안의 내용이 넘어가면 <td>를 벗어나 작성이 됨
이를 <td> 안에 작성되게 하려면 word-break: break-all;을 추가하고
너비가 고정되면 작성 내용 길이에 따라 변경될 수 없으므로 자동으로 늘어날 수 있게
height 값을 auto로 정해 줌 height: auto;

▷ text-align

<td>안의 텍스트를 수평으로 정렬하는 속성

선택자{text-align: left | center | right;}

 

▷ vertical-align

<td>안의 텍스트를 수직으로 정렬하는 속성

선택자{vertical-align: top | bottom | middle;}

 

예시

[example4.html]

<!DOCTYPE
html>

<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>CSS</title>
    <link type="text/css" rel="stylesheet" href="/static/css/ch03_4.css">
</head>
<body>
    <h1 class="pos-5">포지셔닝 관련 속성들</h1>
    <h2>박스 모델 설정</h2>
    <div>
        <div class="box-1">
            width, height 영역의 구성을 변경하는 속성<br>
            기본 설정 : 너비와 높이는 컨텐츠 영역의 크기로 설정된다.
        </div>
        <div class="box-2">
            width, height 영역의 구성을 변경하는 속성<br>
            box-sizing : 너비와 높이의 설정 영역을 변경하는 속성
        </div>
    </div>
    <h2>포지션 설정</h2>
    <div>
        요소의 배치를 설정하기 위해 사용하는 속성
        <div class="pos-1">
            static 속성값 : 기본값으로 요소를 문서의 기존 흐름에 맞추어 배치하는 속성값
        </div>
        <div class="pos-2">
            relative 속성값 : static처럼 문서의 기존 흐름에 맞추어 배치하면서 자신을 기준으로 요소의 배치를 구성할 수 있게 하는 속성값
            (top,left,right,bottom 속성 사용가능)
        </div>
        <div class="pos-3">
            absolute 속성값 : 문서의 기존 흐름을 사용하지 않고 페이지 레이아웃에 대한 공간도 배정하지 않는다. 대신 가장 가까운 위치 지정 조상 요소에 대해 상대적으로 배치한다. 조상 중 위치지정 요소가 없으면 초기 컨테이너 블록(body)를 기준으로 삼는다.
            (top,left,right,bottom 속성 사용가능)
        </div>
        <div class="pos-4">
            fixed 속성값 : 문서의 기존 흐름을사용하지 않음, 페이지 레이아웃에 공간도 배정하지 않음, 뷰 포트(브라우저 화면)를 기준으로 삼는다.
            (top,left,right,bottom 속성 사용가능)
        </div>
    </div>
    <div>
        <table border="1">
            <colgroup>
                <col>
                <col class="cell-hidden">
                <col>
            </colgroup>
            <tr>
                <td>1111</td>
                <td class="cell-hidden">2222</td>
                <td>3333</td>
            </tr>
            <tr class="cell-hidden">
                <td>1111</td>
                <td>2222</td>
                <td>3333</td>
            </tr>
            <tr>
                <td>4444</td>
                <td>5555</td>
                <td>6666</td>
            </tr>
        </table>
    </div>
    <div class="pos-2">
        요소를 3차원 좌표상에서 배치 가능하도록 만들어주는 설정
        <div class="z-idx1"></div>
        <div class="z-idx2"></div>
        <div class="z-idx3"></div>
    </div>
    <div style="margin-top: 200px; width: 150px;">
        <div class="flt-1"></div>
        float 속성은 페이지 내 요소 배치의 기존 흐름을 빠져나와
        요소의 위치를 왼쪽 또는 오른쪽으로 배치하기 위해 사용하는 속성
    </div>
    <div class="lay-1">
        <div class="header"></div>
        <div class="main">
            <div class="flt-3"></div>
            <div class="flt-4"></div>
            <div style="clear: both;">...</div> <!--float 영향 벗어나기[1020.19:07]-->
        </div>
        <div class="footer"></div>
    </div>
    <h2>다단 스타일</h2>
    <div class="column-1">
        <h2 class="column-2">Lorem Ipsum</h2>
        is simply dummy text of the printing and typesetting industry.
        Lorem Ipsum has been the industry's standard dummy text ever since
        the 1500s, when an unknown printer took a galley of type and scrambled
        it to make a type specimen book. It has survived not only five centuries,
        but also the leap into electronic typesetting, remaining essentially
        unchanged. It was popularised in the 1960s with the release of Letraset
        sheets containing Lorem Ipsum passages, and more recently with desktop
        publishing software like Aldus PageMaker including versions of Lorem Ipsum.
    </div>
    <h2>테이블 스타일</h2>
    <table class="tbl-1">
        <colgroup>
            <col class="cell-100">
            <col>
            <col>
        </colgroup>
        <caption style="text-align: left;">표 제목</caption>
        <tr>
            <td>111111111111</td>
            <td></td>
            <td>3333</td>
        </tr>
        <tr>
            <td>1111</td>
            <td>2222</td>
            <td>3333</td>
        </tr>
        <tr>
            <td>1111</td>
            <td></td>
            <td>3333</td>
        </tr>
    </table>
</body>
</html>
[ch03_4.css]

div
{

    margin-top: 12px;
}

.box-1 {
    background-color: beige;
    width: 200px;
    height: 200px;
    padding: 24px;
    box-sizing: content-box;
}
.box-2 {
    background-color: bisque;
    width: 200px;
    height: 200px;
    padding: 24px;
    box-sizing: border-box;
}

.pos-1 {
    width: 200px;
    background-color: cadetblue;
    padding: 12px;
    position: static;
    /* left: 24px;  반응 없음, static은 배치가 안 됨*/
}
.pos-2 {
    width: 200px;
    background-color: chocolate;
    padding: 12px;
    position: relative;
    left: 24px;
}
.pos-3 {
    width: 200px;
    background-color: coral;
    padding: 12px;
    position: absolute;
    /* top: 0; */
    left: 48px;
    /*visibility: hidden; 영역은 차지하나 보이지 않음*/
    /*display: none; 영역차지도 하지 않겠다.*/
    visibility: none;
}
.pos-4 {
    width: 200px;
    background-color: cornflowerblue;
    padding: 12px;
    position: fixed;
    top: 72px;
    right: 24px;
}
.pos-5 {
    position: sticky;
    top: 0;
}
table {
    width: 150px;
    position: relative;
    border-collapse: collapse;
    /*z 좌표 아래에 위치(음수) 위에 위치(양수), position이 static(default) 아니어야 함.*/
    z-index: 1;
    background-color: cornsilk;
}
.cell-hidden {
    visibility: collapse;
}

.z-idx1 {
    z-index: 1;
    width: 150px;
    height: 150px;
    background-color: lightblue;
    position: absolute;
    top: 0px;
    left: 0px;
}

.z-idx2 {
    z-index: 2;
    width: 150px;
    height: 150px;
    background-color: lightcoral;
    position: absolute;
    top: 50px;
    left: 50px;
}

.z-idx3 {
    z-index: 3;
    width: 150px;
    height: 150px;
    background-color: lightgoldenrodyellow;
    position: absolute;
    top: 100px;
    left: 100px;
}
.flt-1 {
    width: 50px;
    height: 50px;
    background-color: lightsalmon;
    float: left;
}
.lay-1 {
    width: 100%;
    height: 400px;
    margin: 0;
    background-color: linen;
}
.header {
    height: 100px;
    margin: 0;
    background-color: lightseagreen;
}
.main {
    background-color: azure;
    margin: 0;
    height: 250px;
}
.flt-3 {
    width: 150px;
    height: inherit;
    margin: 0;
    background-color: lightsteelblue;
    float: left;
}
.flt-4 {
    width: calc(100% - 150px);
    height: inherit;
    margin: 0;
    float: right;
    background-color: limegreen;
}
.footer {
    height: 50px;
    margin: 0;
    background-color: lightskyblue;
}

.column-1 {
    /* 한 단의 너비 */
    /* column-width: 150px; */
    column-count: 3;
    column-gap: 12px;
    /* column-rule-color: red;
    column-rule-style: solid;
    column-rule-width: 1px; */
    column-rule: 1px solid red;
    text-align: justify;
}
.column-2 {
    /*단 합쳐서 다단 속성 안 되게*/
    column-span: all;
}

.tbl-1 {
    caption-side: bottom;
    width: 100%;
    border: 1px solid black;
    border-collapse: separate;
    border-spacing: 10px;
    empty-cells: hide;
    table-layout: fixed;
}
.tbl-1 td {
    padding: 8px;
    border: 1px solid black;
    text-align: center;
    vertical-align: top;
    word-break: break-all;
}
.cell-100 {
    width: 100px;
}

결과 -> http://172.30.1.58/chap03/example4.html