6. margin, padding, border 속성 -바닥부터 시작하는 CSS-
block요소로 레이아웃을 만들 때
contents: block요소 안에 있는 내용.
border : block요소의 경계선.
padding : block요소 경계선(border)과 컨텐츠 사이의 간격을 말함.
margin : block요소 경계선 외부에 존재하는 보이지않는 공백을 말함.
width, height : block요소의 내부영역의 크기를 지정한다. 실제 박스의 크기는 다르다. 박스의 크기를 구할 때는
일반적으로 아래의 공식을 사용하지만 브라우저가 다 맞지는 않는다.
박스의 폭 = 좌우 마진 + 좌우 테두리 + 좌우 패딩 + width
박스의 높이 = 상하 마진 + 상하 테두리 + 상하 패딩 + height
IE 비표준 모드에서는 내부영역 + 패딩 + 마진 = width (또는 height)가 된다.
width와 height 속성만 지정한 예
예 6-1
- <html>
- <style>
- body {
- margin: 0;
- }
- .div1 {
- width: 100px;
- height: 100px;
- background: pink;
- text-align: center;
- }
- </style>
- <body>
- <div class="div1">div1</div>
- </body>
- </html>
border 속성을 지정한 예
예 6-2
- <html>
- <style>
- body {
- margin: 0;
- }
- .div1 {
- width: 100px;
- height: 100px;
- border: 5px solid;
- background: pink;
- text-align: center;
- }
- </style>
- <body>
- <div class="div1">div1</div>
- </body>
- </html>
margin 속성을 지정한 예
예 6-3
- <html>
- <style>
- body {
- margin: 0;
- }
- .div1 {
- width: 100px;
- height: 100px;
- border: 5px solid;
- margin: 10px;
- background: pink;
- text-align: center;
- }
- </style>
- <body>
- <div class="div1">div1</div>
- </body>
- </html>
padding 속성을 지정한 예
예 6-4
- <html>
- <style>
- body {
- margin: 0;
- }
- .div1 {
- width: 100px;
- height: 100px;
- border: 5px solid;
- margin: 10px;
- padding: 10px;
- background: pink;
- text-align: center;
- }
- </style>
- <body>
- <div class="div1">div1</div>
- </body>
- </html>
1. margin 속성
일괄 지정
margin:
값이 하나일 경우 : '상하좌우’
값이 두 개일 경우 : '상하' '좌우’
값이 세 개일 경우 : '상' '좌우' '하’
값이 네 개일 경우 : '상' '우' '하' '좌' (시계 방향으로 돌아가며 지정된다.)
각각의 값은 공백으로 구분한다.
부분 지정
margin-top:
margin-right:
margin-bottom:
margin-left:
px, pt, em, %, auto, inherit 등의 값이 올 수 있고 기본 값은 0 이다.(음수 값도 허용됨)
테이블의 내부요소를 제외한 모든 요소에 적용될 수 있다.
block요소에 width 값을 가로길이보다 작게 설정한 경우, 좌우margin 값에 'auto'를 지정하면 박스 자체가 화면의 가로 중앙에
정렬이 된다.(박스안의 내용이 중앙 정렬이 되는 것이 아님)
예 6-5
- <html>
- <style>
- body {
- margin: 0;
- }
- .div1 {
- width: 100px;
- height: 100px;
- border: 5px solid;
- margin: 0 auto;
- padding: 10px;
- background: pink;
- }
- </style>
- <body>
- <div class="div1">div1</div>
- </body>
- </html>
block요소의 세로 정렬은 배우 까다로운 문제이다. 무작정 상하 margin을 auto를 준다고 되는 것도 아니다.
이 문제는 다음 기회에 따로 설명하기로 한다.
2. padding 속성 (margin과 거의 같다고 봐라)
일괄 지정
padding:
값이 하나일 경우 : '상하좌우’
값이 두 개일 경우 : '상하' '좌우’
값이 세 개일 경우 : '상' '좌우' '하’
값이 네 개일 경우 : '상' '우' '하' '좌' (시계 방향으로 돌아가며 지정된다.)
각각의 값은 공백으로 구분한다.
개별 지정
padding-top:
padding-right:
padding-bottom:
padding-left:
px, pt, em, %, inherit 등의 값이 올 수 있고 기본 값은 0 이다.(margin과 달리 음수 값은 허용이 안 되고 auto 값은 없음)
테이블 관련 요소 중 셀 요소를 제외한 다른 요소에는 적용이 안 되고, 그 외의 요소에는 모두 적용된다.
예 6-6
- <html>
- <style>
- body {
- margin: 0;
- }
- .div1 {
- width: 100px;
- height: 100px;
- border: 1px solid;
- background: pink;
- }
- .div2 {
- width: 100px;
- height: 100px;
- border: 1px solid;
- padding: 10px;
- background: pink;
- }
- </style>
- <body>
- <div class="div1">padding 없는 div1</div>
- <div class="div2">padding 있는 div1</div>
- </body>
- </html>
box가 padding을 가지면 커져버린다.
글자(컨텐츠)와 경계선의 간격이 벌어진다.
3. border 속성
border 속성 값에는 다음과 같이 세 가지가 있고 모든 요소에 적용 가능하다.
border-width :
굵기 (thin, medium(기본 값), thick, 길이, inherit)
예 6-7
- <html>
- <style>
- body {
- margin: 0;
- }
- .div1 {
- width: 200px;
- border: thin solid;
- background: coral;
- }
- .div2 {
- width: 200px;
- border: medium solid;
- /*기본 값*/
- background: coral;
- }
- .div3 {
- width: 200px;
- border: thick solid;
- background: coral;
- }
- .div4 {
- width: 200px;
- border: 6px solid;
- background: coral;
- }
- </style>
- <body>
- <div class="div1">border: thin div1</div>
- </br>
- <div class="div2">border: medium div2</div>
- </br>
- <div class="div3">border: thick div3</div>
- </br>
- <div class="div4">border: 6px div4</div>
- </body>
- </html>
border-style :
모양 (none(기본 값), hidden, dotted, dashed, solid, double, groove, ridge, inset, outset, inherit 등)
예 6-8
- <html>
- <style>
- body {
- margin: 0;
- background: linen;
- }
- .div1 {
- width: 200px;
- border: 2px none;
- background: peru;
- }
- .div2 {
- width: 200px;
- border: 2px hidden;
- background: peru;
- }
- .div3 {
- width: 200px;
- border: 2px dotted;
- background: peru;
- }
- .div4 {
- width: 200px;
- border: 2px dashed;
- background: peru;
- }
- .div5 {
- width: 200px;
- border: 2px solid;
- background: peru;
- }
- .div6 {
- width: 200px;
- border: 3px double;
- background: peru;
- }
- .div7 {
- width: 200px;
- border: 5px groove;
- background: peru;
- }
- .div8 {
- width: 200px;
- border: 5px ridge;
- background: peru;
- }
- .div9 {
- width: 200px;
- border: 5px inset;
- background: peru;
- }
- .div10 {
- width: 200px;
- border: 5px outset;
- background: peru;
- }
- </style>
- <body>
- <div class="div1">border:none div1</div>
- </br>
- <div class="div2">border: hidden div2</div>
- </br>
- <div class="div3">border: dotted div3</div>
- </br>
- <div class="div4">border: dashed div4</div>
- </br>
- <div class="div5">border: solid div5</div>
- </br>
- <div class="div6">border: double div6</div>
- </br>
- <div class="div7">border: groove div7</div>
- </br>
- <div class="div8">border: ridge div8</div>
- </br>
- <div class="div9">border: inset div9</div>
- </br>
- <div class="div10">border: outset div10</div>
- </body>
- </html>
border-color :
색상 (Hexadecimal color<가장 많이 사용>, RGB color, RGBA color, HSL color, HSLA color, Predefined/Cross-browser color names<색 이름을 사용>, transparent<투명을 지정>, inherit<상속 받음>)
(기본 값: 글자의 색을 따른다.)
Hexadecimal color
{ border-color:#00ff00; }
RGB color :
{ border-color:rgb(255,0,0); }
RGBA color : RGB+Alpha값(=투명도 값을 말한다)
{ border-color:rgba(255,0,0,0.5); } /* 0은 투명, 1은 불투명 */
HSL color :
hsl은 색조(hue), 채도(Saturation), 밝기(Lightness)를 의미하며 hue의 수치는 0부터 360으로 색상환의 각도를 의미함.
0과 360도: R(빨간색)
120도: 녹색(G)
240도: 파란색(B)
채도와 밝기는 백분율로 표기함.
{ border-color:hsl(120,65%,75%); }
HSLA color : HSL+Alpha값(=투명도 값을 말한다)
{ border-color:hsla(120,65%,75%,0.3); } /* 0은 투명, 1은 불투명 */
예 6-9
- <html>
- <style>
- body {
- margin: 0;
- }
- .div1 {
- width: 200px;
- border: 5px solid;
- border-color: #0000ff;
- background: plum;
- }
- .div2 {
- width: 200px;
- border: 5px solid;
- border-color: rgb(255,0,0);
- background: plum;
- }
- .div3 {
- width: 200px;
- border: 5px solid;
- border-color: rgba(255,0,0,0.5);
- background: plum;
- }
- .div4 {
- width: 200px;
- border: 5px solid;
- border-color: hsl(120,65%,75%);
- background: plum;
- }
- .div5 {
- width: 200px;
- border: 5px solid;
- border-color: hsla(120,65%,75%,0.3);
- background: plum;
- }
- .div6 {
- width: 200px;
- border: 5px solid;
- border-color: aqua;
- background: plum;
- }
- </style>
- <body>
- <div class="div1">border-color: #0000ff; div1</div>
- </br>
- <div class="div2">border-color:rgb(255,0,0); div2</div>
- </br>
- <div class="div3">border-color:rgba(255,0,0,0.5); div3</div>
- </br>
- <div class="div4">border-color:hsl(120,65%,75%); div4</div>
- </br>
- <div class="div5">border-color:hsla(120,65%,75%,0.3); div5</div>
- </br>
- <div class="div6">border-color:aqua; div6</div>
- </body>
- </html>
border 설정의 예)
개별적 너비 설정
border-top-width
border-right-width
border-bottom-width
border-left-width
일괄적 너비 설정
border-width:상 우 하 좌; /* 값이 4 개
border-width:상 좌우 하; /* 값이 3 개
border-width:상하 좌우; /* 값이 2 개
border-width:상하좌우; /* 값이 1 개
개별적 색 설정
border-top-color
border-right-color
border-bottom-color
border-left-color
일괄적 색 설정
border-color:상 우 하 좌; /* 값이 4 개
border-color:상 좌우 하; /* 값이 3 개
border-color:상하 좌우; /* 값이 2 개
border-color:상하좌우; /* 값이 1 개
개별적 스타일 설정
border-top-style
border-right-style
border-bottom-style
border-left-style
일괄적 스타일 설정
border-style:상 우 하 좌; /* 값이 4 개
border-style:상 좌우 하; /* 값이 3 개
border-style:상하 좌우; /* 값이 2 개
border-style:상하좌우; /* 값이 1 개
통합 설정하기
width, style, color의 순서는 상관없고 생략도 가능. 생략 시는 기본 값으로 대치됨.
style을 생략하면 기본 값이 none이므로 아무 변화가 없다. 그러니 style 값은 꼭 넣어라.
border: width style(꼭 필요) color;
부위별 통합 설정.
border-top: width style color;
border-right: width style color;
border-bottom: width style color;
border-left: width style color;
4. border-radius 속성
CSS3에 추가된 속성으로 축약 속성이며 4방향의 모서리에 지정될 반지름을 지정해서 둥근 모서리를 만들 때 사용한다.
top-left, top-right, bottom-right. bottom-left 순서로 값이 지정됨.(좌상에서 시계방향으로 돌아 좌하에서 끝남.)
배경 이미지를 지정하면 모서리가 둥근 이미지도 만들어 낼 수 있다.
px, pt, em, % 등으로 반지름의 길이를 지정한다.
그림에서 보는 것처럼 원형 또는 타원형의 모양을 구사할 수 있다.
타원형을 구사할 경우 "가로반지름값/세로반지름값" 형식으로 기록한다.
원형: 일괄 반지름 지정. (마진이나 패딩의 경우와 흡사하게 적용된다)
border-radius: 좌상 우상 우하 좌하; /* 값이 4 개인 경우 */
border-radius: 좌상 우상=좌하 우하; /* 값이 3 개인 경우 */
border-radius: 좌상=우하 우상=좌하; /* 값이 2 개인 경우 */
border-radius: 좌상=우상=좌하=우하; /* 값이 1 개인 경우 */
각 모서리에 같은 값을 준 경우
예 6-10
- <html>
- <head>
- <style>
- div {
- border: 2px solid #a1a1a1;
- padding: 10px 40px;
- background: #dddddd;
- width: 300px;
- border-radius: 20px;
- }
- </style>
- </head>
- <body>
- <div>The border-radius 속성으로 둥근 모서리의 box를 만들 수 있다</div>
- </body>
- </html>
각 모서리에 다른 값을 준 경우
예 6-11
- <html>
- <head>
- <style>
- div {
- border: 2px solid #a1a1a1;
- padding: 10px 40px;
- background: #dddddd;
- width: 300px;
- border-radius: 20px 30px 40px 50px;
- }
- </style>
- </head>
- <body>
- <div>The border-radius 속성으로 둥근 모서리의 box를 만들 수 있다</div>
- </body>
- </html>
두 개의 값을 사용한 경우 좌상=우하, 우상=좌하
예 6-12
- <html>
- <head>
- <style>
- div {
- border: 2px solid #a1a1a1;
- padding: 10px 40px;
- background: #dddddd;
- width: 300px;
- border-radius: 10px 50px;
- }
- </style>
- </head>
- <body>
- <div>The border-radius 속성으로 둥근 모서리의 box를 만들 수 있다</div>
- </body>
- </html>
타원형: 원형: 일괄 반지름 지정.
border-radius: 좌상 우상 우하 좌하 / 좌상 우상 우하 좌하; /* 값이 4 개*/
"/"를 기준으로 왼쪽 값은 타원의 가로 반지름이고 오른쪽 값은 세로 반지름이 된다.
%를 사용하면 해당 박스의 가로, 세로 길이를 기준으로 한다. 각 모서리에서 50%를 주면 원형이 된다.
"/"를 기준으로 좌우 값은 1~4개를 사용할 수 있고 적용규칙은 위와 같다.
타원의 모서리를 만들 경우
예 6-13
- <html>
- <head>
- <style>
- div {
- border: 2px solid #a1a1a1;
- padding: 10px 40px;
- background: #dddddd;
- width: 300px;
- border-radius: 50px /30px;
- }
- </style>
- </head>
- <body>
- <div>The border-radius 속성으로 둥근 모서리의 box를 만들 수 있다</div>
- </body>
- </html>
개별적 반지름 지정.
border-top-left-radius:
border-top-right-radius:
border-bottom-right-radius:
border-bottom-left-radius:
5. border-collapse 속성
<table>태그에 사용되는 CSS속성으로 각 셀간의 간격이 생기는 것을 없애준다.
table {border-collapse: collapse;}
collapse : 각 셀의 테두리가 합쳐진다.
separate : 각 셀의 테두리가 분리된다.(기본 값)
inherit : 부모 요소로부터 값을 상속 받는다.
예 6-14
- <html>
- <head>
- <style>
- .table1 {
- border-collapse: collapse;
- }
- table,
- td,
- th {
- border: 1px solid black;
- }
- </style>
- </head>
- <body>
- <p>
- 일반 테이블</p>
- <table>
- <tr>
- <th>과일</th>
- <th>생선</th>
- </tr>
- <tr>
- <td>사과</td>
- <td>조기</td>
- </tr>
- <tr>
- <td>포도</td>
- <td>고등어</td>
- </tr>
- </table>
- <br/>
- <p>collapse 테이블</p>
- <table class="table1">
- <tr>
- <th>과일</th>
- <th>생선</th>
- </tr>
- <tr>
- <td>사과</td>
- <td>조기</td>
- </tr>
- <tr>
- <td>포도</td>
- <td>고등어</td>
- </tr>
- </table>
- <p>
- <b>알림:</b>
- IE8이전 버전에서는 !DOCTYPE을 명시하지 않을 경우 예상치 않는 결과가 나올 수도 있다.</p>
- </body>
- </html>
6. border-spacing
<table>태그 사용 시 바깥 경계선과 셀 사이의 거리를 지정하는데 border-collapse 속성이 separate일 경우만 가능.
(collapse라면 경계선이 없는 상태가 되므로 작동 안함)
length length : cm, mm, in, pt, pc 또는 em, ex, px등을 사용함.
첫 번째 값은 좌우, 두 번째 상하 값이며 하나의 값을 사용할 경우 상하좌우가 모두 적용된다.
예 6-15
- <html>
- <head>
- <style>
- table.ex1 {
- border-collapse: separate;
- border-spacing: 10px 30px;
- }
- </style>
- </head>
- <body>
- <b>적용 전</b>
- <table border="1">
- <tr>
- <td>사과</td>
- <td>배</td>
- </tr>
- <tr>
- <td>감자</td>
- <td>고구마</td>
- </tr>
- </table>
- <br/>
- <b>적용 후</b>
- <table border="1" class="ex1">
- <tr>
- <td>사과</td>
- <td>배</td>
- </tr>
- <tr>
- <td>감자</td>
- <td>고구마</td>
- </tr>
- </table>
- <p>
- <b>알림:</b>
- IE8은 !DOCTYPE을 선언해야 지원됩니다.</p>
- </body>
- </html>
- </tr>
- <tr>
- <td>감자</td>
- <td>고구마</td>
- </tr>
- </table>
- <br>
- <table border="1" class="ex1">
- <tr>
- <td>사과</td>
- <td>배</td>
- </tr>
- <tr>
- <td>감자</td>
- <td>고구마</td>
- </tr>
- </table>
- <p>
- <b>알림:</b>
- IE8은 !DOCTYPE을 선언해야 지원됩니다.</p>
- </body>
- </html>
7. border-image관련
자주 쓰이지 않으므로 다음기회에 설명하기로 함.
'COMPUTER > CSS' 카테고리의 다른 글
8. font 관련 속성들 -바닥부터 시작하는 CSS- (0) | 2017.01.07 |
---|---|
7. text에 관련된 속성들 -바닥부터 시작하는 CSS- (0) | 2017.01.05 |
5. position 속성 -바닥부터 시작하는 CSS- (0) | 2016.12.24 |
4. float 속성 -바닥부터 시작하는 CSS- (0) | 2016.12.08 |
CSS의 절대단위와 상대단위 -막간학습- (0) | 2016.12.07 |