CSS - Layout

김석환·2020년 10월 26일

CSS

목록 보기
15/18
post-thumbnail

Layout의 핵심은 블록 레벨 요소들을 원하는 위치에 배열하는 것이다.
웹사이트를 구성하는 요소들을 배치할 공간을 분할하고 정렬하는 것이다.
공간을 분할할 때는 먼저 행을 구분한 후 행 내부요소를 분리하는 것이 일반적이다.

1.Header & Navigation Bar

대부분의 웹사이트는 Navigtion Bar를 가지고 있다.
없는 사이트를 찾아보기 힘들 정도임!
네비게이션 바는 기본적으로 링크들의 리스트이다. 따라서 ul li태그를 이용하는 것이 일반적이다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
      * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    body {
      font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
      color: #58666e;
      background-color: #f0f3f4;
    }
    li {
      list-style: none;
    }
    a {
      text-decoration: none;
    }
    header {
      width: 100%;
      height: 60px;
      z-index: 10;
      background-color: #fff;
      box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05);
    }
    nav {
      float: right;
    }
    h1{
      color: rgba(0, 0, 0, 0.75);
    }
    .logo {
      display: inline-block;
      height: 36px;
      margin: 12px 0 12px 25px;
    }
    .nav-items > li {
      display: inline-block;
    }
    .nav-items > li > a {
      line-height: 60px;
      padding: 0 30px;
      color: rgba(0,0,0,0.4);
    }
    .nav-items > li > a:hover {
      color: rgba(0,0,0,0.8);
    }
    </style>
    <title>Document</title>
</head>
<body>
  <div id="wrap">
    <header>
      <a class="logo" href="#home">
        <h1>Layout</h1>
      </a>
      <nav>
        <ul class="nav-items">
          <li><a href="#home">Home</a></li>
          <li><a href="#news">News</a></li>
          <li><a href="#contact">Contact</a></li>
          <li><a href="#about">About</a></li>
        </ul>
      </nav>
    </header>
  </div>
</body>
</html>

2.Section & Aside

Section은 콘텐츠 영역, Aside는 부가 정보 영역, Section영역은 다시 article영역으로 구분할 수 있다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
      * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    body {
      font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
      color: #58666e;
      background-color: #f0f3f4;
    }
    li {
      list-style: none;
    }
    a {
      text-decoration: none;
    }
    header {
      width: 100%;
      height: 60px;
      z-index: 10;
      background-color: #fff;
      box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05);
    }
    nav {
      float: right;
    }
    h1{
      color: rgba(0, 0, 0, 0.75);
    }
    .logo {
      display: inline-block;
      height: 36px;
      margin: 12px 0 12px 25px;
    }
    .nav-items > li {
      display: inline-block;
    }
    .nav-items > li > a {
      line-height: 60px;
      padding: 0 30px;
      color: rgba(0,0,0,0.4);
    }
    .nav-items > li > a:hover {
      color: rgba(0,0,0,0.8);
    }
    #content-wrap:after {
      content: "";
      display: block;
      clear: both;
    }
    aside {
      position: fixed;
      top: 60px;
      bottom: 0;
      width: 200px; 
      padding-top: 25px;
      background-color: #333;
    }
    aside > ul {
      width: 200px;
    }
    aside > ul > li > a {
      display: block;
      color: #fff;
      padding: 10px 0 10px 20px;
    }
    aside > ul > li > a.active {
      background-color: #4CAF50;
    }
    aside > ul > li > a:hover:not(.active) {
      background-color: #555;
    }
    aside > h1 {
      padding: 20px 0 20px 20px;
      color: #fff;
    }
    section {
      float: right;
      margin-left: 200px;
    }
    article {
      margin: 10px;
      padding: 25px;
      background-color: white;
    }
    </style>
    <title>Document</title>
</head>
<body>
  <div id="wrap">
    <header>
      <a class="logo" href="#home">
        <h1>Layout</h1>
      </a>
      <nav>
        <ul class="nav-items">
          <li><a href="#home">Home</a></li>
          <li><a href="#news">News</a></li>
          <li><a href="#contact">Contact</a></li>
          <li><a href="#about">About</a></li>
        </ul>
      </nav>
    </header>
    <div id="content-wrap">
      <aside>
        <h1>Aside</h1>
        <ul>
          <li><a href="#" class="active">HTML</a></li>
          <li><a href="#">CSS</a></li>
          <li><a href="#">JavaScript</a></li>
        </ul>
      </aside>
      <section>
        <article id="html">
          <h1>HTML</h1>
          <p>Hyper Text Markup Language는 웹페이지를 위한 지배적인 마크업 언어이다</p>
          <p>HTML은 제목, 단락, 목록 등과 같은 본문을 위한 구조적의미를 나타내는 것뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공한다.</p>
        </article>
        <article id="css">
          <h1>CSS</h1>
          <p>Cascading Style Sheets는 마크업 언어가 실제 표시되는 방법을 기술하는 언어로 HTML에 주로 쓰인다.</p>
          <p>HTML이 웹사이트의 몸체를 담당한다면 CSS는 옷과 액세서리처럼 꾸미는 역할을 담당한다고 할 수 있다. 즉 HTML 구조는 그대로 두고 CSS파일만 변경해도 전혀 다른 웹사이트처럼 꾸밀 수 있다.</p>
        </article>
        <article id="js">
          <h1>JavaScript</h1>
          <p>자바스크립트는 객체 기반의 스크립트 프로그래밍 언어이다.</p>
          <p>주로 웹 브라우저 내에서 주로 사용하며 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다.</p>
        </article>
      </section>
    </div>
  </div>
