반응형

문서간의 이동을 자유롭게 하는 대표적인 태그가 바로 a태그이다.

 

href="" 속성을 이용해서 링크를 걸고

해당 링크로 페이지를 이동 혹은 새 창으로 페이지를 띄운다.

 

html5 이전에 즉, 컨텐츠 모델 적용 전에

a태그는 단순히 inline 태그였기 때문에

 

a태그 안에 div나 다른 영역들을 넣는 것은 표준에 어긋나는 일이었다.

 

그렇기 때문에 a태그로 감싸는 영역을 만들 수가 없었다.

<style>
   .item{position:relative; width:150px; height:50px;}
   .item a{position:absolute; top:0; left:0; right:0; bottom:0;}
</style>
<body>
   <div class="item">
      <div class="thmb">
         <img src="썸네일.jpg" alt="썸네일">
      </div>
      <div class="txt">
         <p>썸네일에 대한 설명글</p>
      </div>
      <!-- .item 영역에 링크 걸기 -->
      <a href="#">링크</a>
   </div>
</body>

위의 코드 처럼 특정 영역 안에 a태그를 넣고

그 a태그를 absolute로 띄워서 영역을 덮어 주었다.

 

하지만 HTML5에 들어서 태그들이 단순히 인라인, 블록으로 나누는게 아니라

태그의 성격과 특성에 따라 나누게 되었고

 

a태그가 flow content(플로우 콘텐츠)를 품을 수 있게 되었다.

 

그래서 a태그는 단순한 인라인 속성만 담을 수 있는 태그가 아닌

블록 요소까지도 담을 수 있게 되었다.

 

2020/02/12 - [HTML] - HTML5 - Content Model (콘텐츠 모델)

 

HTML5 - Content Model (콘텐츠 모델)

HTML5 이전에는 HTML 태그들을 inline (인라인), block (블록) 이 두 가지의 요소로만 구분을 지었었다. 2020/02/11 - [HTML] - HTML inline(인라인) vs block(블록) 요소 하지만 HTML5에 들어서면서 단순히 인라..

abcdqbbq.tistory.com

 

※ a태그의 속성

속성 설명
href

연결 할 주소를 지정한다. (절대주소, 상대주소, id값 등...)

ex) <a href="https://www.google.com">   -   절대주소

     <a href="/menu/index.html">   -   상대주소

     <a href="#header">   -   아이디값이 header인 곳으로 이동

target

연결 된 주소로 이동할 때 어떤 방법으로 열 지를 지정한다.

- _self : 현재 창에서 링크를 연다 (기본값)

- _blank : 새 창에서 링크를 연다

- _parent : 부모 페이지에서 링크를 연다 (iframe 등의 환경에서 사용)

- _top : 최상위 부모 페이지에서 링크를 연다 (iframe 등의 환경에서 사용)

title

태그에 대한 설명을 표시한다. (마우스 오버시 title에 적힌 텍스트 노출)

ex) <a href="https://www.google.com" title="구글 홈페이지">

 

 

 

 

반응형

'Frontend > HTML' 카테고리의 다른 글

[html 태그] p태그  (0) 2020.03.25
[html 태그] ol, ul 태그 (목록 태그)  (0) 2020.03.24
Meta tag (메타 태그)  (0) 2020.02.13
HTML5 - Content Model (콘텐츠 모델)  (0) 2020.02.12
HTML inline(인라인) vs block(블록) 요소  (0) 2020.02.11
반응형

css 속성들 모든 것들이 다 중요하겠지만

특히나 전체적인 레이아웃을 이해하고 잡아나갈 때 중요한 것이

display 라는 속성이다.

 

이전에 따로 포스팅한 적이 있는 인라인, 블록 요소도

이 display 속성과 관련된 내용이다.

 

 

기본적으로 블록 요소의 특성을 가진 태그들은 (ex. div, p, h1~h6, ul, li...)

display:block의 속성을 기본 값으로 갖고있고

 

인라인 요소의 특성을 가진 태그들은 (ex. a, span, strong, em...)

display:inline의 속성을 기본 값으로 갖는다.

 

1. display 속성 값 (block, inline)

가장 기본적으로 사용되는 속성 값으로는

block, inline 속성이 있다.

 

html의 특성상 기본으로 가지고 있는 특성을

css에서 display라는 속성을 이용해 바꾸고 레이아웃을 잡아나갈 수 있다.

 

예를들어,

a태그를 가지고 사각형의 도형을 만들려할 때,

