div를 채우기 위해 배경 이미지를 늘리는 방법


102

배경 이미지를 다른 div로 설정하고 싶지만 내 문제는 다음과 같습니다.

  1. 이미지의 크기는 고정 (60px)입니다.
  2. 다양한 div 크기

div의 전체 배경을 채우기 위해 배경 이미지를 늘리려면 어떻게해야합니까?

#div2{
  background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
  height:180px;
  width:200px;
  border: 1px solid red;
}

여기에서 코드를 확인하세요.

답변:


154

더하다

background-size:100% 100%;

배경 이미지 아래의 CSS에.

정확한 치수를 지정할 수도 있습니다. 예 :

background-size: 30px 40px;

여기 : JSFiddle


5
IE는 이것을 지원하지 않습니다. 해야 할 일?
KarSho 2013 년

9
작동하지 않습니다. 더 나은 대답은 아래를 참조하십시오. background-size : 100 % 100 %;
chriscatfr

컨테이너에 맞게 이미지를 늘리는
SearchForKnowledge

당신은 추가 할 필요가background-repeat: no-repeat;
Rorrik

1
hendo, JSFiddle이 더 이상 작동하지 않습니다 (hootsuite에 대한 죽은 링크). 업데이트 할 수 있습니까?
TylerH

71

당신이 사용할 수있는:

background-size: cover;

또는 다음과 함께 큰 배경 이미지를 사용하십시오.

background: url('../images/teaser.jpg') no-repeat center #eee;

3
커버 나던 스트레치, 그것은 사진을자를 수 있습니다
drdrej

나는 당신이 당신의 배경 IMG와 함께 할 노력하고 있지만 모르는 background-size: cover; background-position: center의 배경을 채울 div이미지를 스트레칭없이
Ouadie

1
스트레칭으로 인해 이미지가 변형되는 사진에 적합합니다!
Stijn Van Bael

45

최신 CSS3 (미래 권장 및 아마도 최상의 솔루션)

.selector{
   background-size: cover;
   /* stretches background WITHOUT deformation so it would fill the background space,
      it may crop the image if the image's dimensions are in different ratio,
      than the element dimensions. */
}

맥스. 자르기 또는 변형없이 늘이기 ( 배경을 채울 수 없음) : background-size: contain;
절대 늘이기 (변형을 일으킬 수 있지만 자르기 없음) : background-size: 100% 100%;

"오래된"CSS "항상 작동하는"방식

(상대 위치) 부모 의 첫 번째 자식으로 이미지를 절대 위치 지정 하고 부모 크기로 늘립니다.

HTML

<div class="selector">
   <img src="path.extension" alt="alt text">
   <!-- some other content -->
</div>

CSS3와 동일 background-size: cover;:

이를 동적으로 달성하려면 컨테이너 대안 (아래 참조) 의 반대 를 사용해야 하며 잘린 이미지를 중앙에 배치해야하는 경우 동적으로 수행하려면 JavaScript가 필요합니다 (예 : jQuery 사용).

$('.selector img').each(function(){ 
   $(this).css({ 
      "left": "50%", 
      "margin-left": "-"+( $(this).width()/2 )+"px", 
      "top": "50%", 
      "margin-top": "-"+( $(this).height()/2 )+"px" 
   }); 
});

실제 예 :
예제와 같은 CSS 자르기

CSS3와 동일 background-size: contain;:

이것은 약간 까다로울 수 있습니다. 부모가 오버플로되는 배경의 크기는 CSS를 100 %로 설정하고 다른 하나는 자동으로 설정합니다. 실제 예 : CSS를 이미지로 배경 스트레칭

.selector img{
   position: absolute; top:0; left: 0;
   width: 100%;
   height: auto;
   /* -- OR -- */
   /* width: auto; 
      height: 100%; */
}

CSS3와 동일 background-size: 100% 100%;:

.selector img{
   position: absolute; top:0; left: 0;
   width: 100%;
   height: 100%;
}

추신 : "이전"방식으로 완전히 동적으로 커버 / 컨테 이닝을 수행하려면 (오버플로 / 비율에 대해 신경 쓸 필요가 없습니다) 자바 스크립트를 사용하여 비율을 감지하고 설명 된대로 크기를 설정해야합니다. ..


2
다른 "표지"답변보다 훨씬 더 완전한 답변입니다. 불행하게도, 그것은 붙어 방법은 ... 하단 아래로 여기
BillyNair

24

이를 위해 CSS3 background-size속성을 사용할 수 있습니다 . 다음과 같이 작성하십시오.

#div2{
    background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
    -moz-background-size:100% 100%;
    -webkit-background-size:100% 100%;
    background-size:100% 100%;
    height:180px;
    width:200px;
    border: 1px solid red;
}

이것을 확인하십시오 : http://jsfiddle.net/qdzaw/1/


1
IE는 이것을 지원하지 않습니다. 해야 할 일?
KarSho 2013 년

4
IE의 경우 IMG 태그를 사용 하여 높이와 너비가 100 % 인 절대 위치를 제공합니다.
하기 Sandeep

20

다음을 추가 할 수 있습니다.

#div2{
    background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
    background-size: 100% 100%;
    height:180px;
    width:200px;
    border: 1px solid red;
}

여기에서 더 많은 것을 읽을 수 있습니다 : css3 background-size


3
허용되는 답변보다 훨씬 낫습니다. 이는 background-size 가 너비와 높이에 대해 2 개의 값을 허용 한다는 것을 보여줍니다 .
krb686

배경 크기는 모든 브라우저에서 지원되는 CSS3 및 아니다
마흐디 Jazini

2
body{
  margin:0;
  background:url('image.png') no-repeat 50% 50% fixed;
  background-size: cover;
}

1

속성 css를 사용하여 :

background-size: cover;

배경 크기는 모든 브라우저에서 지원되는 CSS3 및 아니다
마흐디 Jazini

1

사용 : 배경 크기 : 100 % 100 %; div 크기에 맞게 배경 이미지를 만듭니다.


이것이 제가 찾던 것입니다. 원본의 종횡비에 관계없이 적합하도록 늘이십시오. 감사.
dgig

0

종횡비를 유지하려면 background-size: 100% auto;

div {
    background-image: url('image.jpg');
    background-size: 100% auto;
    width: 150px;
    height: 300px;
}

0

다음과 같이 시도하십시오.

div {
    background-image: url(../img/picture1.jpg);
    height: 30em;
    background-repeat: no-repeat;
    width: 100%;
    background-position: center;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.