dev/프론트엔드

html : semantic tag, inline vs block element

wosrn 2024. 1. 16. 22:24

 

Semantic Tag

 
1. Semantic Tag : 의미를 가지는 태그 <-> div,span과 같이 의미는 없지만 구획을 나눠주는 태그와 구분

  •   과거엔 class명으로 구분(클래스명이 header,main,footer 등)된 여러개의 div태그를 사용했었음

 
2. Semantic Tag 사용 이유 

  1. 웹 접근성 : 시각장애인들이 웹 사이트를 이용하기 위해선 화면 낭독기와 같은 웹 보조기구를 이용하는데, 이때 시맨틱 태그를 사용하면 제목과 내용 부분을 구별하여 정보를 정확히 전달할 수 있음
  2. 검색 엔젠 최적화(Search Engine Optimization) : div와 span만 사용하는 문서는 어떤 것이 해당 웹의 주요 키워드인지 파악하기 어려움 -> 글제목에 해당하는 h1, 본문 영역인 main 등의 태그가 있다면 검색엔진이 웹을 더 수월히 파악하여 검색에 노출될 가능성이 높아짐
  3. 개발자간 소통이 수월해짐

3.Semantic Tag 의 종류

  • 제목 태그 : h1 ~ h6 (h1은 1번만 사용)
  • header : 소개내용이나 탐색링크의 집합에 대한 컨테이너 -> 하나이상의 제목, 로고 또는 아이콘, 저자정보 등의 정보
  • nav : 문서의 부분 중 현재 페이지 내, 또는 다른 페이지로의 링크를 보여주는 구획을 나타냄 -> 자주 쓰이는 예제는 메뉴, 목차, 색인 (문서의 모든 링크가 nav 요소 안에 있을 필요는 x ! nav 요소는 주요 탐색 링크 블록을 위한 요소)
  • main : 페이지의 주요한 콘텐츠가 들어가는 장소 (한 페이지는 하나의 main만을 가짐)
  • aside : 페이지의 주요 내용 외의 내용 정의 (페이지의 주요 내용 주변에 위치하여 관련내용 배치 - 예) 광고)
  • section : 섹션들을 그룹화해서 분리 (논리적/의미적으로 관계있는 문서 혹은 요소를 분리할 때 사용
  • article : 사이트 내에서 독립적으로 구분하거나 배포할 수 있는 구획 (하나의 문서가 여러개의 article 가질 수 있음) -> 예) 블로그 글을 나타내는 article 요소 안에 중첩된 article 요소(댓글을 나타냄) 등과 같이 중첩하여 쓸 수 있으

# section vs article

  • article은 내용이 독립적 - 주로 블로그글, 포럼, 뉴스기사 등
  • section : 주제별로 구분한 "그룹" (주요 콘텐츠의 구역을 나누는 역할) -> 서로 관계있는 내용을 묶을때 사용
  • 의미적으로 관계가 없는 것들을 묶는다면 div를 사용
<section>
  <h1>HOT TOPIC</h1>
  <section>
     <p>World</p>
     <article>World news 1</article>
     <article>World news 2</article>
     <article>World news 3</article>
  </section>
  <section>
    <p>Sport</p>
    <article>Sport news 1</article>
    <article>Sport news 2</article>
    <article>Sport news 3</article>
  </section>
</section>
  • footer : 화면 하단에 위치하는 사이트나 문서의 정보를 정의

 

 inline vs block element

  • <div> vs <span> : 구획 나누는 태그 , 시맨틱태그는 아님
  • div는 박스영역에 다른 요소들을 담는 느낌이라면, span은 박스라기 보단 글자의 영역을 지정하여 따로 스타일링할때 주로 사용

-> 이와 같은 차이가 생긴 이유? <div>의 display는 block인 반면 <span>의 display는 inline !

  • 모든 html태그는 각자의 특징,쓰임에 맞게 default display값을 가지고 있음
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Inline Block 1</title> 
 
  <style>
    /* 실행해보면  div영역은 박스형태로 색이 입혀진 반면, span영역은 글자가 적힌 만큼만 색이 입혀짐*/
    
    div{
      background-color: darksalmon;
    }
    span{
      background-color: lightblue;
    }
  </style>
</head>
<body>
  <div>
    GOOD AFTERNOON
  </div>
  <span>
    GOOD AFTERNOON
</body>
</html>

 
 

block element 

  • 블록 레벨 요소는 부모요소의 전체공간을 차지하여 "블록"을 만든다
  • 블록요소에 속하는 태그 예 : <h1>~<h6> <ol> <ul> <li> <p> <form>
  • 블록 레벨 요소는 한 칸을 모두 차지하기 때문에 세로로 나열됨 
  • 블록 요소는 언제나 새로운 라인에서 시작함 (블록은 페이지 전체 너비를 혼자 사용)
  • width,height,margin 속성등이 적용됨

 

inline element 

  • 인라인 레벨 요소는 콘텐츠의 흐름을 끊지 않고(줄바꿈x) , 요소를 구성하는 태그에 할당된 공간만을 차지함 -> 주로 텍스트를 주입할 때 사용됨 (내부 요소 텍스트만큼의 공간만을 차지)
  • 인라인요소에 속하는 태그 예 : <a> <em> <img> <span>  <button> <input> 
  • 인라인 레벨 요소는 콘텐츠의 영역 만큼만 차지하기 때문에 가로로 나열됨
  • width,height 속성이 적용되지 않음 (블록레벨 요소는 가로/세로 크기 조절 가능한반면 인라인은 안됨)
  • margin-top, margin-bottom 적용 안됨, 대신 line-height 이용
  • 태그가 콘텐츠의 할당된 공간만 갖고있기 때문에 text-align 과 같은 속성 사용 불가
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Inline Block 1</title> 
 
  <style>
    /* 실행해보면  div영역은 박스형태로 색이 입혀진 반면, span영역은 글자가 적힌 만큼만 색이 입혀짐*/
    
    div{
      background-color:mistyrose;
      width: 100px;
      height: 100px;
      border: 1px solid plum;
    }
    span{
      background-color: lightblue;
      width: 100px;
      height: 100px;
      border: 1px solid lightskyblue;
    }
  </style>
</head>
<body>
  <!-- div{$}*n 하고 엔터치면 div요소 n개 생김 -->
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <br/>
  <span>1</span><span>2</span><span>3</span>
</body>
</html>

위의 코드 실행하면 사진과 같이 나옴. 즉 span에는 width, height 적용되지 않고 테두리선(border)만 적용된 모습
 

  • display 값은 바꿀 수 있음

 
 
 

'dev > 프론트엔드' 카테고리의 다른 글

Javascript 중급 강좌 정리(1)  (0) 2024.01.27
Javascript 기초 강좌 정리  (0) 2024.01.23
CSS  (0) 2024.01.22
HTML : 태그  (0) 2024.01.09
React  (0) 2024.01.07