如何在html5中居中canvas
我一直在寻找一个解决scheme,但还没有find任何东西。 也许这只是我的search条件。 那么,我试图根据浏览器窗口的大小制作canvas中心。 canvas是800×600。 如果窗口低于800×600,它应该resize(但目前不是很重要)
为canvas提供以下CSS样式属性:
canvas { padding-left: 0; padding-right: 0; margin-left: auto; margin-right: auto; display: block; width: 800px; }
编辑
由于这个答案是相当stream行的,让我添加一点点细节。
上面的属性将水平居中canvas,div或其他任何相对于父项的节点。 没有必要更改顶部或底部边距和填充。 您指定宽度并让浏览器用剩余空间填充自动边距。
但是,如果你想input较less,你可以使用任何你想要的CSS速记属性,如
canvas { padding: 0; margin: auto; display: block; width: 800px; }
垂直居中canvas需要不同的方法。 您需要使用绝对定位,并指定宽度和高度。 然后将左侧,右侧,顶部和底部属性设置为0,并让浏览器用剩余空间填充自动边距。
canvas { padding: 0; margin: auto; display: block; width: 800px; height: 600px; position: absolute; top: 0; bottom: 0; left: 0; right: 0; }
canvas将以position
设置为relative
或absolute
的第一个父元素为中心,或者如果没有find元素,则为主体。
另一种方法是使用display: flex
,这在IE11中是可用的
另外,请确保您使用的是最近的文档types,如xhtml或html 5。
你可以给你的canvas的CSS属性:
#myCanvas { display: block; margin: 0 auto; }
只要在HTML中心的div:
#test { width: 100px; height:100px; margin: 0px auto; border: 1px solid red; } <div id="test"> <canvas width="100" height="100"></canvas> </div>
只要将高度和宽度更改为任何值,并且已经有一个居中的div
以上答案只适用于您的canvas与容器宽度相同的情况。
这工作不pipe:
#container { width: 100px; height:100px; border: 1px solid red; margin: 0px auto; text-align: center; } #canvas { border: 1px solid blue; width: 50px; height: 100px; }
<div id="container"> <canvas id="canvas" width="100" height="100"></canvas> </div>
我有同样的问题,因为我有很多不同宽度的图片,我只加载高度信息。 设置宽度可以让浏览器伸展和挤压图片。 我通过在image_tag行居中之前的文本行解决了这个问题(也摆脱了float:left;)。 我希望文本能够保持一致,但是这是一个小小的不便,我可以容忍。