홈페이지 레이아웃을 만드는 방법

 

오늘도 기초 CSS 학습시간입니다. 가장 기초적이면서 중요한 내용이니 꼭 학습하고 이해하시기 바랍니다.

웹사이트의 레이아웃을 만드는 방법은 크게 두가지가 있습니다. 첫번째는 표(<table>)을 이용하는 것이고, 두번째는 CSS를 이용하는 것입니다.

2000년대 초까지만해도 CSS 보다는 <table>을 주로 사용했습니다. 하지만 <table>을 이용하는 것은 컨텐츠와 디자인의 분리 원칙에도 맞지 않고,

사이드바의 위치를 바꾸는 등 수정을 해야 할 때 편집해야할 코드가 많다는 단점이 있어 요즘에는 거의 사용하지 않습니다.

레이아웃을 만들 때 필요한 속성

CSS로 레이아웃을 만들 때 꼭 알아야 할 속성은 margin, float, clear입니다.

margin은 요소를 가운데 정렬할 때 사용합니다.
margin-left: auto; margin-right: auto;

로 설정하면 선택한 요소를 가운데에 놓을 수 있습니다.

float와 clear는 2단, 3단 등 다단으로 레이아웃을 만들 때 사용합니다.

2단 레이아웃 만들기

다음은 간단한 2단 레이아웃 예제입니다.

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS Tutorial | Layout</title>
    <style>
      #jb-container {
        width: 940px;
        margin: 0px auto;
        padding: 20px;
        border: 1px solid #bcbcbc;
      }
      #jb-header {
        padding: 20px;
        margin-bottom: 20px;
        border: 1px solid #bcbcbc;
      }
      #jb-content {
        width: 580px;
        padding: 20px;
        margin-bottom: 20px;
        float: left;
        border: 1px solid #bcbcbc;
      }
      #jb-sidebar {
        width: 260px;
        padding: 20px;
        margin-bottom: 20px;
        float: right;
        border: 1px solid #bcbcbc;
      }
      #jb-footer {
        clear: both;
        padding: 20px;
        border: 1px solid #bcbcbc;
      }
    </style>
  </head>
  <body>
    <div id="jb-container">
      <div id="jb-header">
        <h1>2-신앙인의 기도</h1>
      </div>
      <div id="jb-content">
        <h2>Content</h2>
        <p>
      성결의 성령 하나님!

네 이웃을 네 몸같이 사랑하라고 하신 주님의 말씀을 입과 머리로는 알면서도 행위로는

실천하지 못했던 한 해였습니다.

말씀을 영과 가슴으로 깨달아 실천하는 산 믿음을 허락하여 주시옵소서.

물질로 인하여 삶의 현장에서 주님의 말씀을 잊고 살아갈 때 마다 생각나게 하시어

하나님의 말씀을 따라 성령님의 인도함에 의지하여 살아가는 우리 형제 자매들이 되게 하여 주시옵소서.
       
        </p>
        <p>
       
우리 모두에게 가난한 심령이 되고, 고통 받는 심령에게는 주님의 말씀으로 자유함을 받는

말씀의 역사가 되게 하여 주시옵소서.


보이지 않는 곳에서 헌신하는 손길을 기억하시고 주님께 입술로 영광을 올리는 성가대에 함께 하여 주시옵소서.

주님의 사랑이 온 땅위에 충만하시길 원하나이다.

한 해를 보내는 아쉬움 속에 다가오는 새해에는 더욱 믿음을 굳건히 세워 성령님의 인도함따라

다시 오실 주님을 기다리며 예수 그리스도 이름으로 기도드립니다. 아멘
        </p>
      </div>
      <div id="jb-sidebar">
        <h2>신앙</h2>
        <ul>
          <li>믿음</li>
          <li>사랑</li>
          <li>봉사</li>
        </ul>
      </div>
      <div id="jb-footer">
        <p>Copyright</p>
      </div>
    </div>
  </body>
</html>

 

아래는 위 코드 실행결과입니다.

 

 

만약 사이드바를 왼쪽으로 옮기고 싶으면
•#jb-content의 float: left;를 float: right;
•#jb-content의 float: right;를 float: left;

