Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

There is a 4px gap below canvas/video/audio elements in HTML5

Tags:

html

css

canvas

When using HTML5, if you place a canvas/video/audio/svg element in a div, there will be a 4px gap below these elements. I tested the code below in almost all browsers which support HTML5, unfortunately they all have the same problem.

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Bug</title> </head> <body> <div style="border: 1px solid blue"> <canvas width="200" height="100" style="border: 1px solid yellow"></canvas> </div> </body> </html> 
like image 982
user994778 Avatar asked Dec 22 '11 06:12

user994778


1 Answers

It's because they are inline elements with resizable height (most inline elements are not explicitly resizable). If you set them to display: block; the gap goes away. You can also set vertical-align: top; to achieve the same result.

Demo: http://jsfiddle.net/ThinkingStiff/F2LAK/

HTML:

<div class="container">     <canvas width="200" height="100"></canvas> </div> <div class="container">     <canvas id="block" width="200" height="100"></canvas> </div> 

CSS:

.container {     border: 1px solid blue; }  canvas {     border: 1px solid red; }  #block {     display: block; } 

Output:

enter image description here

like image 149
ThinkingStiff Avatar answered Sep 21 '22 12:09

ThinkingStiff