스크롤 막대가 있어도 div를 항상 페이지 내용의 맨 아래에 유지


261

CSS를 Div를 페이지 하단으로 푸시

해당 링크를보고하십시오, 나는 반대를 원하는 : 내용이 스크롤에 오버 플로우 때, 나는 내 글이 항상되고 싶어 완전한 스택 오버플로 같은 페이지 하단.

div id="footer"와이 CSS가 있습니다.

#footer {
    position: absolute;
    bottom: 30px;
    width: 100%;
}

그러나 모든 것은 뷰포트의 맨 아래로 이동하고 아래로 스크롤해도 그대로 유지되므로 더 이상 맨 아래에 없습니다.

영상: 예

명확하지 않으면 죄송하지만 모든 콘텐츠의 실제 맨 아래에 고정시키기를 원하지 않습니다.


1
시도 position:fixed하는 것이 최선의 방법은 아니지만
redDevil

몸에 상대적인 위치를보십시오.

1
당신은 당신을 닫지 않았다; 위치 후 : 절대. 그렇지 않으면 완벽하게 작동했을 것입니다!
AlexHighHigh

답변:


545

이것은 정확히 position: fixed설계된 것입니다.

#footer {
    position: fixed;
    bottom: 0;
    width: 100%;
}

바이올린은 다음과 같습니다. http://jsfiddle.net/uw8f9/


65
이 솔루션은 90 %의 사례에 적합하지 않습니다. 당신이 당신의 창 크기를 다시 경우, 바닥 글은 다른 콘텐츠를 오버레이하고 콘텐츠의 끝에 바로 멈추지 않을 것이다
VSYNC

10
@aroth 그것은 완전히 다른 두 가지 솔루션이기 때문입니다. 이 솔루션은 바닥 글을 항상 화면의 시각적 영역 하단에 유지합니다. 대체 솔루션은 바닥 글이 화면 하단 또는 페이지 하단에 표시되도록합니다.
내 머리

6
@MyHeadHurts-당신 말이 맞아요. 답을 한 후에는 이것이 OP가 원하는 것이 아니라는 것을 깨달았지만 간단한 고정 바닥 글을 찾는 사람들을 위해 여기에 남겨 두었습니다. 의견 (및 투표)에서 많은 사람들 이이 기본 CSS 기능으로 어려움을 겪고있는 것 같습니다.
Joseph Silber

1
@MyHeadHurts-충분히 공정하지만 내 돈은 여전히 ​​기본적으로 동일합니다. fixed충분한 내용이있을 경우 바닥 글 아래에 내용이 스크롤 됩니다. 그것은 나에게 충분합니다. 물론, stackoverflow에있는 것과 같은 매우 큰 바닥 글이 fixed접근 방식에서 제대로 작동하지 않는 것을 알 수 있지만 기본 한 줄 바닥 글의 경우이 방법이 내 의견으로는 잘 작동합니다.
aroth

@ aroth 나는 이것이 좋은 해결책이며 그것이 당신이 원하는 것에 달려 있다는 것에 동의합니다. 방금 한 솔루션이 다른 솔루션보다 더 복잡한 이유를 지적했습니다.-> 그들은 같은 일을하지 않습니다.
내 머리

187

불행히도 약간의 추가 HTML을 추가하지 않고 하나의 CSS를 다른 것에 의존하지 않으면이 작업을 수행 할 수 없습니다.

HTML

첫째로 당신은 당신의 포장 필요 header, footer그리고 #body#holderDIV :

<div id="holder">
    <header>.....</header>
    <div id="body">....</div>
    <footer>....</footer>
</div>

CSS