로 바꿔주면 됩니다.

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

CSS 강좌 / 박스 모델(Box Model)

 

HTML 요소는 박스(box)로 이루어져 있습니다. 박스 위에 박스를 얹거나 박스들을 배열하여 문서를 만들어 나갑니다.

예를 들어 다음과 같이 코드를 작성했다면
<body>
  <header>
    <h1>Lorem</h1>
  </header>
</body>

body 박스 위에 header 박스가 있고, header 박스 위에 h1 박스가 있는 것입니다.

박스의 구성

하나의 박스는 바깥 여백 영역, 테두리 영역, 안쪽 여백 영역, 내용 영역으로 구성됩니다. 다음은 각 영역을 살펴보기 위한 간단한 예제입니다.
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS</title>
    <style>
      h1 {
        margin: 30px;
        border: 30px solid #dddddd;
        padding: 30px;
      }
    </style>
  </head>
  <body>
    <h1>Box Model</h1>
  </body>
</html>

웹브라우저로 보면 아래와 같은 결과 값이 나옵니다.

 

 

 

각 영역의 구분이 명확하지 않으므로 IE의 요소 검사로 보도록 하겠습니다.

 

색이 있는 모든 영역이 h1 요소입니다. 각 색이 나타내는 영역은 다음과 같습니다.
•① : 바깥 여백 영역(Margin Area)
•② : 테두리 영역(Border Area)
•③ : 안쪽 여백 영역(Padding Area)
•④ : 내용 영역(Content Area)

각 영역을 꾸밀 때 사용하는 속성은 다음과 같습니다.
•바깥 여백 : margin 속성
•테두리 : border 속성
•안쪽 여백 : padding 속성
•박스의 가로 크기 : width 속성
•박스의 세로 크기 : height 속성
•박스의 크기 기준 : box-sizing 속성
•박스의 배경 : background 속성

               

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,


CSS 강좌 | Property > font-family

 

  .

 

 

개요

font-family는 글꼴을 설정하는 속성입니다.
•기본값 : 웹브라우저의 기본 글꼴
•상속 : Yes
•애니메이션 : No
•버전 : CSS Level 1

문법
font-family: font | initial | inherit
•font : family-name 또는 generic-family
•initial : 기본값으로 설정
•inherit : 부모 요소의 속성값을 상속받음

font

family-name은 글꼴 이름입니다. 글꼴 이름에 띄어쓰기가 있으면 작은 따옴표 또는 큰 따옴표로 감쌉니다.

generic-family는 글꼴 유형입니다.
•serif : 삐침 있는 명조계열의 글꼴
•sans-serif : 삐침 없고 굵기가 일정한 고딕계열의 글꼴
•monospace : 글자 폭과 간격이 일정한 글꼴
•cursive : 손으로 쓴 것 같은 필기계열의 글꼴
•fantasy : 화려한 글꼴

여러 개의 글꼴 설정

글꼴을 여러 개 설정할 때는 쉼표로 구분합니다. 예를 들어
font-family: Georgia, "Times New Roman", serif;

로 설정했을 때, 제일 먼저 Georgia 글꼴을 찾습니다. 해당 글꼴이 있다면 사용하고, 없다면 Times New Roman 글꼴을 사용합니다. 그 글꼴도 없다면 웹브라우저에서 설정한 명조 계열의 글꼴을 사용합니다.

글꼴은 접속한 기기에 설치되어 있는 글꼴을 사용합니다. 따라서 CSS로 설정한 글꼴이 없을 수도 있으므로, 마직막은 generic-family로 정해두는 것이 좋습니다.

영어와 한글 글꼴을 다르게 하기

글꼴을 여러 개 설정했을 때, 첫번째 글꼴로 표현할 수 없는 것만 다음 글꼴을 사용합니다.

따라서 한글이 없는 글꼴을 앞에 두고, 한글 글꼴을 뒤에 두면 한글과 영어가 다른 글꼴로 표현됩니다.

예를 들어 다음과 같이 하면
font-family: Georgia, "맑은 고딕", serif;

