이미지 위에 텍스트 정가운데에 넣는 방법

사진을 강조하는 블로그나 사이트의 경우 이미지 위에 텍스트를 놓는 경우가 많습니다. 텍스트가 보이게 놓기도 하고, 마우스를 올리면 보이게 하기도 합니다. 텍스트를 이미지 위에 어떻게 넣는지 알아보겠습니다.

다음은 이미지와 텍스트가 있는 간단한 코드입니다. 이미지는 흑백 사진이고, 텍스트의 배경색은 구분하기 쉽도록 노란색으로 했습니다.

<div class="lb-wrap">
  <div class="lb-text">
    <h2>HELLO</h2>
  </div>
  <div class="lb-image">
    <img src="//bit.ly/3mS3fIJ" alt="">
  </div>
</div>
.lb-wrap {
  width: 50%;
  margin: 10px auto;
  border: 1px solid #000000;
}
.lb-wrap img {
  width: 100%;
  vertical-align: middle;
}
.lb-text {
  padding: 10px 20px;
  background-color: #FFEEBC;
  text-align: center;
}

로딩 중... 잠시만 기다려주세요.
자바스크립트를 허용해주세요.

 

가운데로 옮기기

이미지와 텍스트를 감싸고 있는 요소에 position: relative; 를 추가합니다.

텍스트를 감싸고 있는 요소에 position: absolute; 를 추가하고, 위치를 50%로 정합니다.

.lb-wrap {
  width: 50%;
  margin: 10px auto;
  border: 1px solid #000000;
  position: relative;
}
.lb-wrap img {
  width: 100%;
  vertical-align: middle;
}
.lb-text {
  padding: 10px 20px;
  background-color: #FFEEBC;
  text-align: center;
  position: absolute;
  top: 50%;
  left: 50%;
}

로딩 중... 잠시만 기다려주세요.
자바스크립트를 허용해주세요.

하지만 꼭짓점의 위치가 위에서 50%, 왼쪽에서 50%이므로, 텍스트가 정가운데에 있지 않습니다.

 

이를 해결하기 위해 transform: translate(-50%, -50%); 을 추가합니다.

.lb-text {
  padding: 10px 20px;
  background-color: #FFEEBC;
  text-align: center;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

로딩 중... 잠시만 기다려주세요.
자바스크립트를 허용해주세요.

이제 이미지의 정가운데에 텍스트가 있습니다.

 

 

기타 CSS 참조

2 comments

  1. 이런 스타일의 댓글 입력창은 어떻게 만들었는지 알 수 있을까요? 기본 입력창은 이렇게나 구립니다.
    https://1.bp.blogspot.com/-JePrGVBBSQs/YCBpKqflKTI/AAAAAAAAAbY/YS9B4rk2pyMUKr95Xmv_dZ755L5v_9wIACLcBGAsYHQ/s0/20210208_072616.png
    1. 안녕하세요. 기본 테마 Contempo 댓글 입력창을 그대로 쓰고 있어요. 다만 댓글 쓰기 버튼을 누르면 댓글창이 보이도록 스크립트를 추가했어요.