</body>
</html>

3.footer

footer에는 저작권자, 주소 , 연락처 등이 들어간다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
      * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    body {
      font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
      color: #58666e;
      background-color: #f0f3f4;
    }
    li {
      list-style: none;
    }
    a {
      text-decoration: none;
    }
    header {
      width: 100%;
      height: 60px;
      z-index: 10;
      background-color: #fff;
      box-shadow: 0 2px 2px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(0, 0, 0, 0.05);
    }
    nav {
      float: right;
    }
    h1{
      color: rgba(0, 0, 0, 0.75);
    }
    .logo {
      display: inline-block;
      height: 36px;
      margin: 12px 0 12px 25px;
    }
    .nav-items > li {
      display: inline-block;
    }
    .nav-items > li > a {
      line-height: 60px;
      padding: 0 30px;
      color: rgba(0,0,0,0.4);
    }
    .nav-items > li > a:hover {
      color: rgba(0,0,0,0.8);
    }
    #content-wrap:after {
      content: "";
      display: block;
      clear: both;
    }
    aside {
      position: fixed;
      top: 60px;
      bottom: 0;
      width: 200px; 
      padding-top: 25px;
      background-color: #333;
    }
    aside > ul {
      width: 200px;
    }
    aside > ul > li > a {
      display: block;
      color: #fff;
      padding: 10px 0 10px 20px;
    }
    aside > ul > li > a.active {
      background-color: #4CAF50;
    }
    aside > ul > li > a:hover:not(.active) {
      background-color: #555;
    }
    aside > h1 {
      padding: 20px 0 20px 20px;
      color: #fff;
    }
    section {
      float: right;
      margin-left: 200px;
    }
    article {
      margin: 10px;
      padding: 25px;
      background-color: white;
    }
    footer {
      position: absolute;
      height: 60px;
      width: 100%;
      padding: 0 25px;
      line-height: 60px;
      text-align: center;
      color: #8a8c8f;
      border-top: 1px solid #dee5e7;
      bottom: 0px;
      background-color: #f2f2f2;
    }
    </style>
    <title>Document</title>
</head>
<body>
  <div id="wrap">
    <header>
      <a class="logo" href="#home">
        <h1>Layout</h1>
      </a>
      <nav>
        <ul class="nav-items">
          <li><a href="#home">Home</a></li>
          <li><a href="#news">News</a></li>
          <li><a href="#contact">Contact</a></li>
          <li><a href="#about">About</a></li>
        </ul>
      </nav>
    </header>
    <div id="content-wrap">
      <aside>
        <h1>Aside</h1>
        <ul>
          <li><a href="#" class="active">HTML</a></li>
          <li><a href="#">CSS</a></li>
          <li><a href="#">JavaScript</a></li>
        </ul>
      </aside>
      <section>
        <article id="html">
          <h1>HTML</h1>
          <p>Hyper Text Markup Language는 웹페이지를 위한 지배적인 마크업 언어이다</p>
          <p>HTML은 제목, 단락, 목록 등과 같은 본문을 위한 구조적의미를 나타내는 것뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공한다.</p>
        </article>
        <article id="css">
          <h1>CSS</h1>
          <p>Cascading Style Sheets는 마크업 언어가 실제 표시되는 방법을 기술하는 언어로 HTML에 주로 쓰인다.</p>
          <p>HTML이 웹사이트의 몸체를 담당한다면 CSS는 옷과 액세서리처럼 꾸미는 역할을 담당한다고 할 수 있다. 즉 HTML 구조는 그대로 두고 CSS파일만 변경해도 전혀 다른 웹사이트처럼 꾸밀 수 있다.</p>
        </article>
        <article id="js">
          <h1>JavaScript</h1>
          <p>자바스크립트는 객체 기반의 스크립트 프로그래밍 언어이다.</p>
          <p>주로 웹 브라우저 내에서 주로 사용하며 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다.</p>
        </article>
      </section>
    </div>
    <footer>© Copyright 2020 slothKim</footer>
  </div>
</body>
</html>

0개의 댓글