2013-08-24 6 views
2

내 레이아웃의 맨 아래에 얇은 줄 (어쩌면 1px)이 있는지 궁금해하고 있으며, 마지막으로 Eric Meyer의 재설정에서 body {line-height: 1;}을 정확히 찾아 냈습니다. 파일. 어떤 이유로,이 설정으로 인해 html 요소가 내 바닥 글 바로 앞까지 확장됩니다.CSS 리셋의 'Line-height : 1'은 HTML 배경이 확장되도록합니다.

배경색이 회색 인 기본 div가있는 슈퍼 간단한 페이지에서 html 배경을 빨간색으로 설정하여 창 아래쪽에 선이 표시되도록했습니다. 메인 div, p 태그 또는 img의 높이 설정을 사용하여 재생하면 메인 div의 높이 설정이있을 때만 선이 사라집니다. (나는 실제 프로젝트를 수정하기 위해 그 정보를 사용하려고 시도했지만 거기에서 작동하지 않는 것 같습니다 ...)

내가 무슨 말을하는지보고 싶다면 간단한 jsfiddle을 만들었습니다. - http://jsfiddle.net/DFDj8/ - 변경 #main img {height: 800px;}은 단지 #main {height: 800px;}으로 하단의 빨간색 선을 제거합니다. 재설정에서 line-height 설정을 주석 처리하는 것은 동일합니다.

어떤 일이 일어나고 있는지 생각해보십시오. 이것에 대해 설명하는 다른 게시물이 있다면 링크를 자유롭게하십시오. 비슷한 것을 찾을 수 없습니다.

감사합니다.

* 마지막 요소로 블록 레벨 바닥 글 업데이트 jsfiddle - http://jsfiddle.net/DFDj8/6/

jsfiddle의 코드는 에릭 마이어의 재설정과 다음이 포함

html, body { 
    background: red;} 
#main { 
    background: gray;} 
#main img { 
    height: 800px; 
    display: block;} 


<body> 
    <div id="main"> 
      <p>paragraph paragraph</p> 
      <img src="http://auntdracula.com/wp-content/uploads/2013/05/Delicious_Steaz_Soda.jpg" /> 
    </div> 
    <footer> 
     <p>&copy; 2013</p> 
    </footer> 
</body> 
+0

에 오신 것을 환영합니다 SO에! 질문에 답변 할 수있는 기회를 최대화하기 위해 외부 사이트에 링크하는 대신 코드의 [짧고 독립적 인 그리고 정확한] (http://sscce.org/) 예제를 게시하십시오. – idoby

답변

1

먼저 재설정 코드와 같은 불필요한 것들을 모두 제거한 simplified fiddle을 만들었습니다. 리서치 코드를 좋아하지 않습니다. 연구를 진행할 때 방해가 될 수 있습니다.

어쨌든 line-height을 줄이면 빨간색 픽셀 수가 증가한다는 것을 알았습니다. 따라서 이미지 아래 디 센더를위한 공간과 관련이 있습니다.
즉, display:block을 img의 스타일에 추가하면 문제가 사라집니다. newer fiddle을 참조하십시오.

그러면 다른 관련없는 속성에 대해 더 이상 걱정할 필요가 없습니다.

편집 : 본문의 마지막 요소 인 텍스트 줄이 있으면 편집도 잘못됩니다. 분명히, 폰트 디 센더는 그 라인 높이에 비해 너무 커서 라인에서 오버 플로우됩니다. 그러므로 몸 밖으로. 따라서 솔루션은 해당 요소의 오버플로를 숨기는 것입니다.

body :last-child {overflow-y:hidden} 

more updated fiddle을 참조하십시오.

또는,이 경우, 해결책은 1.2에서 라인 높이를 유지하는 것입니다,하지만 당신은 더 esotericly 모양의 글꼴과 같은 문제가있을 수 있습니다 ...

+0

Mr Lister에게 감사드립니다.

과 같이 마지막 요소가 이미 블록 수준 인 경우 문제를 해결하는 방법을 알려주시겠습니까? 바닥 글이있는 새 jsfiddle을 포함하도록 원래 게시물을 업데이트했습니다. – nicolekanderson

+0

OK, OK, 결국 선의 높이가 문제가됩니다. 분명히, 폰트 디 센더는 그 라인 높이에 비해 너무 커서 라인에서 오버 플로우됩니다. 그러므로 몸 밖으로. 그래서 해결책은 그 오버 플로우를 숨기는 것입니다. 내 편집을 참조하십시오. –

+0

나는 Javascript를 사용하여 부모 요소를 정확히 채우기 위해 자식 요소의 높이를 설정하는 비슷한 문제에 직면했습니다. 이 작업을 수행하면 부모 요소의 마지막 요소에있는 글꼴의 디 센더가 오버플로되어 1 픽셀 스크롤 막대가 발생합니다. 필자는 마지막 요소에 패딩 1 픽셀을 추가하여이 문제를 해결했습니다. 외관상으로는 디 센더가 요소의 패딩을 먹을 수 있습니다. – pgraham

0

마지막 요소는 표시입니다 : 기본적으로 인라인을하고 줄 높이가 그 위에 있어야합니다. 표시 할 이미지를 설정하십시오 : 블록; 그 문제는 없을 것입니다.

+0

응답 해 주셔서 감사합니다. img을 display : block으로 변경하면이 예에서 고정되지만, 바닥 글이 페이지의 마지막 요소 인 경우에도 동일한 문제가 발생합니다.바닥 글 요소가 블록 수준이라는 인상을 받고있었습니다. 꼬리말로 마지막 요소 인 jsfiddle을 새로 만들었습니다 - http://jsfiddle.net/DFDj8/6/ – nicolekanderson