HTML / CSS / Javascript 연습에 필요한 또 다른 라이트 박스를 제작하려고했지만 사소한 스타일링 문제가 발생했습니다 (아마도!).하지만 해결할 수 없습니다.
나는이 div
가 포함를 img
. 내가 시도 상관없이 ( border
, margin
, padding
, 자동 높이 등) 난 그냥 할 수없는 div
이미지 크기에 맞게 축소합니다. 나는 이것으로 문제를 줄였습니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<title>Layout experiments</title>
<style type="text/css">
#lightbox {
margin: 0;
padding: 0;
position : fixed;
left : 50%;
margin-left : -320px;
top : 100px;
border-radius: 22px;
background : #e0e0f0;
color : #102020;
}
#lightbox img {
border-radius: 15px;
}
.imagebg {
margin : 7px;
background : black;
border-radius: 15px;
height : 100%;
}
</style>
</head>
<body>
<div id="lightbox">
<div class="imagebg">
<img src="picture.jpg">
</div>
</div>
</body>
</html>
‘picture.jpg’는 640×400이지만 컨테이너 div는 640×404를 원하며 차이는 이미지 아래에 검은 색 줄로 표시됩니다. div가 존재하므로 불투명도를 0으로 블렌딩하여 이미지를 검은 색으로 바꾼 다음 스왑 한 다음 다시 블렌드 할 수 있습니다.
여러 브라우저에서 계산 된 스타일을 살펴 봤는데 4px 델타가 어디에서 오는지 알 수 없습니다.
답변
추가 시도 :
img { display: block; }
CSS에. <img>
는 기본적으로 인라인 요소 이므로 기본 줄 높이 값과 관련하여 높이가 다르게 계산됩니다.
인라인 요소에서 line-height CSS 속성은 라인 상자 높이 계산에 사용되는 높이를 지정합니다.
블록 수준 요소에서 line-height는 요소 내에서 줄 상자의 최소 높이를 지정합니다.
출처 : https://developer.mozilla.org/en/CSS/line-height
답변
이미지가 부모의 줄 높이를 사용하고 있습니다. 이 시도:
.imagebg { line-height: 0 }
답변
추가해보십시오 :
vertical-align: middle;
이것은 오디오, 캔버스, iframe, 이미지, 비디오 및 컨테이너 하단 사이의 간격을 제거하기 위해 Google 머티리얼 디자인 라이트에서 사용됩니다.
머티리얼 디자인 라이트 : https://getmdl.io
Github 토론 : https://github.com/h5bp/html5-boilerplate/issues/440
답변
다른 작업 답변 외에도 display
부모의 속성을 설정 flex
하여 나를 위해 일했습니다.
.imagebg { display: flex }
답변
기본적으로 IE 에서이 오류가 발생하지만 언급하지 않았지만 이것이 사실입니다. IE는 <img>
태그 아래에 추가 공간을 생성합니다 . 따라서 이미지를 만드는 것이 좋습니다 img { display: block; }
.
편집 : IE의 버그라고 말할 수 있습니다.
답변
display
요소 를 변경하고 싶지 않다면
margin-bottom: -4px;