한글은 맑은 고딕, 나머지는 Georgia로 표현됩니다.

 

 

예제
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS</title>
    <style>
      .a { font-family: Georgia, serif; }
      .b { font-family: serif; }
      .c { font-family: sans-serif; }
      .d { font-family: monospace; }
      .e { font-family: cursive; }
      .f { font-family: fantasy; }
      .g { font-family: Georgia, "맑은 고딕", serif; }
    </style>
  </head>
  <body>
    <p class="a">font-family: Geogia;</p>
    <p class="b">font-family: serif;</p>
    <p class="c">font-family: sans-serif;</p>
    <p class="d">font-family: monospace;</p>
    <p class="e">font-family: cursive;</p>
    <p class="f">font-family: fantasy;</p>
    <p class="g">한글은 맑은 고딕, 나머지는 Georgia</p>
  </body>
</html>

 

 

 

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

 

CSS 강좌 /컨텐트 만들기 / content
 

 .

 

 

content 속성은 선택한 요소의 내용 앞이나 뒤에 컨텐트를 붙입니다.

예를 들어 p 요소 내용 앞에 컨텐트를 넣으려면
p:before {
  content: ***;
}

와 같이 하고, 뒤에 붙이려면
p:after {
  content: ***;
}

와 같이 합니다.

content 속성을 이용하여 XXX라는 문자열을 넣으려면 다음과 같이 합니다.
p:before {
  content: "***";
}

이미지를 넣고 싶다면 다음과 같이 합니다.
p:before {
  content: url( "path/abc.png" );
}

선택한 요소의 속성값을 출력할 수도 있습니다. 예를 들어 p 요소의 class 값을 나타내려면 다음과 같이 합니다.
p:before {
  content: attr( class );
}

다음은 위 세가지를 한 페이지에 담은 예제입니다.
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS | content</title>
    <style>
      h1.st:before {
        content: "String ";
        color: red;
      }
      h1.ur:before {
        content: url( "jb_dot.png" );
        margin-right: 10px;
      }
      h1.at:before {
        content: attr( class );
        margin-right: 10px;
      }
    </style>
  </head>
  <body>
    <h1 class="st">Seoul</h1>
    <h1 class="ur">Pusan</h1>
    <h1 class="at">Daeku</h1>
  </body>
</html>

위 소스 결과값은 아래와 같습니다.

 

 

 

                   

 

 

 

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

[CSS 강좌] Table 표 만들 때 사용하는 태그

 

 

표 만들 때 사용하는 태그

 

표는 table 태그로 만듭니다.

 

행은 tr 태그로 만듭니다.

 

열의 제목이 들어가는 셀은 th로 만듭니다.

 

내용이 들어가는 셀은 td 태그로 만듭니다.

 

각 열의 의미에 따라 thead, tbody, tfoot 태그로 구분지을 수도 있습니다.

 

가로로 이웃한 셀을 합칠 때에는 colspan 속성을 사용합니다.

 

세로로 이웃한 셀을 합칠 때에는 rowspan 속성을 사용합니다.

 

표 제목은 caption 태그로 만듭니다.

 

예제

 

위의 태그를 전부 사용한 간단한 예제입니다. 정렬이나 셀 합침의 결과를 명확히 나타내기 위해 CSS로 표의 폭을 정하고 테두리를 만들었습니다.

<!doctype html>

<html lang="ko">

<head>

<meta charset="utf-8">

<title>HTML</title>

<style>

table {

width: 100%;

}

table, th, td {

border: 1px solid #bcbcbc;

}

</style>

</head>

<body>

<table>

<caption>Lorem</caption>

<thead>

<tr>

<th></th>

<th>Seoul</th>

<th>Seoul</th>

<th>Seoul</th>

</tr>

</thead>

<tbody>

<tr>

<th>Seoul</th>

<td>Pusan</td>

<td>Pusan</td>

<td rowspan="2">Pusan</td>

</tr>

<tr>

<th>Seoul</th>

<td>Pusan</td>

<td>Pusan</td>

</tr>

<tr>

<th>Seoul</th>

<td>Pusan</td>

<td>Pusan</td>

<td>Pusan</td>

</tr>

