본문에 설정된 CSS3 그라디언트 배경이 늘어나지 않고 대신 반복됩니까?


429

좋아, <body>총 내용은 총 300px입니다.

<body>사용 배경을 설정 -webkit-gradient하거나-moz-linear-gradient

그런 다음 창을 최대화하거나 (또는 ​​300px보다 크게) 그라디언트는 정확히 300px (콘텐츠 높이)이며 나머지 창을 채우기 위해 반복합니다.

나는 이것이 웹킷과 도마뱀에서 동일하기 때문에 버그가 아니라고 가정합니다.

그러나 그라디언트를 반복하는 대신 창을 채우기 위해 늘릴 수있는 방법이 있습니까?

답변:


717

다음 CSS를 적용하십시오.

html {
    height: 100%;
}
body {
    height: 100%;
    margin: 0;
    background-repeat: no-repeat;
    background-attachment: fixed;
}

편집 :margin: 0; 의견 당 본문 선언에 추가되었습니다 ( Martin ).

편집 :background-attachment: fixed; 주석 당 본문 선언에 추가되었습니다 ( Johe Green ).


4
또한 추가 margin:0;해야 body하거나 페이지 하단에 간격이 있음을 알았습니다.
Martin

8
Chrome 및 Safari에서 body {height : 100 %}로 인해 페이지 (그라디언트가 아님)가 뷰포트 밖으로 확장됩니다.
thSoft

13
백그라운드 첨부 파일을 추가해야했습니다. 바닥 간격을 제거하기 위해 몸에 (Webkit).
j7nn7k

4
본문에 배경을 설정 한 다음 html 태그의 높이를 100 %로 설정하면 Internet Explorer에서 이상한 일이 발생합니다. 다음은 예제입니다 (png).
저스틴 포스

21
확인 그 background-repeatbackground-attachment 당신의 background규칙. 그렇지 않으면 배경이 계속 반복 될 수 있습니다.
kellen

159

설정, 이전의 대답에 대해서는 htmlbody하려면 height: 100%컨텐츠가 필요한 경우 스크롤로 작동하지 않습니다. fixed배경에 추가하면 문제가 해결됩니다.need for height: 100%;

예 :

body {
  background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#cbccc8)) fixed;
}


5
이것은 "높이 : 100 %"의 스크롤바 부작용없이 내가 테스트 한 모든 브라우저 (Chrome [Mac], Safari [Mac], Firefox [Mac / Win7], IE9 [Win7] 및 Opera [Mac])에서 작동했습니다. 해결책. 감사!
pipwerks 2016 년

7
Sass / Compass를 사용하는 사람들을위한 메모. 믹스 인에서 직접 "고정"을 설정할 수 없으므로 고정을 추가하면 속성이 추가됩니다.background-attachment: fixed
Kyle Mathews

2
배경이 창을 채우거나 내용 (둘 중 더 큰 것)을 원한다면 min-height:100%(호환되는 브라우저에서)
cjk

Compass를 사용하여 다음 코드를 실행할 수있었습니다 : @include background (linear-gradient (top, red 0 %, blue 100 %) fixed);
mcranston18

세 번째 색상을 어떻게 추가합니까?
sbaden

17

나는 파티에 늦었다는 것을 알고 있지만 여기에 더 확실한 대답이 있습니다.

당신이해야 할 모든 사용하는 것입니다 min-height: 100%;보다는 height: 100%;당신의 그라데이션 배경 내용이 스크롤 경우에도 반복하지 않고 뷰포트의 전체 높이를 확장하는 것입니다.

이처럼 :

html {
    min-height: 100%;
}

