이 영역을 누르면 첫 페이지로 이동
Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

페이지 맨 위로 올라가기

Nuhends 의 Tech Life

IT / Tech / 재테크 관련 뉴스를 최대한 알기 쉽게 전달하는 Tech 블로그 입니다.

[html/css] img 태그에 vertical-align RESET 필요한 이유

  • 2023.04.09 03:29
  • 프로그래밍/HTML&CSS 사전
반응형
반응형

 

[html/css] img 태그에 vertical-align RESET 필요한 이유


vertical-align 과 typography

 

Problem

 

아래 예제 코드를 보면 알겠지만 이미지의 height 628p이다.

하지만 img를 감싸고 있는 div의 height는 633px으로 5px 만큼 더해진 문제가 있었다. 왜 그럴까?

 

See the Pen vertical-align img by nuhends (@nuhends) on CodePen.

 

 

Why?

이를 알기 위해서는 몇가지 배경지식이 필요하다.

 

배경 지식 1: img의 display 기본값은 inline 이다.
배경 지식 2: inline 요소는 typography 규칙인 vertical-align 속성이 적용된다. 

img 태그 display 기본 값

 

 

이제 아래 예시를 살펴보자. 자세히 살펴보면 img 요소와 p 요소 사이에 간격이 생긴다. 

이는 vertical-align 속성의 기본값이 적용되었기 때문이다. 이를 제대로 알기 위해선 Typography에 대한 지식이 필요하다.

 

See the Pen vertical-align by nuhends (@nuhends) on CodePen.

img와 다른 요소 사이에 생기는 간격

 

Typography

타이포그래피(Typography)는 '활자'를 의미하는 'Type'와 '-술'을 의미하는 접미사 'Graphy'의 합성어. 쉽게 문자(활자)를 어떻게 배열할까에 관한 기술, 규칙 등을 의미

typography

 

이 개념을 web에 적용할 때, baseline, ascender, descender 개념들을 구현한 것이 바로 항상 아리송한 vertical-align 속성이다.

 

vertical-align의 기본값은 baseline이다.

 

이미지 또한 인라인 요소이므로 기본 값은 baseline으로 적용된다.

정리해보자면

- 이미지는 inline 요소이다 = text와 같다
- text(inline 요소)는 typography 레이아웃을 따른다.
- 고로 이미지는 typography 레이아웃에 따라 적용된다.
=> 즉, 이미지와 다음 요소 사이에 생기는 공백은 baseline과 subscript baseline사이의 간격 임을 알 수 있다.

 

How?

그렇다면 어떻게 이 문제를 해결할 수 있을까?

  1. vertical-align을 baseline에서 top 혹은 bottom으로 바꾸자.
  2. 요소의 위 또는 아래로 기준을 바꾸면 간격은 사라진다.
  3. display: block으로 바꾸자.
  4. block이 적용되면 텍스트 레이아웃을 따라가지 않고, 박스 모델을 따라가게 된다.

 

개인적 의견

경험상 보통 img를 사용할 때 div 같은 다른 요소로 감싸서 처리하는 경우가 많았다.

div {
	width: 500px;
	height 500px;
}

div img {
	display: block;
	width: 100%;
	// height: auto; height는 보통 주지 않는다. 비율에 맞게 width에 따라 자동으로 늘어나기 때문
}

그러므로, display: block을 주고 이를 reset에서 선언해두는게 dx에 더 도움이 된다고 생각합니다.

참고로 svg의 display도 inline이므로 함께 처리하는 걸 추천

// reset.css
img, svg {
	display: block;
}
반응형
저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 > HTML&CSS 사전' 카테고리의 다른 글

[html/css] flex와 z-index  (1) 2023.03.31
[html] img태그 에러 처리 방법  (0) 2022.11.08
CSS 만 사용하여 특정 비율 + 반응형 요소 만들기  (2) 2021.07.31
[html/css] a태그에 대한 거의 모든 것  (1) 2021.07.19
[CSS] 스크롤바 확실하게 숨기는 방법  (2) 2020.12.28

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [html/css] flex와 z-index

    [html/css] flex와 z-index

    2023.03.31
  • [html] img태그 에러 처리 방법

    [html] img태그 에러 처리 방법

    2022.11.08
  • CSS 만 사용하여 특정 비율 + 반응형 요소 만들기

    CSS 만 사용하여 특정 비율 + 반응형 요소 만들기

    2021.07.31
  • [html/css] a태그에 대한 거의 모든 것

    [html/css] a태그에 대한 거의 모든 것

    2021.07.19
다른 글 더 둘러보기

정보

Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

  • Nuhends 의 Tech Life의 첫 페이지로 이동
반응형

검색

메뉴

  • 홈
  • 웹 개발
  • 경제 데이터
  • 경제 공부
  • 방명록

카테고리

  • 분류 전체보기 (127)
    • 프로그래밍 (69)
      • React (3)
      • HTML&CSS 사전 (13)
      • JAVASCRIPT 사전 (11)
      • Algorithm (23)
      • 이슈 정리 (2)
      • 개발 환경 (4)
      • NodeJS (1)
      • Typescript (4)
      • NextJS (5)
      • React-Query (2)
      • ai (1)
    • 경제 데이터 (22)
      • 주식 순위 (20)
      • 경제지표 (2)
    • 경제 공부 (25)
      • 경제 신문 읽기 (3)
      • 세금 재테크 (7)
      • 인사이트 (4)
      • 경제용어정리 (9)
      • 정부 지원 제도 관련 (2)
    • 팁 모음 (11)
      • 인터넷 (5)
      • 생활 (3)
      • SNS 맛집 (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 코테
  • javascript
  • 알고리즘
  • 코딩테스트
  • 프로그래머스
  • softeer
  • 코테 풀이
  • 자바스크립트

나의 외부 링크

정보

nuhends의 Nuhends 의 Tech Life

Nuhends 의 Tech Life

nuhends

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © nuhends. Designed by Fraccino.

티스토리툴바