</tbody>

<tfoot>

<tr>

<td colspan="2">Table Foot</td>

</tr>

</tfoot>

</table>

</body>

</html>

 

결과값은 아래와 같음

 

 

 

 

 

                   

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

 [CSS 강좌] 링크 꾸미기

 

 

 

링크는 <a> 태그로 만듭니다. 따라서 <a> 태그를 선택하여 꾸미면 됩니다.
 예를 들어 a { color: red; }

라고 하면, 링크의 색을 빨간색으로 만듭니다.

가상 클래스를 이용하면 좀 더 다양하게 꾸밀 수 있습니다.
•a:link - 방문하지 않은 링크
•a:visited - 방문했던 링크
•a:hover - 마우스가 올려진 링크
•a:active - 클릭하는 순간 링크

주의할 점은 a:hover는 a:link와 a:visited 뒤에 와야 하고,
a:active는 a:hover 뒤에 와야 한다는 것입니다.
따라서, 위 순서를 그대로 따르는 것이 좋습니다.

 

예제
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS</title>
    <style>
      a:link { color: blue; text-decoration: none; }
      a:visited { color: purple; text-decoration: none; }
      a:hover { color: red; text-decoration: underline; }
      a:active { color: white; background-color: green; }
    </style>
  </head>
  <body>
    <h3>Navigation</h3>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
    </ul>
  </body>
</html>

 

 

                   

 

 

 

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

CSS 강좌 /  목록 꾸미기 ( list-style-type ) 

 

 

목록은 <ul> 또는 <ol> 태그로 만듭니다. 목록 앞에 붙는 도형이나 문자을 마커(Marker)라고 하는데,

어떤 형식 또는 모양의 마커를 사용할지는 list-style-type으로 정합니다.

속성값은 다음과 같습니다.
•<ul> : disc, circle, square
•<ol> : decimal, decimal-leading-zero, lower-roman, upper-roman, lower-greek, lower-latin, upper-latin, armenian, georgian, lower-alpha, upper-alpha
•공통 : none

의미상으로는 <ul>과 <ol>에 사용하는 속성값을 구분하는게 맞지만,

<ul>에 decimal을 사용하거나 <ol>에 disc를 사용하는 등 바꾸어 사용해도 됩니다.

 

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS | list-style-type</title>
  </head>
  <body>
    <h3>disc</h3>
    <ul style="list-style-type: disc;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>circle</h3>
    <ul style="list-style-type: circle;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>square</h3>
    <ul style="list-style-type: square;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>decimal</h3>
    <ul style="list-style-type: decimal;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>decimal-leading-zero</h3>
    <ul style="list-style-type: decimal-leading-zero;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>lower-roman</h3>
    <ul style="list-style-type: lower-roman;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>upper-roman</h3>
    <ul style="list-style-type: upper-roman;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>lower-greek</h3>
    <ul style="list-style-type: lower-greek;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>lower-latin</h3>
    <ul style="list-style-type: lower-latin;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>upper-latin</h3>
    <ul style="list-style-type: upper-latin;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>armenian</h3>
    <ul style="list-style-type: armenian;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>georgian</h3>
    <ul style="list-style-type: georgian;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>lower-alpha</h3>
    <ul style="list-style-type: lower-alpha;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>   
    <h3>upper-alpha</h3>
    <ul style="list-style-type: upper-alpha;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
    <h3>none</h3>
    <ul style="list-style-type: none;">
      <li>Lorem ipsum dolor sit amet</li>
      <li>Aenean nec mollis nulla.</li>
    </ul>
  </body>
</html>

 

 

위 결과값은 아래와 같습니다.

 

 

                   

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

[CSS강좌] CSS  상속하는 속성과 상속하지 않는 속성

 

 


상속(inheritance)

CSS 속성은 상속하는 속성과 상속하지 않는 속성이 있습니다.

상속하는 속성은 자식 요소에 영향을 미칩니다.

상속하지 않는 속성은 자식 요소에 영향을 미치지 않습니다.

상속하는 속성

예를 들어 color는 상속하는 속성입니다. 부모 요소에서 정한 색이 자식 요소에도 적용됩니다. 즉
<style>
  p { color: blue; }