그런 다음 설정 height: 100%html하고 body(실제 몸이 아니라 당신의 #body당신은 자식 요소에 대한 백분율로 최소 높이를 설정할 수 있도록 DIV).

이제 div min-height: 100%에 설정 #holder하여 화면의 내용을 채우고 div position: absolute바닥에 바닥 글을 배치하는 데 사용 하십시오 #holder.

불행하게도, 당신은 적용해야 padding-bottom받는 사람 #body(가)와 같은 높이 사업부 footer(가)되도록 footer모든 콘텐츠 위에 앉아하지 않습니다이 :

html,body{
    height: 100%
}

#holder{
    min-height: 100%;
    position:relative;
}

#body{
    padding-bottom: 100px;    /* height of footer */
}

footer{
    height: 100px; 
    width:100%;
    position: absolute;
    left: 0;
    bottom: 0; 
}

실제 예, 짧은 본문 : http://jsfiddle.net/ELUGc/

실제 예, 긴 본문 : http://jsfiddle.net/ELUGc/1/


너비가 100 % 인 이유를 알 수 없습니다. 필수
Somnath Kharat

4
@sTACKoVERFLOW은 - 당신은 지정하지 않은 경우 width 또는 둘 모두를 left 하고 right다음 값으로 설정 auto하고 요소는 내용에 맞게 포장됩니다. 지정 width: 100% 또는 left: 0right:0절대적으로 위치 요소는 컨테이너 요소의 전체 폭을 취하도록합니다
머리가 아파

비슷한 동작을 찾고 있었지만 제 경우에는 "float : left"라고 말하여 #body div가 플로팅되었습니다. 짧은 본문 예는 작동하지만 긴 본문 예는 작동하지 않습니다. #body div에서 float을 사용하여 원하는 동작을 얻는 방법에 대한 제안 사항이 있습니다.
Jatin

@Ian은 대답하기에 충분한 담당자가 없기 때문에 대답했습니다. 이 작업을 수행하기 위해 HTML 및 BODY 태그뿐만 아니라 FORM 태그를 생성했습니다.
msouth

당신이 아니라 몸 전체의 내부보다 DIV 내부 작업이 얻을하려는 경우, 당신이 지정하기 height=100%모두 포함하여 포함 된 요소의 <form>요소.
Ben Caine

13

위의 예제에서 나에게 버그 (어딘가 error)가있는 다른 솔루션을 위해 해결했습니다. 선택한 답변과 다른 것입니다.

html,body {
    height: 100%
}

#nonFooter {
    min-height: 100%;
    position:relative;
    /* Firefox */
    min-height: -moz-calc(100% - 30px);
    /* WebKit */
    min-height: -webkit-calc(100% - 30px);
    /* Opera */
    min-height: -o-calc(100% - 30px);
    /* Standard */
    min-height: calc(100% - 30px);
}

#footer {
    height:30px;
    margin: 0;
    clear: both;
    width:100%;
    position: relative;
}

HTML 레이아웃

<body>
    <div id="nonFooter">header,middle,left,right,etc</div>
    <div id="footer"></div>
</body>

글쎄,이 방법은 오래된 브라우저를 지원하지 않지만 바닥 글을보기 위해 오래된 브라우저가 30px 아래로 스크롤되도록 허용됩니다.


5

나는 '다른 답변에 응답하기 위해 이것을 사용하지 않는다'고 말하지만 불행히도 적절한 답변 (!)에 의견을 추가 할 충분한 담당자가 없지만 ...

'My Head Hurts'의 대답으로 asp.net에 문제가있는 경우 HTML 및 BODY 태그뿐만 아니라 기본 생성 된 FORM 태그에 'height : 100 %'를 추가해야합니다.


4

당신은 당신을 닫지 않았다; 위치 후 : 절대. 그렇지 않으면 위의 코드가 완벽하게 작동했을 것입니다!

#footer {
   position:absolute;
   bottom:30px;
   width:100%;
}

3

내가 할 수 있다면 댓글을 달았지만 아직 권한이 없으므로 일부 안드로이드 장치에서 예기치 않은 동작에 대한 힌트로 힌트를 게시합니다.

위치 : 고정은 다음 메타 태그를 사용하여 Android 2.1 ~ 2.3에서만 작동합니다.

