반응형

가로 세로 중앙 정렬 방법(1)에서는 여러 요소들을 중앙 정렬할 때 유용한 방법을 설명했다.

이번에는 간단히 text를 정렬하는 방법을 소개한다.

특히 header copy등을 삽입할 때 편리하게 사용할 수 있다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="author" content="Developer N">
  <title>date methode</title>
  <style>
    .center {
      background-color: rgb(6, 65, 23);
      color: rgb(255, 255, 255);
      padding: 5%;
      text-align: center;
    } 
  </style>
</head>
<body>
  <h1 class="center">
    [ 가로, 세로 중앙 정렬 ]<br />
    padding의 크기로 height를 조정하고<br />
    별도로 height는 지정하지 않는다.
  </h1>
</body>
</html>

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

자주 사용되면 서도 늘 찾게 되는 것이 요소의 중앙 정렬이다.

다음은 중앙 정렬의 예시이다. 중앙 정렬 방법은 여러가지가 있기 때문에 정렬 요소에 따라 방법이 달라 질 수 있다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="author" content="Developer N">
  <title>date methode</title>
  <style>
    .center { 
      height: 200px;
      position: relative;
      border: 3px solid green; 
    }
    .center div {
      margin: 0;
      position: absolute;
      top: 50%;
      left: 50%;
      -webkit-transform: translate(-50%, -50%);
      -moz-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
      -o-transform: translate(-50%, -50%);
      transform: translate(-50%, -50%);
    }
    .center p {
      text-align: center;
    }
  </style>
</head>
<body>
  <div class="center">
    <div>
      <p>Horizontal & Vertical Align<br>가로 및 세로 정렬</p>
      <p>여러 요소 동시에 정렬 할 수 있다.</p>
    </div>
  </div>
</body>
</html>

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,

[CSS3] grid system : cell

CSS3 2019. 10. 29. 00:05
반응형

container로 정의된 grid는 행과 열 단위로 설정은 가능하지만 각 셀을 병합하는 cell단위 설정은 불가능하다.

cell의 병합을 위해서는 grid-column 혹은 grid-row 요소를 사용하여 정의한다.

예를 들어 첫번째 cell과 두 번째 cell을 병합하려면 grid-column1 / 3; 으로 속성을 설정하면 된다.

이때 숫자는 grid gap의 라인 번호를 의미한다. column은 좌측을 1번으로 시작해서 오른쪽으로 cell과 cell사이의 gap을 의미하며, row는 상단을 1번으로 시작해서 아래 쪽으로 cell과 cell사이의 gap을 의미한다.

아래 그림의 빨간색 숫자는 column의 수이며, 초록색 숫자는 row의 수이다.

결국 위에서 예를 들은 grid-column1 / 3; 은 1번과 2번 셀이 합쳐진 것이다.

grid-column1 / 3; grid-column1 / span 2; 로 표기해도 된다. gap line 1에서 2개의 cell을 span한다는 의미이다.

column과 row의 gap 번호

<!--
 * 02-css-grid-cell.html v0.3.0
 * Update: 2019.10.28
 * Author: Developer N
-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>02-css-grid-cell-v0.1.0</title>
  <style>
    .grid-container {
      display: grid;
      grid: 100px 100px 100px 100px 100px / auto auto auto auto auto auto auto; 
      grid-gap: 5px;
    }
    .cell-1 {
      grid-column: 1 / 3; /* column gap1에서 gap3까지 cell 2개를 병합 / span 2와 같은 역할 */
    }
    .cell-3 {
      grid-column: 4 / 7; /* column gap4에서 gap8까지 cell 4개를 병합 / span 4와 같은 역할 */
    }
    .cell-4 {
      grid-column: 7 / 8; /* column gap7에서 gap8까지 cell 1개를 지정 */
      grid-row: 1 / 4; /* row gap1에서 gap4까지 cell 3개를 병합 / span 3와 같은 역할 */
    }
    .cell-5 {
      grid-row: 2 / 4; /* row gap2에서 gap4까지 cell 2개를 병합 / span 2와 같은 역할 */
    }
    .cell-6 {
      grid-column: 2 / 4; /* column gap2에서 gap4까지 cell 2개를 병합 / span 2와 같은 역할 */
      grid-row: 2 / 4; /* row gap2에서 gap4까지 cell 2개를 병합 / span 2와 같은 역할 */
    }
    .cell-7 {
      grid-column: 4 / 7; /* column gap4에서 gap7까지 cell 3개를 병합 / span 3와 같은 역할 */
      grid-row: 2 / 4; /* row gap2에서 gap4까지 cell 2개를 병합 / span 2와 같은 역할 */
    }
    .cell-8 {
      grid-column: 1 / 7; /* column gap1에서 gap7까지 cell 6개를 병합 / span 6와 같은 역할 */
    }
    div > div {
      background-color: cornflowerblue;
    }    
  </style>