<style>
   a{width:50px; height:50px; background:#999;}
</style>

<body>
   <a href="#">test1</a>
</body>

위와 같은 소스를 작성하게 되면 아래와 같은 형태로 출력이 될 것이다.

그 이유는 a태그는 기본적으로 display:inline의 특성을 갖고 있기 때문에

inline은 width, height 값을 적용할 수 없기 때문에

 

width, height 값을 주기 위해서는  a태그의 display 속성을 변경해줘야한다.

<style>
   a{display:block; width:50px; height:50px; background:#999;}
</style>

<body>
   <a href="#">test1</a>
</body>

위의 소스 같이 a태그에 display:block 값을 적용하니

아래의 형태로 제대로 출력 되는 것을 볼 수 있다.

 

inline, block에 대한 좀 더 자세한 내용은 아래의 링크에서 확인할 수 있다.

2020/02/11 - [HTML] - HTML inline(인라인) vs block(블록) 요소

 

HTML inline(인라인) vs block(블록) 요소

HTML의 태그 요소는 HTML5 이전에 inline(인라인) 요소와 block(블록) 요소로 구분 되어왔다. HTML5에 들어서는 태그들을 단순히 인라인, 블록으로 구분하는 것이 아닌 Contents Model(컨텐츠 모델)로 각 태그별..

abcdqbbq.tistory.com

 

2. display 속성 값 (inline-block)

inline-block은 말 그래도 inline 속성 + block 속성을 더한 값이라고 생각할 수 있다.

inline 처럼 한 줄로 나열이 되면서

block 처럼 width나 height, margin, padding 등의 값을 줄 수 있다.

<style>
   a{display:inline-block; margin-right:5px; width:50px; height:50px; background:#999;}
</style>

<body>
   <a href="#">test1</a>
   <a href="#">test2</a>
   <a href="#">test3</a>
   <a href="#">test4</a>
</body>

위의 코드 작성시 아래의 화면처럼 출력 된다.

width, height, margin 값을 다 주면서도 일렬로 나열되는 모습을 볼 수 있다.

 

3. display 속성 값 (table)

table 태그를 사용하지 않아도

div나 다른 태그에 table의 속성을 부여해 table 태그처럼 사용할 수 있다.

 

<style>
   .div_table{display:table; border-collapse:collapse; width:400px; table-layout:fixed;}
   .div_table_row{display:table-row;}
   .div_table_cell{display:table-cell; border:1px solid #333; background:skyblue; color:#fff;}
</style>
<body>
   <div class="div_table">
      <div class="div_table_row">
         <div class="div_table_cell">table-cell1</div>
         <div class="div_table_cell">table-cell2</div>
      </div>
   </div>
</body>

위의 코드같이 작성을 하면 아래와 같은 형태로 출력이 된다.

display:table을 사용해서 .div_table 클래스를 table태그와 같게 만들고

display:table-row를 사용해서 .div_table_row 클래스를 tr태그와 같게 만들고

display:table-cell을 사용해서 .div_table_cell 클래스를 td태그와 같게 만들어서

 

table태그를 사용하지 않고 table 형태를 만들 수 있다.

 

* table 관련 display 속성

속성 설명
table <table> 태그의 역할로 사용
table-caption <caption> 태그의 역할로 사용
table-column-group <colgroup> 태그의 역할로 사용
table-header-group <thead> 태그의 역할로 사용
table-footer-group <tfoot> 태그의 역할로 사용
table-row-group <tbody> 태그의 역할로 사용
table-cell <td> 태그의 역할로 사용
table-column <col> 태그의 역할로 사용
table-row
<tr> 태그의 역할로 사용

 

4. 그 밖의 display 속성 값

flex(유동적 레이아웃), grid(그리드 레이아웃), list-item(li와 같이 리스트 표현) 등의 속성이 있다.

 

 

 

반응형
반응형

css를 배우고 실무에서 사용하다 보면 가상 클래스와 가상 요소 선택자라는 단어를 많이 들어볼 것이다.

 

실제로 두 선택자의 차이를 구분하지 못하고 두루뭉술하게 아는 경우가 많다.

 

그래서 가상 클래스와 가상 요소 선택자의 특징을 알아보고 차이점에 대해서 알아보려한다.

 

1. 가상 클래스

먼저 가상 클래스란

실제로 존재하는 요소에 특정 이벤트나 환경에 맞춰 가상으로 클래스를 줘서

css로 제어하는 것을 말한다.

 

예를 들어,

특정 a태그에 마우스를 올리면 색상을 변경하려고 한다.

이때 가상 클래스를 사용하지 않는다고 가정하면

 

a태그에 스크립트로 mouseover 이벤트를 걸어서

해당 a태그에 마우스 오버시 색상이 변경되는 클래스를 주게 만들어 처리를 해야할 것이다.

<style>
   a{color:#333;}
   a.on{color:#fff000;}   /* 마우스 올렸을 때 색상 변경용 클래스 */
</style>
<body>
   <a href="#">Button</a>

   <script>
      $("a").on("mouseover", function(){
         $(this).addClass("on");
      }).on("mouseout", function(){
         $(this).removeClass("on");
      });
   </script>
</body>

이처럼 하게되면 불필요한 스크립트나 클래스가 들어가게 된다.

 

 

이러한 상황에선 마우스 오버라는 이벤트 상황에 맞춰

실제로 존재하는 a태그에 가상으로 :hover라는 클래스를 줘서

간단하게 css로 색상을 제어할 수 있다.

<style>
   a{color:#333;}
   a:hover{color:#fff000;}   /* 마우스 올렸을 때 가상 클래스 :hover 사용해 색상 조정 */
</style>
<body>
   <a href="#">Button</a>
</body>

이처럼 css 가상 선택자만으로 간단하게 제어를 할 수 있다.

가상 클래스 설명
:active 해당하는 요소를 활성화 했을 때 즉, 클릭한 상태일 때 스타일 부여
:checked input 태그의 type이 checkbox나 radio일 경우 해당 태그가 체크 되어있을 때 스타일 부여
:disabled

선택, 클릭, 입력 등을 할 수 있는 요소에 비활성을 했을 때 스타일 부여

ex) input, button, a태그

:enabled

:disabled의 반대로 활성화 되어있는 요소에 스타일 부여

:empty 자식 요소가 없는 태그에 스타일 부여
:focus input 태그에 focus를 한 상태일 때 스타일 부여
:hover 해당 요소에 마우스를 올렸을 때 스타일을 부여
:link 미방문 링크에 스타일 부여
:visited 이미 방문한 링크에 스타일 부여
:not(selector)

(selector)를 제외한 나머지 요소들에 스타일 부여

ex) .main p:not(.cmt){color:red}

(.main 클래스 하위에 있는 p태그 중 .cmt 태그를 제외하고 color:red를 적용)

:read-only (읽기전용) input 태그에 readonly 속성을 지정한 요소에 스타일 부여
:required (필수입력) input 태그에  required 속성을 지정한 요소에 스타일 부여
:first-child

형제 요소 중 첫 번째 자식요소(맨 앞)에 스타일 부여

ex) .main div:first-child{color:red;}

(.main 클래스 자식 요소인 div 중 첫 번째 div에 color:red 적용)

 

* 만약 div 이전 형제요소 중 다른 태그가 있으면 스타일 적용이 어렵다.

<div class="main">

   <p>test1</p>

   <div>test2</div>

</div>

.main div:first-child{color:red}   ->  아무런 스타일 변화가 없다.

:first-of-type

형제 요소 중 해당하는 태그의 제일 첫 요소에 스타일 부여

ex)

<div class="main">

   <p>test1</p>

   <div>test2</div>

</div>

.main div:first-of-type{color:red}  ->  div태그 (test2)에 color:red가 적용된다.

:last-child 형제 요소 중 가장 마지막 요소에 스타일 부여
:last-of-type 형제 요소 중 해당하는 태그의 가장 마지막 요소에 스타일 부여
:nth-child(n)

n번째 요소에 스타일 적용,

n에 숫자 뿐만 아니라 even(짝수), odd(홀수), 2n+1 등 특정 수식을 줄 수 있다.

:nth-last-child(n) 뒤에서 n번째 요소에 스타일 부여
:only-child

형제 요소 중 유일하게 있는 요소에 스타일 부여 (다른 형제 요소가 있으면 스타일 적용x)

ex)

<div class="main">

   <div>test1</div>

   <p>test2</p>

</div>

 

.main div:only-child{color:red}  ->  div의 형제에 p태그가 있으므로 스타일 적용 x

:only-of-type

형제 요소 중 같은 유형의 형제가 없이 유일한 요소에 스타일 부여

 

ex)

<div class="main">

   <div>test1</div>

   <p>test2</p>

</div>

 

.main div:only-child{color:red}  ->  형제 요소 중 div는 하나기 때문에 스타일 적용

 

 

2. 가상요소

실제로 존재하는 요소에 가상으로 클래스를 주던 가상클래스와는 다르게

실제로 존재하지 않는 가상의 요소를 만들어 스타일을 주는 것을 말한다.

 

보통 콜론(:)을 사용하지만 가상 클래스와의 구분을 하기 위해

이중콜론(::)의 사용을 권장하고 있다.

 

(이중 콜론(::)은 ie9 이상 부터 지원한다.)

 

가상요소 설명
::before

지정된 요소의 앞에 가상의 요소 생성

<div class="main">

   <p>test1</p>

</div>

 

.main p:before{content:"- "}   ->  - test1로 출력된다. (- 표시를 before로 삽입)

::after 지정된 요소의 뒤에 가상의 요소 생성
::first-letter 지정된 요소의 첫 번째 글자에 스타일 적용
::first-line 지정된 요소의 첫 번째 줄에 스타일 적용

 

 

 

반응형
반응형

문서에 CSS를 적용한 후에 화면을 확인했을 때

 

내가 원하던 화면이 나오지 않은 경우가 있다.

 

<head>
   <style>
       section .dtl p{color:blue}
       .txt{color:red}
   </style>
</head>
<body>
   <section>
      <div class="dtl">
         <p>Test Text01</p>
         <p class="txt">Test Text02</p>
      </div>
   </section>
</body>

예를 들어 위의 소스와 같이 

section 영역 아래 .dtl 태그 자식요소로 있는 p 태그에 공통으로 파란색 컬러값을 주고

 

css를 조금 더 깔끔하게 쓰기 위해 다른 색상을 주고 싶은 p태그에 .txt 클래스를 준 뒤

.txt클래스에 빨간색 컬러값을 주면 출력되는 화면은

 

위의 화면과 같이 "Test Test01"과 "Test Test02" 둘 다 파란색의 컬러값이 출력이 될 것이다.

 

분명 원하던 색상은 "Test Test02" 영역이 빨간색으로 출력이 되어야 하지만 그렇게 되지 않았다.

 

이러한 문제는 css의 우선순위에 대해 고려를 하지 않아 생긴 문제이다.

 

 

1. CSS 우선순위

위의 예제를 보면 분명 .txt라는 클래스를 사용해서 p태그에 특정 색상을 적용했지만

적용되지 않았다.

 

그 이유는 .txt 값 이전에 .section .dtl p의 스타일 값 때문이다.

 

즉, .section .dtl p 에 적용된 스타일이 더 우선순위가 높기 때문이다.

 

★ css 우선순위 적용되는 스타일 (1 ~7 순위)

1.  !important
2.  <div style=""> (인라인 스타일)
3.  id (아이디값)
4.  class (클래스)
5.  :pseudo-class (가상 선택자)
6.  tag (일반 태그)
7.  * (전체 선택자)

 

* css의 우선순위표 (css를 입력하는 상황에 따라 점수로 계산을 한다.)

  1점 10점 100점 총점
!important 무조건 1등
#content (아이디값) 0 0 100 100
.section (클래스) 0 10 0 10
:fisrt-child (가상선택자) 0 10 0 10
p (태그) 1 0 0 1
p#content (아이디 + 태그) 1 0 100 101
#content.section (아이디 + 클래스) 0 10 100 110
p.section (클래스 + 태그) 1 10 0 11
#content .section (아이디 + 클래스) 0 10 100 110
ul li a (태그 + 태그 + 태그) 3 0 0 3
p:last-child (가상선택자 + 태그) 1 10 0 11
* (전체 선택자) 0 0 0 0

 

2. 실제 적용

아까 맨위에서 적용했던 "Test Text01", "Test Text02" 영역의 컬러값 적용 문제는

위의 CSS 우선순위 영역으로 확인해볼 때

section .dtl p{color:blue}  /* 클래스1 + 태그2 = 12점 */
.txt{color:red} /* 클래스1 = 10점 */

위와 같이 우선순위상 "Test Text02"의 색상값이 적용되는 p태그는 10점의 점수로

section .dtl p 영역의 스타일 값에 적용된 우선순위에서 밀리기 되므로 

color:red 스타일이 적용이 되지 않았다.

 

이를 해결하기 위해서는 .txt에 적용한 스타일의 우선순위를 높여주거나

.section .dtl p에 적용된 우선순위를 낮추는 방법이 있겠다.

section p{color:blue}   /* 태그2 = 2점 */
.txt{color:red}   /* 클래스1 = 10점 */

3. 동일한 우선순위일 때

클래스나 태그 등 동일한 우선순위의 점수를 가지고 있는 경우엔

더 뒤쪽에 스타일이 작성된 스타일이 적용되게 된다.

 

<head>
   <style>
       section .dtl p{color:blue}  /* 클래스1 + 태그2 = 12점 */
       .section div p{color:red}   /* 클래스1 + 태그2 = 12점 */
   </style>
</head>
<body>
   <section class="section">
      <div class="dtl">
         <p>Test Text01</p>
         <p>Test Text02</p>
      </div>
   </section>
</body>

(더 아래쪽에 적용한 스타일인 color:red가 적용되었다.)

 

 

 

반응형
반응형

 

Sass는 CSS 전처리기로써

CSS의 한계나 단점을 보완하기 위해 만들어진 CSS 확장 언어이다.

 

짧은 내용의 CSS일 경우엔 크게 문제가 없지만

방대한 양의 CSS를 다루게 되면 내용을 알아보는 것이 힘들어지고

가독성이 많이 떨어지기 때문에 Sass는 추가적인 기능을 통해 이러한 단점을 보완한다.

 

Sass의 기능 및 도구

1. 변수

2. 조건문, 반복문

3. Mixin

4. 연산자

5. Extend

6. Nesting

7. Import

 

※ 각 기능별 상세 내용은 추가로 포스팅 할 예정이다.

 

 

1. Sass의 설치

Sass는 두 가지 버전이 존재한다. LibSass와 Ruby Sass가 그 종류이다.

 

두 버전은 2014년도에 각 버전의 동기화에 합의했기 때문에 대부분의 호환성을 보장한다.

두 버전의 호환성 문제는 

http://sass-compatibility.github.io/ 페이지에서 확인이 가능하다.

 

호환성이 보장되기 때문에 두 버전중 본인의 개발환경에 맞춰서 알맞은 버전을 선택하면 된다.

Ruby 환경에서 개발을 한다면 Ruby Sass를, Node.js 환경에서 개발을 진행한다면

LibSass로 선택해서 사용하면 된다.

 

특별히 고려할 환경이 없다면 가장 보편적으로 사용하는 Ruby 버전으로 설치하면 되겠다.

 

2. Sass와 SCSS의 차이

Sass는 크게 두 가지 형태의 구문을 지원한다.

하나는 Sass, 또 하나는 SCSS이다.

 

Sass의 경우 중괄호와 세미콜론을 대신해 들여쓰기를 사용해 구문을 분리하고 작성한다.

 

그리고 SCSS의 경우 CSS와 굉장히 유사하게

중괄호와 세미콜론을 사용하는 문법이다.

 

각 문법별 작성 방법은 아래에서 살펴보도록 하겠다.

 

Sass의 확장자 : .sass

SCSS의 확장자 : .scss

/* Sass */
.main
   .side
      display:block
      text-align:center
      p
        color:#333
      a
        display:inline-block
        font-weight:bold


/* SCSS */
.main{
   .side{
      display:block; text-align:center;
      p{color:#333}
      a{display:inline-block; font-weight:bold;}
   }
}

위 처럼 각 문법의 사용이 다르다.

 

두 문법 중 주로 포스팅에 사용할 문법은 SCSS 문법이다.

그 이유는 SCSS 문법이 CSS와 더 높은 호환성을 보이고 가독성도 좋기 때문이다.

 

추가적으로 Sass 공식 레퍼런스에서도 SCSS문법을 기준(Sass 3.0 부터)으로 설명하고 있기 때문에

SCSS 문법을 위주로 사용할 예정이다.

 

3. CSS vs Sass 문법(SCSS)의 차이

/* CSS */
.main .side{display:block; text-align:center;}
.main .side p{color:#333;}
.main .side a{display:inline-block; font-weight:bold;}


/* SCSS */
.main{
   .side{
      display:block; text-align:center;
      p{color:#333}
      a{display:inline-block; font-weight:bold;}
   }
}

위의 예시를 통해 CSS, Sass 문법의 작성법과 차이점을 확인해보도록 하겠다.

 

앞서 얘기한 것과 같이 CSS는 .main이라는 클래스의 하위에 있는 .side, p, a에 스타일을 주기위해서

.main 클래스를 매번 작성을 해줘야한다.

 

이 방법은 번거로울뿐만 아니라 많은 뎁스를 타고 들어가게 되면 가독성이 상당히 떨어지게 된다.

/* CSS */ 
.main .side .dtl_inf .bt_area .dsc{font-size:11px;}
.main .side .dtl_inf .bt_area a{float:right;}
.main .side .dtl_inf .bt_area a strong{font-size:15px;}
.main .side .dtl_inf .bt_area a span{display:block;}

/* SCSS */
.main{
   .side{
      .dtl_inf{
         .bt_area{
            a{
              float:right;
              strong{font-size:15px;}
              span{display:block;}
            }
            .dsc{font-size:11px;}
         }
      }
   }
}

Sass문법의 경우 .main 클래스나 .side 클래스와 같이 공통의 부모 클래스의 경우

한 번만 작성을 해주면 하위에 있는 요소들은 그 안에서 제어가 가능하다.

 

이처럼 어떤 요소가 어느 부모 요소 안에 있는지를 단번에 확인이 가능하다.

 

 


참고

https://sass-lang.com/documentation 

https://poiemaweb.com/sass-basics

 

반응형

'Frontend > Sass (SCSS)' 카테고리의 다른 글

[Sass 특징] @at-root  (0) 2020.05.06
[Sass 특징] Sass 데이터 타입(값) 소개  (0) 2020.04.02
[Sass 특징] @mixin 과 @include  (0) 2020.03.27
[Sass 특징] Nesting (중첩)  (0) 2020.03.19
[Sass 특징] 변수  (0) 2020.03.17
반응형

앞서 HTML 소스가 있는 문서에 CSS를 적용하는 3가지 방법에 대해 살펴 보았다.

 

2020/02/18 - [CSS] - CSS 적용을 위한 3가지 방법

 

인라인, 내부스타일, 외부스타일 적용 방법 외에 추가로

css를 적용하는 방법이 바로 @import 방식이다.

 

@import 방식은 다른 스타일 시트에서 또 다른 스타일을 가져올 때 사용한다.

 

예를 들면 default.css 라는 파일을 외부 스타일 방식을 적용해서

문서에 적용시킨 후에 해당 css파일 안에 또 다른 css를 불러 오는 방법이다.

 

 

1. @import 적용 방법

 

1. 문서에 default.css 파일 적용

<link rel="stylesheet" href="/css/default.css">

 

2. default.css 파일 내에 header.css 를 @import (문자형식으로 적용하거나 url 형식으로 적용)

@charset "utf-8";

@import "header.css";      /* 문자 형식 */
@import url("header.css"); /* url 형식 */

 

2. @import 방식 vs link 방식(외부 스타일)

@import 방식과 link 방식 중 어떤 방법이 더 효율적일까를 고민해보았다.

 

결론부터 말하자면 link 방식 (외부 스타일) 방식이 더 효율 적이다.

 

@import 방식의 경우 @import 된 css들을 직렬 로딩 방식으로 불러오고

 

외부 스타일 방식의 경우 병렬 로딩 방식으로 css를 불러온다

 

쉽게 예를 들자면

charset "utf-8";

@import "test1.css";  /* 1번째 */
@import "test2.css";  /* 2번째 */
@import "test3.css";  /* 3번째 */

위와 같은 @import 방식의 경우 test1.css를 불러온 뒤에 test2.css, test3.css를 차례로 불러온다.

 

즉, css를 하나하나 순차적으로 불러오기 때문에(직렬 로딩)

css의 양이 얼마 되지 않는다면 크게 상관이 없겠지만

css의 양이 방대해진다면 페이지 로딩속도가 현저히 느려질 것이다.

 

 

<link rel="stylesheet" href="test1.css">
<link rel="stylesheet" href="test2.css">
<link rel="stylesheet" href="test3.css">

반면 link 방식 (외부 스타일 방식)의 경우 

test1.css와 test2.css, test3.css가 동시에 로딩하여 불러오기 때문에(병렬 로딩)

 

페이지 로딩 속도가 @import 방식에 비해 빠르고 효율적이다.

 

3. @import 방식의 Edge 브라우저 적용 문제

@import 방식은 익스플로어나 크롬, 파이어폭스 등 다른 브라우저에서는

별 문제 없이 잘 적용을 할 수 있지만

 

엣지(Edge) 브라우저에서는 @import 한 css 내용을 문서에 적용시키지 못하는 버그가 있다.

 

 

로딩 문제나 Edge 브라우저 버그 문제 등을 생각해본다면

특별한 경우가 아니라면 @import 방식이 아닌 외부 스타일 방식으로 css를 적용하는 편이 좋을 것 같다.

 

 

 


참조

https://www.w3schools.com/cssref/pr_import_rule.asp

 

CSS @import Rule

CSS @import Rule Example Import the "navigation.css" style sheet into the current style sheet: @import "navigation.css"; /* Using a string */ or @import url("navigation.css"); /* Using a url */ More examples below. Definition and Usage The @import rule all

www.w3schools.com

 

반응형

'Frontend > CSS' 카테고리의 다른 글

[css 속성] display (block, inline, inline-block, table)  (0) 2020.03.06
가상 클래스 vs 가상 요소  (0) 2020.03.06
CSS 우선순위  (0) 2020.03.04
CSS Reset (초기화)  (0) 2020.02.19
CSS 적용을 위한 3가지 방법  (0) 2020.02.18
반응형

각 브라우저마다 설정 되어있는 기본 스타일이 다 다르다.

 

이러한 점을 개선하기 위해 CSS를 작성할 때, 초기화를 시킨다.

 

기본적으로 태그가 가지고 있는 간격이나 색상 등을 통일 시키는 작업이다.

 

 

CSS 초기화를 위해 사용하는 몇몇 Reset css를 소개해보려고 한다.

 

아래의 Reset css를 본인이 필요한 부분을 추가하고 보완하면서

필요에 맞게 수정해서 사용하면 되겠다.

 

1. Eric Meyer’s “Reset CSS” 2.0

Eric Meyer 라는 분이 만든 Reset css 이다.

매우 기본적인 내용들을 담고 있다.

 

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

 

2. Normalize.css 1.0

가장 기본적인 Eric Meyer의 reset.css 와는 다르게

세부적인 항목을 초기화 시키고 약간의 스타일도 가미 되어있는 css이다.

 

/*! normalize.css v3.0.2 | MIT License | git.io/normalize */

/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
  font-family: sans-serif; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove default margin.
 */

body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */

/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */

audio,
canvas,
progress,
video {
  display: inline-block; /* 1 */
  vertical-align: baseline; /* 2 */
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
 */

[hidden],
template {
  display: none;
}

/* Links
   ========================================================================== */

/**
 * Remove the gray background color from active links in IE 10.
 */

a {
  background-color: transparent;
}

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */

a:active,
a:hover {
  outline: 0;
}

/* Text-level semantics
   ========================================================================== */

/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */

abbr[title] {
  border-bottom: 1px dotted;
}

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */

b,
strong {
  font-weight: bold;
}

/**
 * Address styling not present in Safari and Chrome.
 */

dfn {
  font-style: italic;
}

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/**
 * Address styling not present in IE 8/9.
 */

mark {
  background: #ff0;
  color: #000;
}

/**
 * Address inconsistent and variable font size in all browsers.
 */

small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

/* Embedded content
   ========================================================================== */

/**
 * Remove border when inside `a` element in IE 8/9/10.
 */

img {
  border: 0;
}

/**
 * Correct overflow not hidden in IE 9/10/11.
 */

svg:not(:root) {
  overflow: hidden;
}

/* Grouping content
   ========================================================================== */

/**
 * Address margin not present in IE 8/9 and Safari.
 */

figure {
  margin: 1em 40px;
}

/**
 * Address differences between Firefox and other browsers.
 */

hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0;
}

/**
 * Contain overflow in all browsers.
 */

pre {
  overflow: auto;
}

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

/* Forms
   ========================================================================== */

/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */

/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */

button,
input,
optgroup,
select,
textarea {
  color: inherit; /* 1 */
  font: inherit; /* 2 */
  margin: 0; /* 3 */
}

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */

button {
  overflow: visible;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */

button,
select {
  text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button; /* 2 */
  cursor: pointer; /* 3 */
}

/**
 * Re-set default cursor for disabled elements.
 */

button[disabled],
html input[disabled] {
  cursor: default;
}

/**
 * Remove inner padding and border in Firefox 4+.
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */

input {
  line-height: normal;
}

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */

input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
 *    (include `-moz` to future-proof).
 */

input[type="search"] {
  -webkit-appearance: textfield; /* 1 */
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box; /* 2 */
  box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Define consistent border, margin, and padding.
 */

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */

legend {
  border: 0; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */

textarea {
  overflow: auto;
}

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */

optgroup {
  font-weight: bold;
}

/* Tables
   ========================================================================== */

/**
 * Remove most spacing between table cells.
 */

table {
  border-collapse: collapse;
  border-spacing: 0;
}

td,
th {
  padding: 0;
}

 

3. 그 밖의 초기화 CSS

- HTML5 Doctor CSS Reset : Eric Meyer의 Reset css를 기반으로 작성

https://cssreset.com/scripts/html5-doctor-css-reset-stylesheet/

 

- Yahoo! (YUI 3) Reset CSS : Yahoo에서 만든 Reset css

https://cssreset.com/scripts/yahoo-css-reset-yui-3/

 

 

 


 

참고 사이트

 

 

https://cssreset.com/

 

CSS Reset - 2019's most common CSS Resets to copy/paste, with documentation / tutorials

This short post talks about creating a stylish focus effect on input text elements using a pure CSS solution. The animation shows a colored bottom border gradually appearing on the input text focus and completing the animation in half of […] Read Article A

cssreset.com

 

반응형
반응형

HTML 문서를 작성하고 스타일을 입히기 위해선

CSS를 적용해야 한다.

 

CSS를 적용하는 방법에는 크게 3가지가 있다.

 

1. 인라인 방식

태그에 직접 style="" 속성을 사용하여 스타일을 적용하는 방법이다.

 

<div style="text-align:center;">
   <p style="font-size:13px;">Hello World</p>
   <span style="color:#999; font-size:11px;">안녕하세요</span>
</div>

 

 

2. 내부 스타일 방식 (style태그)

<style> 태그를 사용해서 css를 작성한다.

주로 <head></head> 태그 안에 작성한다.

 

그리고 HTML5 이전엔 <style> 태그에 type 속성을 사용하였다.

<style type="text/css"> 라는 style 태그가 text/css의 타입으로 작성 되었다는 명시가 필요했지만

HTML5 이후론 더 이상 필요하지 않다.

 

<head>
   <style>
      div{text-align}
      p{font-size:13px;}
      span{color:#999; font-size:11px;}
   </style>
</head>

 

 

3. 외부 스타일 방식 (link태그)

<head>태그 안에 <link> 태그를 사용해서 별도의 css파일을 불러온다.

속성 설명
rel

연결된 문서와의 관계

type

연결된 문서의 타입

href

연결된 문서의 위치 (css파일의 위치)

 

<head>
   <link rel="stylesheet" type="text/css" href="./css/layout.css">
</head>

 

반응형

'Frontend > CSS' 카테고리의 다른 글

[css 속성] display (block, inline, inline-block, table)  (0) 2020.03.06
가상 클래스 vs 가상 요소  (0) 2020.03.06
CSS 우선순위  (0) 2020.03.04
CSS 적용을 위한 또 다른 방법, @import  (0) 2020.03.03
CSS Reset (초기화)  (0) 2020.02.19
반응형

Meta (메타) 태그에 사용할 수 있는 속성은 4가지가 있다.

 

- http-equiv

웹 브라우저가 서버에 명령을 내리는 속성이다.

해당 속성이 명시되어 있으면 반드시 content 속성도 함께 명시되어야한다.

 

● http-equiv 속성의 주요 속성 값

속성 값 설명
content-language

문서 컨텐츠들의 언어를 명시한다.

*해당 속성값은 적절하지 않은 속성값으로, <html> 속성의 lang 속성으로 대체해서 사용해야한다.

 

ex) <html lang="ko">

content-type 문서의 인코딩 선언을 명시한다.
default-style

우선 적용할 스타일을 명시한다. 

해당 속성 값을 적용하려면 우선시 하려는 스타일 값(<link>)의 title값과 해당 메타 태그의 content="" 의 값을 일치 시켜야한다.

 

ex) <meta http-equiv="default-style" content="important style">

     <link rel="stylesheet" href="..." title="important style">

refresh

시간을 지정해 해당 문서 자체를 새로고침 하거나 다른 페이지로 새로고침을 한다.

content="" 안의 숫자는 초 단위를 나타낸다.

 

ex)

- 문서 자체 새로고침 (5분 마다) : <meta http-equiv="refresh" content="300">

- 다른 페이지로 새로고침 : <meta http-equiv="refresh" content="300; url=index2.html">

x-ua-compatible

익스플로어(ie)로 문서를 접근시 어떤 버전으로 렌더링을 할지 정하는 호환성을 위해 사용된다.

content="" 안에 ie=8 라고 입력하면 ie8 버전의 렌더링 방식으로 문서가 열린다.

보통은 ie=edge를 사용한다. (최신버전)

 

ex) <meta http-equiv="X-UA-Compatible" content="IE=Edge">

 

- charset

문자 인코딩을 선언하는 속성이다. (문자 인코딩은 대소문자 구문없이 사용한다.)

 

HTML4.01 : <meta http-equiv="content-type" content="text/html; charset=문자인코딩">

HTML5    : <meta charset="문자인코딩">

문자 인코딩의 경우 'euc-kr', 'iso-8859' 등의 여러 코드가 있지만

 

기본적인 인코딩 방식은 'utf-8'을 사용한다.

 

- content

meta 태그의 내용을 나타내는 속성이다.

http-equiv 속성과 name 속성과 함께 사용된다.

 

- name

meta 태그가 어떤 정보나 내용을 담고있는지 나타내는 속성이다. (메타 데이터의 이름을 명시)

반드시 content 속성과 함께 명시되어야 한다.

 

● name 속성의 주요 속성 값

속성 값 설명
application-name

웹 페이지가 나타내는 웹 어플리케이션의 이름을 나타낸다.

(모바일에서 '홈 화면에 추가' 기능을 사용할 때의 저장되는 이름을 정의한다.)

 

ex) <meta name="application-name" content="app name">

author

문서의 작성자를 나타낸다.

(필수 항목은 아니며 검색 엔진 최적화(SEO)와 관련은 없다.)

★description

문서에 대한 설명을 나타낸다.

(검색 엔진 최적화(SEO)에는 큰 영향을 주지 않는다는 의견이 있지만

구글에서 검색을 했을 때, 검색 결과에 표시되는 설명 영역이 해당 태그의 content="" 값이다.

그렇기 때문에 페이지 설명을 위해서라도 올바른 내용을 작성하는 것은 중요하다.)

generator 문서를 작성할 때 사용한 도구(소프트웨어)를 나타낸다.
keywords

문서와 관련된 키워드를 나타낸다.

(예전엔 키워드 값을 검색 엔진에서 많이 고려를 했으나 최근에는 키워드 값을 고려하지 않는다.)

viewport

문서를 화면에 어떻게 표시할 지에 대해 정의한다.

모바일이나 태블릿 브라우저에서 화면의 크기를 조정하거나 확대율을 조정할 수 있다.

 

ex) <meta name="viewport" content="width=device-width, initial-scale=1.0">

 

 

 

★ description 속성 값의 content="" 값이 위의 표시된 영역처럼 구글 검색 결과에 노출된다

 

 


참고 사이트

- https://html.spec.whatwg.org/multipage/semantics.html#the-meta-element

- https://myseolabo.com/seo/meta-tag/

 

 

 

 

반응형

'Frontend > HTML' 카테고리의 다른 글

[html 태그] ol, ul 태그 (목록 태그)  (0) 2020.03.24
[html 태그] a태그  (0) 2020.03.06
HTML5 - Content Model (콘텐츠 모델)  (0) 2020.02.12
HTML inline(인라인) vs block(블록) 요소  (0) 2020.02.11
HTML 5이란?  (0) 2020.02.10
반응형

HTML5 이전에는 HTML 태그들을 inline (인라인), block (블록) 이 두 가지의 요소로만

구분을 지었었다. 

 

2020/02/11 - [HTML] - HTML inline(인라인) vs block(블록) 요소

 

하지만 HTML5에 들어서면서 단순히 인라인 vs 블록의 구분이 아닌

태그의 특성에 따라 Metadata, Flow, Sectioning, Heading, Phrasing, Embedded, Interactive로 

총 7개의 카테고리로 분류한다.

 

 

참고 : https://www.w3.org/TR/html53/dom.html

 

* 위의 이미지 처럼 Interative 영역과 Phrasing 영역 처럼 겹치는 영역들은 특정 태그가 Interative의 특성과 Phrasing의 특성을 두루 갖춘 태그이다.

 

1. Metadata Content (메타 데이터 컨텐츠)

메타 데이터 컨텐츠는 문서의 표현이나 동작을 설정하거나, 다른 문서와의 관계를 설정하고

다른 문서에 정보를 전달하는 컨텐츠이다.

 

base, command, link, meta, noscript, script, style, title

2. Flow Content (플로우 컨텐츠)

플로우 컨텐츠는 문서나 Application의 본문 (body태그) 안에서 사용되는 컨텐츠이다.

 

a, abbr, address, article, aside, audio, b, bdi, bdo, blockquote, br, button, canvas,
cite, code, command, datalist, del, details, dfn, div, dl, em, embed,
fieldset, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, i,
iframe, img, input, ins, kbd, keygen,
label, map, mark, math, menu, meter, nav, noscript, object, ol, output, p, pre,
progress, q, ruby, s, samp, script, section, select, small, span, strong,
sub, sup, svg, table, textarea, time, ul, var, video, wbr, text

- area (map 요소의 자식 요소인 경우)
- style (scoped 속성이 있으면)

3. Sectioning Content (구획 컨텐츠)

Headings Content와 footer (<footer>)를 정의하는 컨텐츠이다.

 

article, aside, nav, section

4. Heading Content (제목 컨텐츠)

Sectioning Content의 header를 정의하는 컨텐츠이다.

 

h1, h2, h3, h4, h5, h6

5. Phrasing Content (구문 컨텐츠)

텍스트와 텍스트가 포함된 마크업을 정의하는 컨텐츠이다.

 

abbr, audio, b, bdi, bdo, br, button, canvas, cite, code, command, datalist,
dfn, em, embed, i, iframe, img, input,
kbd, keygen, label, mark, math, meter, noscript, object, output, progress, q, ruby, s, samp, 
script, select, small, span, strong, sub, sup, svg, textarea, time,
var, video, wbr, text

- a (구문만을 포함하는 경우)
- area (map 요소의 자식요소인 경우)
- del (구문만을 포함하는 경우)
- ins (구문만을 포함하는 경우)
- map (프레이징 콘텐츠만을 포함하는 경우)

 

6. Embedded Content (임베디드 컨텐츠)

다른 리소스나 컨텐츠를 문서에 삽입하는 컨텐츠이다.

 

audio, canvas, embed, iframe, img, math, object, svg, video

 

7. Interactive Content (인터렉티브 컨텐츠)

사용자와의 상호작용을 위해 사용되는 컨텐츠이다.

 

a, button, details, embed, iframe, select, textarea, keygen, label

- audio (controls 속성이 있으면)
- img (usemap 속성이 있으면)
- input (type 속성이 hidden 상태가 아니면)
- menu (type 속성이 toolbar 상태면)
- object (usemap 속성이 있으면)
- video (controls 속성이 있으면)

 

 

 

반응형

'Frontend > HTML' 카테고리의 다른 글

[html 태그] a태그  (0) 2020.03.06
Meta tag (메타 태그)  (0) 2020.02.13
HTML inline(인라인) vs block(블록) 요소  (0) 2020.02.11
HTML 5이란?  (0) 2020.02.10
Doctype 이란?  (0) 2020.02.07
반응형

HTML의 태그 요소는 HTML5 이전에 inline(인라인) 요소와 block(블록) 요소로 구분 되어왔다.

 

HTML5에 들어서는 태그들을 단순히 인라인, 블록으로 구분하는 것이 아닌

Contents Model(컨텐츠 모델)로 각 태그별 사용되는 역할에 따라 분류를 한다.

 

Contents Model(컨텐츠 모델)에 대해 알아보기 전 인라인, 블록 요소들의 구분은

어떻게 지을 수 있는지에 대해 알아보려고 한다.

 

 

1. 인라인 요소 (inline element)

- 인라인 요소는 다른 인라인 요소를 포함할 수 있다

<span>
	Hello <storng>World</strong>   (o)
</span>

- 인라인 요소는 다른 블록 요소를 포함할 수 없다.

<span>
	Hellow <p>World</p>   (x)
</span>

- 인라인 요소는 너비나 높이 값을 줄 수 없다. (width, height)

- 대표적인 태그로는 <span>, <a>, <strong>, <em> 태그 등이 있다.

- 그 외의 인라인 태그 : abbr, acronym, b, bdo, big, br, button, cite, code, dfn, i, img, input, kbd, label, map, object, q, samp, small, script, select, span, sub, sup, textarea, tt, var

 

2. 블록 요소 (block element)

- 블록 요소는 인라인 요소와 다른 일부 블록요소를 포함할 수 있다.

<div>
   <p>Hello</p>
   <strong>World</strong>
</div>

- 예외의 상황으로 <p> 태그에는 또 다른 <p>태그 뿐만 아니라 다른 블록 요소들이 들어갈 수 없다.

<p>
   <div>Hello</div>   (x)
   <strong>World</strong>   (o)
</p>

- 블록 요소는 너비나 높이 값을 줄 수 있다.

- 대표적인 태그로는 <div>, <p>, <h1~h6>, <ul> 등의 태그가 있다.

- 그 외의 블록 태그 : address, article, aside, audio, blockquote, canvas, dt, dd, dl, fieldset, figcaption, figure, footer, form, header, hgroup, hr, noscript, ol, li, output, pre, section, table, video

 

 

3. 인라인 요소와 블록 요소가 차지하는 영역

인라인 요소와 블록 요소의 영역이 어떻게 잡히는지에 대한 이미지

<div>
   <span>inline</span>
   <span>inline</span>
   <span>inline</span>
</div>

<div>
   <div>block</div>
   <div>block</div>
   <div>block</div>
</div>

위의 이미지 및 소스와 같이 인라인 요소는 태그별로 영역이 나란히 나열된다.

 

그 반대로 블록 요소의 경우 각 요소별로 너비를 100%씩 차지하여 아래로 떨어지면서 나열되게 된다.

 

 

반응형

'Frontend > HTML' 카테고리의 다른 글

[html 태그] a태그  (0) 2020.03.06
Meta tag (메타 태그)  (0) 2020.02.13
HTML5 - Content Model (콘텐츠 모델)  (0) 2020.02.12
HTML 5이란?  (0) 2020.02.10
Doctype 이란?  (0) 2020.02.07
반응형

HTML5는 HTML4.01의 상위 버전으로 이전에 비해 상당히 간결하고 명확해졌다.

 

2014년 10월 28일, 차세대 웹 표준으로 확정이 되었고 단순 텍스트, 링크의 표시가 아닌

오디오, 비디오 등의 멀티미디어와 여러가지 폭 넓은 처리를 할 수 있도록 표현한다. 

(ActiveX 등의 별도의 플러그인을 이용하지 않고 HTML5 태그만으로 자체적으로 처리할 수 있다.)

 

인터넷 익스플로러의 경우 9부터 일부 태그를 지원하고 10에서 거의 대부분의 태그를 지원한다.

ie8 이하를 지원하려면 html5shiv.js 라는 JavaScript 를 이용하면 된다.

 

 

1. HTML5에서 달라진 점

HTML5에서는 이전과는 다르게 시맨틱 웹을 중요시한다.

시맨틱 웹을 사용하기 위해 HTML5에선 시맨틱 태그를 사용한다.

 

 

1-1. 레이아웃 태그의 추가

단순히 레이아웃 구조를 짤 때 <div>로만 겹겹이 쌓는 것이 아니라

용도와 상황에 따라 레이아웃 관련된 태그를 사용하여 페이지를 조금 더 시맨틱하게 (의미있게) 작성할 수 있다.

 

아래의 코드처럼 레이아웃 구조를 div만 이용해서 처리를 하게되면

관련 영역에 대한 의미를 확실하게 알 수 없을 뿐만 아니라

소스가 복잡해질 경우 소스를 확인하는데에 어려움이 있을 것이다.

 

<div id="header">Header 영역</div>

<div id="section">
   <div id="article">독립적 사용 가능한 문서</div>
   <div id="main">메인 컨텐츠</div>
</div>

<div id="aside">
   <div id="nav">네비게이션 영역</div>
</div>

<div id="footer">Footer 영역</div>    
    

 

하지만 아래의 소스처럼 html5의 레이아웃 태그를 이용하게 된다면,

조금 더 깔끔한 태그 작성과 태그의 의미에 맞게 레이아웃을 작성하게 되므로

스크린 리더에도 각 영역별로 의미를 확실히 명시해줄 수 있고 각 영역 별로 의미를 부여할 수 있다.

 

<header>Header 영역</header>

<section>
   <article>독립적 사용 가능한 문서</article>
   <main>메인 컨텐츠</main>
</section>

<aside>
   <nav>네비게이션 영역</nav>
</aside>

<footer>Footer 영역</footer>

* 레이아웃 태그 표

태그

설명

<header>

일반적으로 페이지 전체 영역의 가장 윗부분, 제목 영역에 많이 위치하게 된다.

그리고 <section>, <article>, <aside> 영역 안의 헤더 영역 표시를 위해서도 사용된다.

<nav>

네비게이션을 표시하는 태그이다.

주로 <nav> 태그 안에 <ul><li>를 사용하여 네비게이션 메뉴를 작성한다.

<section> 페이지의 각 영역의 구분을 위해 사용한다.
<article>

페이지 내용을 담는 태그이다.

sns 관련 영역, 뉴스 소식 등 독립적으로 따로 떼어가서 어디서든 사용할 수 있는

내용을 담는다.

<main>

문서의 주된 내용을 담는 태그이다.

문서에서 두 개 이상 노출되면 안되는 태그이므로 사용하는 영역이 아닌 <main> 태그는

 

<aside> 본문의 주요 내용 외의 사이드 영역이나 광고 영역 등의 기타 내용을 담는다.
<footer>

일반적으로 페이지 전체 영역의 가장 아랫부분에 위치하게 된다.

<header>와 마찬가지로 <section>, <article>, <aside> 영역 안에도 위치할 수 있다.

 

 

1-2. 기타 추가 된 태그

태그 설명
<video> 영상 파일을 재생할 수 있는 태그. 별다른 플러그인 없이 자체 재생이 가능하다.
<audio> 오디오 파일을 재생할 수 있는 태그. <video>태그와 마찬가지로 자체 기능을 제공한다.
<canvas> 동적인 비트맵 그래픽을 활용하는 태그, 스크립트를 이용해 표현한다.
<embed> 플러그인 컨텐츠를 나타내는 태그.
<output> 스크립트를 통해 계산된 결과값을 나타내는 태그.
<datalist> <input> 요소에 대해 미리 정의된 옵션 리스트를 명시하는 태그.
<mark> 특정 영역을 형광펜으로 마킹하는 태그.
<figure> 그림, 도표, 다이어그램 등의 이해를 돕기 위한 내용을 담는 태그.
<figcaption> <figure> 태그 안에 사용하며 <figure> 태그 안에 있는 내용을 설명한다.
<time> 날짜와 시간을 나타내는 태그.
<meter> 측정치를 나타내는 태그.
<progress> 진행 상황을 나타내는 태그.
<input>의 type

<input type=""> 에 추가된 요소

- search

- tel

- url

- email

- datatime

- date

- month

- week

- time

- datatime-local

- number

- range

- color

 

1-3. 삭제된 기존 태그

css 적용할 수 있는 태그는 최대한 줄이고 css로 적용하여 스타일을 주었다.

삭제된 태그 설명
<acronym> <abbr> 태그로 대체
<nobr> CSS로 적용 (white-space : nowrap)
<marquee> 스크립트나 CSS로 적용
<blink> 스크립트나 CSS로 적용
<applet> <object> 태그로 대체
<basefont> CSS로 적용
<big> CSS로 적용
<center> CSS로 적용
<font> CSS로 적용
<strike> CSS로 적용
<tt> CSS로 적용
<dir> <ul> 태그로 대체
<frame> 삭제
<frameset> 삭제
<noframes> 삭제

 

반응형

'Frontend > HTML' 카테고리의 다른 글

[html 태그] a태그  (0) 2020.03.06
Meta tag (메타 태그)  (0) 2020.02.13
HTML5 - Content Model (콘텐츠 모델)  (0) 2020.02.12
HTML inline(인라인) vs block(블록) 요소  (0) 2020.02.11
Doctype 이란?  (0) 2020.02.07
반응형
"문서 형식 선언"(Document Type Declaration) 또는 DOCTYPE이란 어떤 SGML이나 XML 기반 문서 내에 그 문서가 특정 문서 형식 정의(DTD)를 따름을 지정하는 것이다. 본래 DTD에 기반한 SGML 도구를 이용해 문서 해석 가능성과 유효성을 검사하기 위한 목적으로 문서 내에 삽입되었다.
*SGML (Standard GeneralStandard Generalized Markup Language)

 : 다른 마크업 언어를 기술하는 또 다른 마크업 언어
*XML (Extensible Markup Language)

: W3C에서 개발한 마크업 언어를 만드는데 사용되는 다목적 마크업 언어

 

라고 사전적 의미를 찾아볼 수 있다.... 

 

무슨 얘기인가 할 수도 있지만, 쉽게 말하자면 

 

내가 작성하려는 HTML 문서가 어떤 문서 형식을 갖고 있는 지 선언해주는 것을 말한다.

 

 

웹 브라우저에서는 문서 형식 선언이 없으면 *쿼크모드로 렌더링을 해서 각 브라우저마다 다른 형태의 결과물을 보여주게 되는데 이것을 방지하기 위해 문서 형식 선언을 하고 그로인해 HTML 문서를 표준모드로 렌더링 할 수 있게된다.

 

*쿼크모드 

: 오래된 웹 페이지의 하위 호환성 유지를 위해 사용되며, W3C나 IETF의 표준을 엄격하게 준수하지 않는다. 같은 코드라도 웹 브라우저마다 다르게 해석해서 다른 결과물을 보여준다.

 

- Doctype 무선언 -> 쿼크모드로 렌더링 -> 브라우저마다 다른 결과물 출력

- Doctype 선언    -> 표준모드로 렌더링 -> 브라우저 별로 같은 레이아웃으로 결과물 출력

 

 

1. HTML 4.01 문서 형식 선언 (Doctype)

HTML 4.01의 문서 형식은 Strict, Transitional, Frameset으로 나뉘며, 선언도 마찬가지이다. HTML 4.01 Strict는 표현 효과 위주의 마크업 태크들 (<b>, <i> 등)의 사용을 금지한다.

 

- Strict (엄격한 타입) : <center>, <font> 등의 14가지 태그를 사용하지 않는다.

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

 

 

- Transitional (유연한 타입) : HTML 4.01 Strict에서 폐기된 몇 가지 태그를 허용한다.

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

 

 

- Frameset (프레임셋) : 프레임 구조 지원

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

 

2. XHTML 1.0

XHTML 1.0도 HTML 4.01과 마찬가지로 Strict, Transitional, Frameset 세 가지로 구분하여 선언한다.

 

- Strict

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 

 

- Transitional 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

 

- Frameset

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

 

3. XHTML 1.1

XHTML 1.0 Strict와 동일하게 엄격한 문법을 갖고있다.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

 

4. HTML5

HTML5의 경우 문서 형식 선언(DOCTYPE)이  불필요하지만 웹 브라우저들의 표준 모드 활성화를 위해 최소한의 형태로 유지되어 사용된다.

 

<!DOCTYPE html>

 

반응형

'Frontend > HTML' 카테고리의 다른 글

[html 태그] a태그  (0) 2020.03.06
Meta tag (메타 태그)  (0) 2020.02.13
HTML5 - Content Model (콘텐츠 모델)  (0) 2020.02.12
HTML inline(인라인) vs block(블록) 요소  (0) 2020.02.11
HTML 5이란?  (0) 2020.02.10

+ Recent posts