2013-05-24 11 views
7

をページを取り上げます。キャンバスが、私はこのコードを使用して、私のキャンバスを中心としていますInternet Explorerで

position:absolute; 
top:50%; 
left:50%; 
margin-top:-200px; /* Half of canvas height */ 
margin-left:-275px; /* Half of canvas width */ 

それは、ページ全体をカバーし、IE9とInternet Explorerで10以外のすべてのブラウザで完璧に動作します。 IEでキャンバスのセンタリングをサポートすることは可能ですか?

+0

CSSでも幅を指定しましたか? –

+0

@BramVanroyいいえ? – user1431627

+0

@Pete http://pastebin.com/wMz33J5Q – user1431627

答えて

7

margin: 0 auto;display: block;とのセンタリングは、ほぼすべてのブラウザ - <canvas>をサポートしています。

ライブ例:http://jsbin.com/ovoziv/2

HTML

<!DOCTYPE html> 
<html> 
<head> 
<meta charset=utf-8 /> 
<title>Centring Canvas</title> 
</head> 
<body> 

    <canvas></canvas> 

</body> 
</html> 

CSS

canvas { 
    display: block; 
    background: #FFFFB7; 
    width: 550px; 
    height: 400px; 
    margin: 0 auto; 
} 

EDIT:更新された答えは、あまりにも縦中央に。このCSSはトリックを行います:

canvas { 
    background-color: #FFFFB7; 
    width: 550px; 
    height: 400px; 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    margin-left: -275px; 
    margin-top: -200px; 
} 

今説明します。最初にを使用して、キャンバスを上端と左端から50%オフセットして、topleft50%に設定します。次に、キャンバスに静的なサイズがあるため、幅とサイズの半分(550x400/2 = 275x200)の場合は、margin-left: -275px; margin-top: -200px;の負のマージン(要素が絶対配置されていない場合は絶対にしないでください)を追加します。

キャンバスが画面の中央に表示されるようになりました。これを別の要素の中で行い、その要素を中心にしたい場合は、その要素にposition: relative;を追加してください。そうすれば、その要素の代わりにその境界を使用します。

ライブ例:http://jsbin.com/ovoziv/6

+0

しかし、それは垂直にセンタリングされておらず、水平のみです。 – user1431627

+0

@ user1431627私は自分の答えを更新しました。基本的にあなたのコードですが、とにかく働くようです。 – Broxzier

+1

問題を見つけました。 IEの設定は、ページ全体を拡大するように設定されていました。Embarrasing:P – user1431627

関連する問題