[解決済み] キャンバスを親と同じ大きさ、同じ高さにする
2023-01-20 13:04:35
質問
長方形のキャンバスを作ってプログレスバーを表示させたいのですが しかし、私がキャンバスの幅と高さを100%に設定したとき、それは実際に親のように高さと幅を作ることはないようです。
以下の例を参照してください。
http://jsfiddle.net/PQS3A/
正方形でないキャンバスを作ることは可能でしょうか? キャンバスの高さと幅をハードコードしたくありません。モバイルデバイスを含む、より大きな画面や小さな画面で見たときに動的に変化する必要があるからです。
どのように解決するのですか?
問題を解決した動作例です。
http://jsfiddle.net/PQS3A/7/
あなたの例では、いくつかの問題がありましたね。
-
A
<div>
にはheight
またはwidth
という属性があります。これらはCSSで設定する必要があります。 -
div が正しいサイズであったとしても、デフォルトの
position:static
を使用しています。これは、div がどの子の親としても位置決めされていないことを意味します。canvas を div と同じサイズにしたい場合は、div をposition:relative
(またはabsolute
またはfixed
). -
は
width
とheight
属性は、描画するデータのピクセル数(画像の実際のピクセルのようなもの)を指定するもので、Canvasの 表示サイズ とは別のものです。これらの属性は整数に設定する必要があります。
上記のリンク先の例では、CSS を使用して div のサイズを設定し、positioned parent にしています。JS 関数(下図)を作成し、canvas のサイズが同じになるように設定しています。
表示
と同じサイズになるように設定し、内部の
width
と
height
プロパティで、表示と同じピクセル数になるようにします。
var canvas = document.querySelector('canvas');
fitToContainer(canvas);
function fitToContainer(canvas){
// Make it visually fill the positioned parent
canvas.style.width ='100%';
canvas.style.height='100%';
// ...then set the internal size to match
canvas.width = canvas.offsetWidth;
canvas.height = canvas.offsetHeight;
}
関連
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] CSSの親セレクタはありますか?
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] セレクトボックスのプレースホルダーを作成するにはどうすればよいですか?
-
[解決済み] 再描画のためにキャンバスをクリアする方法
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] ECMAScriptとは?
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行
-
[解決済み] これは純関数ですか?
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?