2013-04-04 14 views
8

Sto affrontando uno strano problema.Div contenente canvas ha uno strano margine inferiore di 5px

in breve:

Quando abbiamo messo una tela in un div e impostare la dimensione della tela, il div è automaticamente 5px più grande della tela, mentre mi aspetto di ottenere la stessa dimensione esatta.

questa domanda è un seguito di this answer così mi prendo lo stesso esempio, il problema è stato riprodotto in Firefox e in Google Chrome. (non provate altri browser)

<div> 
    <canvas height="300px" width="200px"></canvas> 
</div> 

CSS:

div { 
    border: 2px solid blue; /* demo purposes */ 
    display: inline-block; 
} 
canvas { 
    background-color: khaki; /* demo purposes */ 
} 

risultato (vedere lo spazio bianco nel div):

result

Si può anche vedere questo esatto stesso esempio (molto semplice) in this JSfiddle

Perché ciò accade e come possiamo prevenirlo?

risposta

14

È possibile evitare che ciò accada aggiungendo display: block al css per l'elemento canvas.

cioè:

canvas { 
    background-color: khaki; /* demo purposes */ 
    display: block; 
} 
+0

grazie, ma mi piacerebbe sapere di più su di esso, se non impostare la visualizzazione per bloccare, qual è il valore di visualizzazione predefinita e perché ci fa uno spazio vuoto sotto la tela? – Guian

+2

Lo spazio appare a causa del modello di formattazione in linea. È un argomento complicato che non capisco completamente me stesso, ma puoi leggerlo a riguardo [qui] (http://reference.sitepoint.com/css/inlineformatting) e [qui] (http://meyerweb.com/ eric/css/inline-format.html). –

+5

+1, hai ragione ovviamente! Lo spazio in basso è lo spazio bianco effettivo che viene reso. Se si imposta [line-height' su 0] (http://jsfiddle.net/kpdgQ/) lo spazio scompare. – Jeroen

Problemi correlati