</head>
<body>
  <div class="grid-container">
    <div class="cell-1">(1) .cell-1</div>
    <div>(2)</div> 
    <div class="cell-3">(3) .cell-2</div>
    <div class="cell-4">(4) .cell-4</div>
    <div class="cell-5">(5) .cell-5</div>
    <div class="cell-6">(6) .cell-6</div>
    <div class="cell-7">(7) .cell-7</div>
    <div class="cell-8">(8) .cell-8</div>
    <div>(9)</div>
    <div>(10)</div>
    <div>(11)</div>
    <div>(12)</div>
    <div>(13)</div>
    <div>(14)</div>
    <div>(15)</div>
    <div>(16)</div>
    <div>(17)</div>
    <div>(18)</div>
    <div>(19)</div>
    <div>(20)</div>
    <div>(21)</div>
  </div>
</body>
</html>

위의 code는 style을 gap의 번호로만 표시한 것이고, span과 함께 표시하면 다음과 같다.

  <style>
    .grid-container {
      display: grid;
      grid: 100px 100px 100px 100px 100px / auto auto auto auto auto auto auto; 
      grid-gap: 5px;
    }
    .cell-1 {
      grid-column: 1 / span 2;
    }
    .cell-3 {
      grid-column: 4 / span 3;
    }
    .cell-4 {
      grid-column: 7 / 8;
      grid-row: 1 / span 3;
    }
    .cell-5 {
      grid-row: 2 / span 2;
    }
    .cell-6 {
      grid-column: 2 / span 2;
      grid-row: 2 / span 2;
    }
    .cell-7 {
      grid-column: 4 / span 3;
      grid-row: 2 / span 2;
    }
    .cell-8 {
      grid-column: 1 / span 6;
    }
    div > div {
      background-color: cornflowerblue;
    }    
  </style>

결과는 다음과 같다.

(17)에서 (21)번 cell의 height가 지정되지 않은 것은 처음 cell을 병합하기 전에 grid-container를 선언하여, 병합과정에서 밀린 cell이다. 이런 경우 grid-container를 수정해 주면 된다.

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,

[CSS3] grid system : template

CSS3 2019. 10. 28. 11:18
반응형

css grid의 container를 설정할 때 grid속성 만으로 설정하는 방법이 있으나 이는 row와 column의 특성은 한 번에 설정하는 방식이었다. (참고 : CSS3 grid system : Basic container )

row와 colum을 구별하여 설정하기 위해서는 다음과 같이 grid-template-columns와 grid-template-row 속성을 사용하면 된다.

<!--
 * css-grid-01-basic.html v0.2.0
 * Update: 2019.10.28
 * Author: Developer N
-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>css-grid-01-basic-v0.1.0</title>
  <style>
    .grid-container {
      display: grid;
      grid-template-columns: 10% 20% 150px auto auto;
      grid-template-rows: 100px auto;
      grid-gap: 5px;
    }
    div > div {
      background-color: cornflowerblue;
    }    
  </style>
</head>
<body>
  <div class="grid-container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
    <div>0</div>
  </div>
</body>
</html>

지원 브라우서

 

 

 

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

bootstrap을 통해 grid system에 대한 인지도가 높아진 이후 grid framework이 다수 소개되었고, 개발에 도입하는 빈도도 계속 증가하게 되었다. bootstrap과 같은 종합 framework는 물론이고, grid system만 지원하는 framework까지 그 종류도 다양하게 소개되었다.

이런 인기를 바탕으로 CSS3에서도 css standard로 grid system이 도입되기에 이르렀다.

그 동안 framework의 형태로 사용하던 grid system에 비해 css grid의 장점은 다음과 같다.

  • html에 class의 사용이 간단하다. 특히 반응형으로 제작할 때 class영역에 여러 개의 class명을 나열하지 않고 media query를 통해 선언하면 되기 때문에 가독성을 향상시키기에 충분하다.
  • column의 수를 12개로 제한하지 안아도 된다. 필요한 만큼 column을 만들 수 있다.
  • framework에서 제공되는 필요 없는 css 코드까지 다운로드 할 필요가 없음으로 client의 부하를 줄일 수 있다.

기본 사용법은 다음과 같다.

grid system 전체를 둘러싸게 되는 container를 선언하고 그 내부에 필요한 grid를 생성한다. 마치 <table>로 table영역 전체를 둘러싼 후 그 내부에 row와 col를 선언하는 것과 유사하다.

<!--
 * css-grid-01-basic.html v0.1.0
 * Update: 2019.10.28
 * Author: Developer N
-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>css-grid-01-basic-v0.1.0</title>
  <style>
    .grid-container {
      display: grid;
      /* heigth(필요한 줄 수 만큼) / width(필요한 칸 수 만큼) */
      grid: 120px 50px / auto auto auto auto auto; 
      grid-gap: 5px;
    }
    .grid-container > div {
      background-color: cornflowerblue;
    }    
  </style>
</head>
<body>
  <div class="grid-container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
    <div>0</div>
  </div>
</body>
</html>

지원 브라우저

 

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

CCL은 일정한 조건 하에 창작물의 이용을 허락하는 자유이용 라이센스(License)이다.

 

