퍼블리싱/HTML(Pug)

이미지를 a태그로 감쌌을 때 여백이 생기는 이유

리리히히 2024. 11. 11. 22:13
반응형

 

 

회사에서 마크업 작업을 하다가 아래와 같이 a태그 안에 이미지 태그를 넣으니 이미지 사이사이 여백이 생기는 현상이 생겼다.

해당 작업을 하면서 새롭게 알게 된 사실을 정리해본다!

 

<a href="#none">
  <img src="image.png" />
</a>
<a href="#none">
  <img src="image.png" />
</a>
<a href="#none">
  <img src="image.png" />
</a>

 

 

✅ 여백이 생기는 이유

1. 인라인 요소의 특성
<img> 태그는 기본적으로 인라인 요소.

인라인 요소는 텍스트와 같은 방식으로 취급되어 베이스라인(baseline)을 기준으로 정렬된다.

 

2. 베이스라인과 여백
인라인 요소는 베이스라인 위에 배치되며, 베이스라인 아래에는 소문자 g, p, y 등을 위한 여분의 공간이 존재한다.

이미지는 이 공간을 사용하지 않지만, 여전히 그 공간이 남아있어 여백으로 보이게 된다.

 

 

3. HTML 코드의 공백
여러 이미지를 나란히 배치할 때, HTML 코드에서 <img> 태그 사이의 줄바꿈이나 공백이 브라우저에 의해

실제 공백으로 해석되어 이미지 사이에 간격이 생길 수 있다.

 

 

✅ 해결방법

 

1. vertical-align 속성 사용하기 (⭐제일 추천하는 방법)

- 기본 속성인 베이스라인을 상단, 중앙, 하단 중 하나로 정렬시켜서 여백을 없애는 방법

img {
  vertical-align: bottom; /* top, middle도 가능 */
}
 

2. display 속성을 변경

- 기존 inline 속성을 block으로 바꾸는 방법

img {
  display: block;
}

 

 

3. 부모요소에 line-height 값을 0으로 설정하는 방법

- 단, 부모요소에 다른 자식 요소가 있을 때는 사용불가

div {
  line-height: 0;
}

 

 

반응형