Sto provando a produrre un altro lightbox come pratica HTML/CSS/Javascript tanto necessaria, ma ho riscontrato un problema di stile che sembra banale (e probabilmente lo è!) Ma non riesco a risolverlo.Perché il contenitore div insiste per essere leggermente più grande del contenuto IMG o SVG?
Ho un div
che contiene uno img
. Non importa cosa provo (border
, margin
, padding
, altezza automatica, ecc.) Non riesco a rendere lo div
stretto per abbinare le dimensioni dell'immagine. Ho ridotto il problema a questo:
<!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' è 640x400, ma il div contenitore vuole essere 640x404, la differenza mostrandosi come una striscia nera sotto l'immagine. Il div esiste in modo tale che io possa sfumare l'immagine in nero mescolando la sua opacità fino a 0, scambiarla, quindi ricomporla.
Ho guardato gli stili calcolati in più browser e non riesco a vedere dove il delta 4px proviene da.
che fa davvero risolvere il problema. Potresti spiegare perché fa la differenza? (Non mi sto impegnando ad accettare - SO non mi lascerà attendere altri 11 minuti) – Chris
@Chris - è la ragione per cui ti ho dato: il 'img' ha un' line-height' implicito assegnato ad esso , che gli dà un po 'di respiro verticale.Poiché 'line-height' si applica solo agli elementi' inline', l'impostazione di 'img' su' display: block' rimuove 'line-height'. –
@Joseph - Non avevo visto la tua risposta quando ho fatto la richiesta di cui sopra. Dal momento che sostanzialmente stanno ottenendo esattamente la stessa cosa direttamente e indirettamente, non c'è molto da scegliere tra le risposte. Sembra giusto accettare la risposta che è arrivata prima, ma grazie per la tua spiegazione. – Chris