웹 전반, 브라우저/HTML, CSS

img 말고 figure, div 태그 내 style로 이미지를 조작하자

DarrenKwonDev 2020. 3. 9. 02:04

img태그를 이용해서 움직이고 자르는 작업은 굉장히 불편하다. img 태그 하나만 망치면 모르겠는데 관련된 태그가 다 어긋나는 등 굉장히 짜증나는 상황도 발생한다. 이럴 경우 필자는 figure 태그 내부에 background-image를 style로 줌으로써 해결한다. background-size, background-position, background-repeat 등을 사용할 수 있기 때문이다.

 

img에서 벗어나자!

 

<ul class="user-list message-list">
    <li class="user-item message-item">
    <figure
        class="user-photo"
        style="background-image: url(images/hatkid.jpg);" // images 폴더 내 이미지 사용
    ></figure>
    </li>
</ul>
.user-photo {
  width: 50px;
  height: 50px;
  border: 1px solid grey;
  border-radius: 50%;
  background-color: gold;
  background-repeat: none;
  background-position: center;
  background-size: cover;
}

 

figure 태그 안에 img를 넣었을 경우 display:none으로 설정하자.

<ul class="card-list">
    <li class="card-item">
    <figure
        class="card-image"
        style="background-image: url(images/game.png)"
    >
        <img src="images/game.png" alt="gameimage" />
    </figure>
    </li>
</ul>
.card-image {
  height: 0;
  padding-bottom: 60%;
  background-color: lightgray;
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}
.card-image img {
  display: none;
}

 

 

React를 사용할 경우에는 props를 이용해 div를 figure와 같이 사용할 수 있다.

 

const Poster = styled.div`
  background-image: url(${(props) => props.bg});
  height: 100%;
  width: 100%;
  background-size: cover;
  background-position: center center;
`;


export default ({ id, bg }) => (
  <Container>
    <Link to={`/${id}`}>
      <Poster bg={bg} />
      <button>Like</button>
    </Link>
  </Container>
);