+) 이번 프로젝트를 진행하면서 퍼블리싱 부분에서 가장 애를 먹었던 부분.
혹시 제가 놓친 점이나 더 좋은 방법, 다른 방법이 있다면 얼마든지 알려주시기 바랍니다.
1. 잘리면서 꽉차게
* 상위 div 에 꽉 채우고 싶다.
* 비율이 깨지지 않도록 한다.
* 이미지의 가운데 부분이 보여지도록 한다.
* 넘치는 부분은 자른다.
HTML 예시
<div class="image-box">
<img class="image-thumbnail">
</div>
CSS 예시
.image-box {
width:380px;
height:220px;
overflow:hidden;
margin:0 auto;
}
.image-thumbnail {
width:100%;
height:100%;
object-fit:cover;
}
width: 380px, height: 220px 인 상위 div 가 있다.
이 div 에 딱 맞게 어떤 비율의 이미지든 맞춰서 꽉차게 넣고 싶은 경우.
극단적인 예시로 width: 1000px, height: 20px 인 이미지를 width: 380px, height: 220px 인 div 에 딱 맞게 넣으려면
비율이 사정없이 깨질테니 가운데 부분만 보여주고 div 에 들어가지 않는 나머지 영역은 자르기로 한다.
포인트)
1. 상위 div 에 일정한 사이즈 width, height 및 overflow:hidden 을 주어 이미지 태그가 해당 사이즈를 벗어나면 잘리도록 한다.
2. 이미지 태그는 원본 비율을 유지하도록 width: 100%, height: 100% 를 주고,
상위 div 크기에 딱 맞아 들어가도록 object-fit: cover; 를 부여한다.
2. 잘리지 않고 축소하여
* 상위 div 에 꽉 차지 않아도 상관 없는 경우.
(혹은 이미지 전체를 노출시키고자 할때. 본인은 정보성 이미지를 넣을 때는 1번보다 2번을 택했다.)
* 비율이 깨지지 않도록 한다.
* 잘리는 부분 없이 이미지 전체가 보여지도록 하고 싶다.
HTML 예시
<div class="product-title">
<div class="product-img-div">
<img class="product-img">
</div>
</div>
CSS 예시
.product-title {
text-align:center;
display:table;
border:1px solid #cecece;
width:280px;
height:250px;
}
.product-img-div {
display:table-cell;
vertical-align:middle;
}
.product-img {
max-width:180px;
max-height:180px;
}
포인트)
1. 가장 바깥 div 에 display: table
2. 이미지 태그를 감싸는 div (product-img-div) 에 display: table-cell
3. 이미지 태그가 div 안에서 수직 가운데 정렬이 되도록 감싸는 div (product-img-div) 에 vertical-align: middle 을 준다.
4. 이 때, 틀이 되는 div (product-title) 는 width 와 height 값을 지정해 주고
이미지 태그가 div 안에서 가운데 정렬이 되도록 text-align: center 를 부여
5. 여기까지만 하면 상위 div 보다 큰 사이즈의 이미지일 경우 바깥으로 넘치므로, max-width 혹은 max-height 값을 적절하게 준다.
* 또 다른 방법
HTML 예시
<div class="image">
</div>
CSS 예시
.image {
width: 300px;
height: 300px;
background-image: url(./개미.png);
background-size: contain;
background-repeat: no-repeat;
background-position: center;
border:1px solid black;
}
포인트)
1. background-image 에 원하는 이미지의 경로를 적는다.
2. 비율을 맞춰서 넣으려면 background-size: contain 을 준다.
(이 예시는 contain 이지만, div 에 꽉차게 넣으려면 background-size: cover 를 주면 된다. 단, 비율이 깨질 수도 있음.)
3. div 사이즈보다 이미지가 작은 경우, 이미지가 반복되므로 한 장만 보여주기 위해 background-repeat: no-repeat
4. 가운데 정렬을 위해 background-position: center
'CSS' 카테고리의 다른 글
CSS 자식요소, 자식의 자식의 ... 요소 선택하기 (0) | 2021.01.14 |
---|---|
[회원가입 폼] input text onchange (0) | 2020.10.01 |
Bootstrap-Material DateTimePicker 사용법 (0) | 2020.09.12 |
div 밖으로 텍스트가 넘치지 않도록 하기 (0) | 2020.08.17 |
fontawesome(폰트어썸) 아이콘 크기 조절 (0) | 2020.08.06 |