</style>
<p>Lorem <em>Ipsum</em></p>

일 때, Lorem 뿐만 아니라 Ipsum의 색도 파란색이 됩니다.

상속하지 않는 속성

예를 들어 padding은 상속하지 않는 속성입니다. 부모 요소에서 padding을 정의해도 자식 요소에 적용되지 않습니다. 즉
<style>
  p { padding: 20px; }
</style>
<p>Lorem <em>Ipsum</em></p>

일 때 p 요소에만 안쪽 여백을 만들고 em 요소에는 안쪽 여백을 만들지 않습니다.

예제
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS</title>
    <style>
      .abc {
        color: red;
        border: 1px solid #bcbcbc;
        padding: 10px 20px 20px 20px;
      }
    </style>
  </head>
  <body>
    <div class="abc">
      <h1>ITworldkorea</h1>
      <p>Korea <em>Itworld</em></p>
      <button>Button</button>
    </div>
  </body>
</html>

 

아래표는 위 결과값

 

color는 상속하는 속성이므로 자식 요소의 색도 빨간색으로 만듭니다. (button 처럼 상속을 받지 않는 요소도 있습니다.)

border와 padding은 상속하지 않는 속성이므로 div 요소에만 적용됩니다.

 

 

                   

 

 

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

[CSS 강좌] 아이디 선택자(ID Selector)

 

 
 

 

아이디 선택자

아이디 선택자(ID Selector)는 특정 값을 id 속성(attribute)의 값으로 갖는 요소(element)를 선택합니다. 속성값 앞에 #을 붙여 아이디임을 나타냅니다. 예를 들어
#abc {
  color: red;
}

는 id 속성값으로 abc를 갖는 요소를 빨간색으로 만듭니다.

예제

id 값으로 abc를 갖는 요소를 빨간색으로 만드는 예제입니다.
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS</title>
    <style>
      #abc {
        color: red;
      }
    </style>
  </head>
  <body>
    <p id="abc">아티월드 코리아에서 CSS를 공부합니다.</p>
    <p>Study CSS in IT Wolrdkorea.</p>
  </body>
</html>

 

위의 CSS 코드를 실행한 값은 아래와 같습니다.

 

 

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

[CSS 기초] 클래스 선택자(Class Selector)

 

클래스 선택자(Class Selector)는 특정 값을 class 속성(attribute)의 값으로 갖는 요소(element)를 선택합니다.

속성값 앞에 .을 붙여 클래스임을 나타냅니다. 예를 들어
.abc

는 class 속성값으로 abc를 갖는 요소를 선택합니다.

클래스 선택자 앞에 아무 것도 없으면

클래스 선택자 앞에 아무 것도 없으면 그 값을 갖는 모든 요소를 선택합니다. 즉 .abc는 *.abc와 같은 의미로
<h1 class="abc">Lorem</h1>
<p class="abc">Lorem</p>

모두 선택합니다.

클래스 선택자 앞에 무언가 있으면

클래스 선택자 앞에 무언가 있으면 모두 만족하는 요소를 선택합니다. 예를 들어
p.abc

는 class 값으로 abc를 갖는 p 요소를 선택합니다. 이렇게 하면
<h1 class="abc">Lorem</h1>

은 선택되지 않고,
<p class="abc">Lorem</p>
는 선택됩니다.

예제 1

class 값으로 abc를 갖는 요소는 파란색으로, class 값으로 xyz를 갖는 ul 요소는 빨간색으로 만드는 예제입니다.
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>CSS</title>
    <style>
      .abc {
        color: blue;
      }
      ul.xyz {
        color: red;
      }
    </style>
  </head>
  <body>
    <h1 class="abc">예수사랑</h1>
    <p class="abc def">사랑과 은혜가 풍성하신 하나님</p>
    <ul class="xyz">
      <li>예수님은</li>
      <li>하나님이시다</li>
    </ul>
    <p class="xyz">주님의 사랑과 은혜에 감사드립니다.</p>
  </body>
</html>

 

위 코드를 실행보면 아래와 같습니다.

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,