Ich versuche, einen weiteren Leuchtkasten zu erstellen, der die dringend benötigte HTML / CSS / Javascript-Praxis benötigt, aber ich bin auf ein Styling-Problem gestoßen, das trivial aussieht (und wahrscheinlich auch so ist!), Aber ich kann es einfach nicht lösen.
Ich habe eine div
, die eine enthält img
. Egal , was ich versuche , ( border
, margin
, padding
, Auto Höhe etc.) Ich kann einfach nicht machen div
schrumpft die Bildabmessungen entsprechen. Ich habe das Problem auf Folgendes reduziert:
<!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' ist 640x400, aber der Container div möchte 640x404 sein, wobei sich der Unterschied als schwarzer Streifen unter dem Bild zeigt. Das Div ist vorhanden, damit ich das Bild schwarz färben kann, indem ich seine Deckkraft auf 0 reduziere, es austausche und dann wieder einblende.
Ich habe mir die berechneten Stile in mehreren Browsern angesehen und kann nicht sehen, woher das 4px-Delta kommt.
img
ist ein Implizitline-height
zugeordnet, das ihm einen vertikalen Raum zum Atmen gibt. Da diesline-height
nur fürinline
Elemente gilt, wird durch Setzen vonimg
to dasdisplay: block
entferntline-height
.inline-block
. Danke für die Erklärung.Ihr Bild verwendet die Zeilenhöhe des übergeordneten Bilds. Versuche dies:
.imagebg { line-height: 0 }
quelle
Versuchen Sie hinzuzufügen:
vertical-align: middle;
Dies wird in Google Material Design Lite verwendet, um die Lücke zwischen Audio, Leinwand, Iframes, Bildern, Videos und dem Boden ihrer Container zu schließen.
Material Design Lite: https://getmdl.io
Github-Diskussion: https://github.com/h5bp/html5-boilerplate/issues/440
quelle
Abgesehen von anderen Arbeitsantworten sollte die
display
Eigenschaft des Elternteilsflex
auch für mich arbeiten:.imagebg { display: flex }
quelle
Grundsätzlich erhalten Sie diesen Fehler im IE, obwohl Sie nicht erwähnt haben, aber das ist die Tatsache. IE generiert zusätzlichen Platz unter dem
<img>
Tag. Daher ist es eine gute Praxis, die Bilder zu machenimg { display: block; }
.EDIT: Man kann sagen, es ist ein Fehler von IE
quelle
Wenn Sie
display
das Element nicht ändern möchten , versuchen Sie esmargin-bottom: -4px;
quelle