body {
    background: linear-gradient(#ff7241, #ff4a1f);
}

당신이 100 %로 설정 HTML 높이에 필요하지 않는 한, 예를 들어, 당신은 끈적 끈적한 바닥 글이 필요한 경우
apieceofbart

15

이 문제를 해결하기 위해 수행 한 작업은 다음과 같습니다. 내용의 전체 길이에 대한 그라디언트를 표시 한 다음 배경색 (일반적으로 그라디언트의 마지막 색상)으로 대체합니다.

   html {
     background: #cbccc8;
   }
   body {
     background-repeat: no-repeat;
     background: #cbccc8;
     background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#cbccc8));
     background: -moz-linear-gradient(top, #fff, #cbccc8);
     filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#cbccc8');
   }
<body>
  <h1>Hello world!</h1>
</body>

FireFox 3.6, Safari 4 및 Chrome에서 이것을 테스트했으며 어떤 이유로 든 HTML 태그 스타일을 지원하지 않는 모든 브라우저의 본문에 배경색을 유지합니다.


13

설정 html { height: 100%}은 IE에 혼란을 줄 수 있습니다. 다음은 예제입니다 (png). 그러나 무엇이 잘 작동하는지 알고 있습니까? <html>태그에 배경을 설정하기 만하면됩니다 .

html {
  -moz-linear-gradient(top, #fff, #000);
  /* etc. */
}

배경이 아래쪽으로 확장되고 이상한 스크롤 동작이 발생하지 않습니다. 다른 모든 수정 사항은 건너 뛸 수 있습니다. 그리고 이것은 광범위하게 지원됩니다. html 태그에 배경을 적용 할 수없는 브라우저를 찾지 못했습니다. 완벽하게 유효한 CSS이며 한동안 사용되었습니다. :)


1
@Lynda 그것은 매우 유용한 피드백이 아닙니다. 작동하지 않는 경우를 제공 하시겠습니까?
Justin Force

막연해서 죄송합니다. 왜 작동하지 않는지 잘 모르겠습니다. 그라디언트를 추가 할 수는 html있지만 제 경우에는 페이지 아래쪽으로 중지됩니다. 추가 background-attachment:fixed하면 문제가 해결됩니다. 여러 사이트에서이 문제가 발생했지만 원인을 찾지 못했습니다.
L84

이 솔루션의 요점은 여러 브라우저에서 작동한다는 것입니다 (2012 년). 그러나 당신은 여전히 ​​당신이 말하는 브라우저를 나타내지 않습니다. 여전히 문제가 발생하면을 추가해보십시오 html, body { height: 100%; }.
저스틴 포스

진실. Firefox 및 Chrome (다른 브라우저에서는 테스트하지 않음)에서 발생하며 운이없이 높이 및 다양한 다른 설정을 시도했습니다 (배경 첨부 제외). 글쎄, 큰 문제가 아니길 바랍니다. =>
L84

여전히 반복하지 않고 바보로 고쳐야합니다.
MarsAndBack

12

이 페이지에는 많은 부분 정보가 있지만 완전한 정보는 아닙니다. 여기 내가하는 일이 있습니다.

  1. 여기에 그라디언트를 만드십시오 : http://www.colorzilla.com/gradient-editor/
  2. BODY 대신 HTML에서 그라디언트를 설정하십시오.
  3. "background-attachment : fixed;"로 HTML의 배경을 수정하십시오.
  4. BODY의 상단 및 하단 여백을 끕니다.
  5. (선택 사항) 일반적으로 <DIV id='container'>모든 콘텐츠를

예를 들면 다음과 같습니다.

html {  
  background: #a9e4f7; /* Old browsers */
  background: -moz-linear-gradient(-45deg,  #a9e4f7 0%, #0fb4e7 100%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#a9e4f7), color-stop(100%,#0fb4e7)); /* Chrome,Safari4+ */ 
  background: -webkit-linear-gradient(-45deg,  #a9e4f7 0%,#0fb4e7 100%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(-45deg,  #a9e4f7 0%,#0fb4e7 100%); /* Opera 11.10+ */
  background: -ms-linear-gradient(-45deg,  #a9e4f7 0%,#0fb4e7 100%); /* IE10+ */
  background: linear-gradient(135deg,  #a9e4f7 0%,#0fb4e7 100%); /* W3C */ 
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a9e4f7', endColorstr='#0fb4e7',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */

  background-attachment: fixed;
}

body {
  margin-top: 0px;
  margin-bottom: 0px;
}

/* OPTIONAL: div to store content.  Many of these attributes should be changed to suit your needs */
#container
{
  width: 800px;
  margin: auto;
  background-color: white;
  border: 1px solid gray;
  border-top: none;
  border-bottom: none;
  box-shadow: 3px 0px 20px #333;
  padding: 10px;
}

이것은 다양한 크기와 스크롤이 필요한 페이지에서 IE, Chrome 및 Firefox로 테스트되었습니다.


1
큰! 나는 colorzilla를 사용하고 있었고 주요 대답은 나를 위해 작동하지 않았습니다. 이건 감사합니다! :)
Filly

BODY가 아닌 HTML로 선호하는 이유는 무엇입니까?
sashaikevich

@sashaikevich 좋은 질문입니다. 나는 5 년 동안이 답변을 거의 보지 않았으므로 전혀 기억하지 못합니다. 내가 한 이유는 여전히 모든 브라우저 업데이트에 적용되지 않을 수도 있습니다. 당신이 그것을 모두 몸으로 옮겼다면, 그것이 똑같이 작동했는지 궁금합니다.
Rick Smith

@ RickSmith 아니, 나는 HTML 스타일. 그러나 나는 지금 확인하기 위해 몸에 적용하는 규칙을 옮겼지만 아무런 차이가 없었습니다. 아마 오래된 브라우저 일 것입니다 ...
sashaikevich

4

더러운; 아마도 당신은 최소 높이를 추가 할 수 있습니다 : 100 %; HTML과 body 태그에 그 또는 최소한 기본 그라데이션 색상 인 끝 그라디언트 색상도 설정합니다.


1
그라디언트가 중지되면 끝 그라디언트 색상으로 설정된 기본 배경이 훌륭한 해결책이 될 수 있지만 그라디언트가 지원되지 않는 경우에만 기본 그라디언트가 반복되는 것을 멈추지 않고 기본 배경을 볼 수 있습니다.
JD Isaacks

2

여기에 대한 답변을 얻는 데 문제가있었습니다.
본문에 전체 크기 div를 수정하고 음수 z- 인덱스를 제공하고 그라디언트를 첨부하는 것이 더 효과적이라는 것을 알았습니다.

<style>

  .fixed-background {
    position:fixed;
    margin-left: auto;
    margin-right: auto;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: -1000;
    background-position: top center;
    background-size: cover;
    background-repeat: no-repeat;
  }

  .blue-gradient-bg {
    background: #134659; /* For browsers that do not support gradients */
    background: -webkit-linear-gradient(top, #134659 , #2b7692); /* For Safari 5.1 to 6.0 */
    background: -o-linear-gradient(bottom, #134659, #2b7692); /* For Opera 11.1 to 12.0 */
    background: -moz-linear-gradient(top, #134659, #2b7692); /* For Firefox 3.6 to 15 */
    background: linear-gradient(to bottom, #134659 , #2b7692); /* Standard syntax */
  }

  body{
    margin: 0;
  }

</style>

<body >
 <div class="fixed-background blue-gradient-bg"></div>
</body>

다음은 전체 샘플입니다 https://gist.github.com/morefromalan/8a4f6db5ce43b5240a6ddab611afdc55


0

나는이 CSS 코드를 사용했고 그것은 나를 위해 일했다 :

html {
  height: 100%;
}
body {
  background: #f6cb4a; /* Old browsers */
  background: -moz-linear-gradient(top, #f2b600 0%, #f6cb4a 100%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2b600), color-stop(100%,#f6cb4a)); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(top, #f2b600 0%,#f6cb4a 100%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(top, #f2b600 0%,#f6cb4a 100%); /* Opera 11.10+ */
  background: -ms-linear-gradient(top, #f2b600 0%,#f6cb4a 100%); /* IE10+ */
  background: linear-gradient(top, #f2b600 0%,#f6cb4a 100%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f2b600', endColorstr='#f6cb4a',GradientType=0 ); /* IE6-9 */
  height: 100%;
  background-repeat: no-repeat;
  background-attachment: fixed;
  width: 100%;
  background-position: 0px 0px;
}

관련 정보는 http://www.colorzilla.com/gradient-editor/ 에서 자신 만의 멋진 그라디언트를 만들 수 있다는 것입니다 .

/ 스텐


-1
background: #13486d; /* for non-css3 browsers */
background-image: -webkit-gradient(linear, left top, left bottom, from(#9dc3c3),   to(#13486d));  background: -moz-linear-gradient(top,  #9dc3c3,  #13486d);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9dc3c3', endColorstr='#13486d');
background-repeat:no-repeat;

1
솔루션의 주요 측면에 대한 설명을 추가하십시오.
Rachcha

-1

이것이 내가 한 일입니다.

html, body {
height:100%;
background: #014298 ;
}
body {
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#5c9cf2), color-stop(100%,#014298));
background: -moz-linear-gradient(top, rgba(92,156,242,1) 0%, rgba(1,66,152,1) 100%);
background: -o-linear-gradient(top, #5c9cf2 0%,#014298 100%);

/*I added these codes*/
margin:0;
float:left;
position:relative;
width:100%;
}

몸을 띄우기 전에 상단에 틈이 있었고 html의 배경색을 보여주었습니다. html의 bgcolor를 제거하면 아래로 스크롤하면 그라디언트가 잘립니다. 그래서 몸을 띄우고 위치를 상대적으로, 너비를 100 %로 설정했습니다. 그것은 사파리, 크롬, 파이어 폭스, 오페라, 인터넷 expl ..에서 일했다. 아 잠깐만. :피

너희들은 어떻게 생각하니?


-4

100 % 대신에 나는 단지 약간의 pixxel을 추가하여 이것을 얻었고 간격없이 전체 페이지에서 작동합니다.

html {     
height: 1420px; } 
body {     
height: 1400px;     
margin: 0;     
background-repeat: no-repeat; }

3
높이가 1420 픽셀 이상인 페이지는 어떻습니까?
veritas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.