이용 허가 조건은 다음과 같다.

 

저작자 표시

저작자의 이름, 저작물의 제목, 출처 등 저작자에 관한 정보를 표시하는 조건 하에 자유롭게 이용할 수 있음. ( 문자표기: CC BY )

 

저작자 표시-비영리

저작자를 밝히면 자유로운 이용이 가능 하지만, 영리목적으로 이용할 수 없음. ( 문자표기: CC BY-NC )

 

저작자표시-변경금지

저작자를 밝히면 자유로운 이용이 가능 하지만, 저작물의 변경 없이 사용해야 함. ( 문자표기: CC BY-ND )

 

저작자표시-동일조건변경허락

저작자를 밝히면 자유로운 이용이 가능 하고, 저작물의 변경도 가능하지만, 2차적 저작물에는 원 저작물에 적용된 것과 동일한 라이선스를 적용해야 함. ( 문자표기: CC BY-SA )

저작자표시-비영리-동일조건변경허락

저작자를 밝히면 자유로운 이용이 가능 하고, 저작물의 변경도 가능하지만, 2차적 저작물에는 원 저작물과 동일한 라이선스를 적용해야 하며, 영리목적으로 이용할 수 없음. ( 문자표기: CC BY-NC-SA )

저작자표시-비영리-변경금지

저작자를 밝히면 자유로운 이용이 가능 하지만, 영리목적으로 이용할 수 없으며, 저작물의 변경 없이 그대로 이용해야 함.

( 문자표기: CC BY-NC-ND )

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

자바스크립트 타이머 함수인 setInterval, setTimeout에 대해 알아본다.

setInterval : 일정 시간 주기로 자바스크립트를 반복 실행.

setTimeout : 일정 시간 후에 자바스크립트를 한번 실행.

 

setInterval ( [함수명], [시간] ); 첫 번째 매개변수는 실행할 함수이고 두 번째 매개변수는 반복 주기 시간이다.

다음 예제는 별도로 선언된 test()함수를 일정 시간마다 반복해서 실행하는 예이다.

<script>
  funtion test(){
    // 스크립트
  };
  setInterval(test, 1000);
</script>

다음은 매개변수를 특정 함수가 아닌 무명함수를 사용하는 예이다.

<script>
  setInterval(function() {
    // 1,000msec(1초)마다 반복하여 스크립트 실행.
  }, 1000);
</script>

setTimeout도 사용하는 방법은 동일하다.

 

 

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,
반응형

다음은 date() 메소드를 출력하는 코드와 출력화면 이다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="author" content="Developer N">
  <title>date methode</title>
  <script>
    setInterval(function () {          // 일정한 시간 간격으로 작업을 반복 실행
      var date = new Date();           // Data() 객체 생성
      document.body.innerHTML = date;  // date 전체 요소 출력
    }, 1000);                          // 1초 간격
  </script>
</head>
<body>
  
</body>
</html>
Thu Oct 24 2019 20:14:11 GMT+0900 (한국 표준시)

그런데 위의 화면처럼 연도, 날자, 시간 등을 전부 사용하기 보다는 필요한 부분만 골라서 사용하는 경우가 있다.

이럴경우 각각의 요소들은 어떻게 출력하는지 알아본다.

다음 코드는 년, 월, 일, 시, 분, 초를 각각 분리하여 추출하는 방법을 나타내고 있다.

출력은 편의상 추출된 데이터를 전부 팝쳐서 한번에 출력하고 있다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="author" content="Developer N">
  <title>date methode</title>
  <script>
    setInterval(function () {                     // 일정한 시간 간격으로 작업을 반복 실행
      var date = new Date();                      // Data() 객체 생성
      var currenYear = date.getFullYear();        // Year 추출
      var currenMonth = ( date.getMonth() + 1 );  // Month 추출 
      var currenDate = date.getDate();            // Date 추출
      var currentHours = date.getHours();         // Hours 추출
      var currenMinutes = date.getMinutes();      // Minutes 추출
      var currenSeconds = date.getSeconds();      // Seconds 추출
      var dateAll = date + "<br />" +             // 출력 data 편집
                    currenYear+"년 <br />" + 
                    currenMonth+"월 <br />" +
                    currenDate+"일 <br />" + 
                    currentHours+"시 <br />" + 
                    currenMinutes+"분 <br />" + 
                    currenSeconds+"초 <br />" + 
                    "입니다." ;
      document.body.innerHTML = dateAll;  // dateAll 출력
    }, 1000);                             // 1초 간격
  </script>
</head>
<body>
  
</body>
</html>

출력된 화면은 다음과 같다.

Thu Oct 24 2019 20:52:05 GMT+0900 (한국 표준시)
2019년
10월
24일
20시
52분
5초
입니다.

일부분만 사용할 경우 필요한 부분만 적절하게 편집하여 사용하면 된다.

 

 

 

 

반응형
블로그 이미지

DeveloperN

개발자 n의 개발 이야기(draft)

,