<meta name="viewport" content="width=device-width, user-scalable=no">.

http://caniuse.com/#search=position 참조


2

이것은 최소 높이를 뷰포트 높이에서 바닥 글 높이를 뺀 값으로 설정하는 viewport 명령을 사용하는 직관적 인 솔루션입니다.

html,body{
height: 100%
}
#nonFooter{
min-height: calc(100vh - 30px)
}

#footer {
height:30px;
margin: 0;
clear: both;
width:100%;
}

1

모든 주요 콘텐츠를 여분의 div 태그 (id = "outer")에 넣음으로써 비슷한 문제를 해결했습니다. 그런 다음이 마지막 "외부"div 태그 외부에서 id = "footer"가있는 div 태그를 이동했습니다. CSS를 사용하여 "outer"의 높이를 지정하고 "footer"의 너비와 높이를 지정했습니다. 또한 CSS를 사용하여 "footer"의 margin-left 및 margin-right를 auto로 지정했습니다. 결과적으로 바닥 글이 내 페이지의 맨 아래에 단단히 고정되어 페이지와 함께 스크롤됩니다 (하지만 여전히 "외부"div 내부에 표시되지만 기본 "콘텐츠"div 외부에서는 행복하지만 이상한 것 같습니다. 내가 원하는 곳).


1

나는 단지 덧붙이고 싶다-다른 답변의 대부분은 나에게 잘 작동했다. 그러나 작동시키는 데 시간이 오래 걸렸습니다!

설정은 height: 100%부모 div의 높이 만 선택하기 때문입니다 !

따라서 전체 HTML (본문 내부)이 다음과 같은 경우

<div id="holder">
    <header>.....</header>
    <div id="body">....</div>
    <footer>....</footer>
</div>

그러면 다음이 잘 될 것입니다.

html,body{
    height: 100%
}

#holder{
    min-height: 100%;
    position:relative;
}

#body{
    padding-bottom: 100px;    /* height of footer */
}

footer{
    height: 100px; 
    width:100%;
    position: absolute;
    left: 0;
    bottom: 0; 
}

"홀더"는 "몸체"에서 직접 높이를 가져옵니다.

내 머리 아파에 대한 쿠도스, 그의 대답은 내가 일하게 된 결과였습니다!

하나. 전체 페이지의 요소이거나 특정 열 내에 있기 때문에 html이 더 중첩 된 경우 모든 포함 요소height: 100%div에 설정되어 있는지 확인해야합니다 . 그렇지 않으면 "body"와 "holder"사이의 키에 대한 정보가 손실됩니다.

예를 들어, 모든 div에 "전체 높이"클래스를 추가하여 높이가 머리글 / 본문 / 바닥 글 요소까지 내려 오는지 확인하십시오.

<div class="full-height">
    <div class="container full-height">
        <div id="holder">
            <header>.....</header>
            <div id="body">....</div>
            <footer>....</footer>
        </div>
    </div>
</div>

CSS에서 전체 높이 클래스의 높이를 설정해야합니다.

#full-height{
    height: 100%;
}

내 문제가 해결되었습니다!


0

고정 높이 바닥 글이있는 경우 (예 : 712px) js로 다음과 같이 할 수 있습니다.

var bgTop = 0;
window.addEventListener("resize",theResize);
function theResize(){
    bgTop = winHeight - 712;
    document.getElementById("bg").style.marginTop = bgTop+"px";
}

0
position: fixed;
bottom: 0;
(if needs element in whole display and left align)
left:0;
width: 100%;

다른 사람들이이 답변을 이해하도록 돕기 위해 귀하의 답변, 문제점 및이 스 니펫이이를 해결하는 방법을 설명하십시오.
FZs

-2

고정식 부트 스트랩 클래스 사용

<div id="footer" class="fixed-bottom w-100">

OP가 Bootstrap을 사용하고 있다는 표시는 없습니다.
TylerH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.