댓글 목록

HTML 레이아웃

페이지 정보

작성자 운영자 작성일 17-10-29 16:11 조회 1,618 댓글 0

동영상 강좌는 유튜브 채널 '웹학교'를 이용하시기 바랍니다.

동영상 강좌보기

 


HTML 레이아웃 요소

웹사이트는 종종 잡지나 신무과 같이 여러 열에 내용을 표시합니다.

HTML5는 웹페이지의 다른 부분을 정의하는 새로운 의미 요소를 제공합니다.


 <header>

 <nav>

 <section>

 <aside>

 <article>

 <footer>


  • <header> - 문서 또는 섹션의 머리글을 정의합니다.
  • <nav> - 탐색 링크를 위한 컨테이너를 정의합니다.
  • <section> - 문서의 섹션을 정의합니다.
  • <article> - 독립적인 기사를 정의합니다.
  • <aside> - 사이드바처럼 콘텐츠를 제외하고 콘텐츠를 정의합니다.
  • <footer> - 문서 또는 섹션에 대한 바닥글을 정의합니다.
  • <details> - 추가 세부 정보를 정의합니다.
  • <summary> - <details>요소의 제목을 정의합니다.


HTML 레이아웃 기법

여러 열 레이아웃을 만드는 방법에는 네가지가 있습니다. 각 방법마다 장단점이 있습니다.

  • HTML 표
  • CSS float속성
  • CSS 프레임웍
  • CSS flexbox


어느 것을 선택할 것인가?

HTML 표

<table>요소는 레이아웃 도구로 설계되지 않았습니다. <table>요소의 목적은 표형식의 데이타를 표시하는 것입니다. 따라서 페이지 레이아웃에 <table>요소를 사용하면 안됩니다. 후에 사이트를 재설계하는 것을 어렵게 합니다. 

CSS 프레임웍

레이아웃을 빠르게 만들려면 부트스트랩(Bootstrap)같은 프레임웍을 사용할 수 있습니다.

CSS float

CSS float속성을 사용하여 전체 웹 레이아웃을 수행하는 것이 일반적입니다. 플로트는 배우기 쉽습니다.

단점 : float속성은 문서 흐름에 묶여 있어 유연성에 해를 미칠 수 있습니다. 

<!DOCTYPE html>
<html>
<head>
<style>
div.container {
    width: 100%;
    border: 1px solid gray;
}

header, footer {
    padding: 1em;
    color: white;
    background-color: black;
    clear: left;
    text-align: center;
}

nav {
    float: left;
    max-width: 160px;
    margin: 0;
    padding: 1em;
}

nav ul {
    list-style-type: none;
    padding: 0;
}
   
nav ul a {
    text-decoration: none;
}

article {
    margin-left: 170px;
    border-left: 1px solid gray;
    padding: 1em;
    overflow: hidden;
}
</style>
</head>
<body>

<div class="container">

<header>
   <h1>도시갤러리</h1>
</header>
  
<nav>
  <ul>
    <li><a href="#">런던</a></li>
    <li><a href="#">파리</a></li>
    <li><a href="#">서울</a></li>
  </ul>
</nav>

<article>
  <h1>서울</h1>
  <p>서울특별시(서울特別市, Seoul)는 대한민국의 수도이자 최대 도시이다. </p>
  <p>동서 간의 거리는 36.78 km, 남북 간의 거리는 30.3 km이며, 넓이는 605.25 km²이다.</p>
</article>

<footer>Copyright &copy; 365ok.co.kr</footer>

</div>

</body>
</html>

CSS Flexbox

flexbox는 CSS3의 새로운 레이아웃 모드입니다.

flexbox를 사용하면 페이지 레이아웃이 다른 화면 크기와 다른 디스플레이 장치를 수용해야 할 때 요소가 예상대로 작동합니다. 

단점 : IE10이하에서는 작동하지 않습니다.

<!DOCTYPE html>
<html>
<head>
<style> 
.flex-container {
    display: -webkit-flex;
    display: flex;  
    -webkit-flex-flow: row wrap;
    flex-flow: row wrap;
    text-align: center;
}

.flex-container > * {
    padding: 15px;
    -webkit-flex: 1 100%;
    flex: 1 100%;
}

.article {
    text-align: left;
}

header {background: black;color:white;}
footer {background: #aaa;color:white;}
.nav {background:#eee;}

.nav ul {
    list-style-type: none;
    padding: 0;
}
.nav ul a {
    text-decoration: none;
}

@media all and (min-width: 768px) {
    .nav {text-align:left;-webkit-flex: 1 auto;flex:1 auto;-webkit-order:1;order:1;}
    .article {-webkit-flex:5 0px;flex:5 0px;-webkit-order:2;order:2;}
    footer {-webkit-order:3;order:3;}
}
</style>
</head>
<body>

<div class="flex-container">
<header>
  <h1>도시 갤러리</h1>
</header>

<nav class="nav">
<ul>
  <li><a href="#">런던</a></li>
  <li><a href="#">파리</a></li>
  <li><a href="#">서울</a></li>
</ul>
</nav>

<article class="article">
  <h1>서울</h1>
  <p>서울특별시(서울特別市, Seoul)는 대한민국의 수도이자 최대 도시이다.</p>
  <p>면적은 대한민국 국토의 0.6%에 불과하지만, 대한민국 전체 인구의 5분의 1에 육박하는 주민이 살고 있어서 인구밀도가 매우 높다. </p>
  <p>1986년 아시안 게임, 1988년 하계 올림픽, 2002년 FIFA 월드컵, 2010년 서울 G20 정상회의를 개최한 국제적인 도시이다.</p>
</article>

<footer>Copyright &copy; 365ok.co.kr</footer>
</div>

</body>
</html>


댓글목록 0

등록된 댓글이 없습니다.