회고록 블로그

[CSS 공부] <li> 태그의 CSS 적용 시 주의할 점 본문

2. 프로그래밍 언어 공부/HTML+CSS

[CSS 공부] <li> 태그의 CSS 적용 시 주의할 점

김간장 2022. 4. 7. 02:36

인프런에서 수코딩님의 '만들면서 배우는 HTML/CSS' 강의를 들으며 CSS를 복습하고 있는데,

듣다가 꼭 필기해둬야 할 것 같은 내용을 찾게 되어서

정리해두려고 한다.


만약 <li> 태그로 감싼 컨텐츠를 나란히 일렬로 붙여서 정렬하고 싶다면?

 

아래와 같은 HTML 문서가 있다고 가정하자.

<!DOCTYPE html>

<head>
	<link href="reset.css" rel="stylesheet" type="text/css" />
	<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
	<ul class="content__list">
		<li>
			<a href="">
				1번 링크
			</a>
		</li>
		<li>
			<a href="">
				2번 링크
			</a>
		</li>
		<li>
			<a href="">
				3번 링크
			</a>
		</li>
	</ul>
</body>
</html>

 

이때 style.css 파일에는 아래와 같은 코드가 적혀있다.

.content__list > li{
	display: inline-block;
	height: 52px;
	border: 1px solid black;
	border-radius: 50%;
}

 

위의 문서는 <li> 태그에 대해서 블록(block)의 성격을 띄면서 inline으로 나란히 배치하도록 했다.

(display: inline-block;)

 

이때 결과는 아래와 같게 된다.

 

폰트 사이즈가 원을 넘어가는게 걸리긴 하지만 일단 그건 넘어가고,

 

여기에서 중요하게 봐야할 점은 원과 원 사이의 [공간(공백)]이다.

이 공간(공백)이 생기는 이유는 HTML 문서에 적은 코드 때문이라고 한다.

 

 바로 아래의 부분 때문이다.

...
		</li> <!--여기-->
		<li> <!--여기-->
			<a href="">
				2번 링크
...

 

블록(block) 성격의 태그를 인라인(inline)으로 배치했을 때,

</li>와 <li> 사이에 공간(엔터키를 한번 입력)을 넣으면

브라우저는 그 곳을 [공백]으로 해석한다.

이 때문에 브라우저에서 결과를 확인했을 때, 원(li 태그)과 원(li 태그) 사이에 공백이 생겨버린 것.

 

따라서, 해결하는 방법은 3가지라고 한다.

 

1) 아래와 같이 <li> 종료 태그와 시작 태그 사이의 공백을 지운다.

- 다만 가독성이 떨어질 수 있다는 단점...

<!DOCTYPE html>

<head>
	<link href="reset.css" rel="stylesheet" type="text/css" />
	<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
	<ul class="content__list">
		<li>
			<a href="">
				1번 링크
			</a>
		</li><li>
			<a href="">
				2번 링크
			</a>
		</li><li>
			<a href="">
				3번 링크
			</a>
		</li>
	</ul>
</body>
</html>

 

2) 공백을 주석처리 한다.

- 이 또한 가독성이 좋지는 않다고 한다.

<!DOCTYPE html>

<head>
	<link href="reset.css" rel="stylesheet" type="text/css" />
	<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
	<ul class="content__list">
		<li>
			<a href="">
				1번 링크
			</a>
		</li><!--
		--><li>
			<a href="">
				2번 링크
			</a>
		</li><!--
		--><li>
			<a href="">
				3번 링크
			</a>
		</li>
	</ul>
</body>
</html>

 

3) 가장 보편적으로 사용하는 방법인데,

    <li> 태그의 부모 태그(여기서는 <ul> 태그)에 font-size: 0;을 적용한다.

- 대신 자식 태그(li 태그들)가 부모 태그의 폰트 사이즈를 상속 받기 때문에, 자식 태그의 컨텐츠(글)가 보이지 않는 문제가 생긴다.

- 이 때문에 자식 태그의 스타일에 font-size를 다시 설정해줘야 한다.

.content__list{
	font-size: 0;
}

.content__list > li{
	display: inline-block;
	height: 52px;
	border: 1px solid black;
	border-radius: 50%;
    font-size: 16px;
}

 

 

이렇게 하면 태그 사이의 공백이 사라진다!

 

 

출처 : 인프런, 수코딩님, "만들면서 배우는 HTML/CSS", https://www.inflearn.com/course/html-css-sucademy/dashboard

Comments