[解決済み] ブラウザのウィンドウに収まるように画像をリサイズするには?
2022-05-07 02:02:38
質問内容
これは些細なことに思えるのですが、いろいろ調べてコーディングした結果、うまくいきません。条件は以下の通りです。
- ブラウザのウィンドウサイズが不明である。そのため、絶対的なピクセルサイズを含む解決策を提案しないでください。
- 画像の元の寸法は不明で、すでにブラウザのウィンドウにフィットしているかどうかも不明です。
- 画像は縦と横の中央に配置されています。
- 画像のプロポーションが保たれていること。
- 画像はウィンドウ内に全体が表示されること(トリミング不可。)
- スクロールバーが表示されないようにしたい(画像が収まる範囲であれば表示されないはずです。)
- 画像は、ウィンドウの大きさが変わると自動的にサイズ変更され、元のサイズより大きくならずに利用可能なスペースをすべて占めます。
基本的に私が欲しいのはこれです。
.fit {
max-width: 99%;
max-height: 99%;
}
<img class="fit" src="pic.png">
上のコードの問題は、それが機能しないことです。picは、垂直スクロールバーを追加することによって、必要なすべての垂直スペースを取ってしまいます。
PHP、Javascript、JQueryは自由に使えますが、CSSだけのソリューションが欲しいです。IEで動かなくてもかまわない。
どのように解決するのですか?
2018-04-11更新
ここでは、Javascriptレスで。 CSSのみ を解決します。画像は動的に中央に配置され、ウィンドウに合うようにサイズが変更されます。
<html>
<head>
<style>
* {
margin: 0;
padding: 0;
}
.imgbox {
display: grid;
height: 100%;
}
.center-fit {
max-width: 100%;
max-height: 100vh;
margin: auto;
}
</style>
</head>
<body>
<div class="imgbox">
<img class="center-fit" src='pic.png'>
</div>
</body>
</html>
もうひとつの古い] 解決策では、JQuery を使用して、画像コンテナの高さを設定します (
body
を表示するようにします。
max-height
プロパティは期待通りに動作します。また、クライアントウィンドウのサイズが変更されると、画像も自動的にリサイズされます。
<!DOCTYPE html>
<html>
<head>
<style>
* {
padding: 0;
margin: 0;
}
.fit { /* set relative picture size */
max-width: 100%;
max-height: 100%;
}
.center {
display: block;
margin: auto;
}
</style>
</head>
<body>
<img class="center fit" src="pic.jpg" >
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" language="JavaScript">
function set_body_height() { // set body height = window height
$('body').height($(window).height());
}
$(document).ready(function() {
$(window).bind('resize', set_body_height);
set_body_height();
});
</script>
</body>
</html>
注:ユーザーgutierrezalexは、このページでJQueryプラグインとして非常によく似た解決策をパッケージ化しています。
関連
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] div 内の画像を縦に並べる方法
-
[解決済み] クリック可能なラベルを持つチェックボックスを作成するには?
-
[解決済み] ボディの高さをブラウザの高さの100%にする
-
[解決済み] CSS 背景の不透明度 [重複]について
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ローカルリソースのロードが許可されていない問題を解決する
-
[解決済み] BootstrapのCollapse Navbarが動作しない
-
[解決済み] HTMLのテーブルからボーダーを完全に削除する方法
-
[解決済み] bootstrapでボタンにリンクを貼るには?
-
[解決済み] HTMLで複数選択を許さないリストボックスを作るには?
-
[解決済み] 箇条書きのない順序なしリストが必要です。
-
[解決済み] 入力テキストボックスの値を取得する
-
[解決済み] HTML5でfloat入力タイプはありますか?
-
[解決済み] HTMLアンカーは'name'と'id'のどちらで作成するのが良いですか?
-
[解決済み] 検索エンジンはAngularJSアプリケーションをどのように扱っているのか?