質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2834閲覧

別ウィンドウで開く画像に余白が付いてしまう。

tmyk1979

総合スコア145

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/03/03 00:12

前提・実現したいこと

画像をクリックした時、別ウィンドウで大きめの画像を余白無しで開くようにしたいのですが、Chromeで見たところ別ウィンドウで開いた画像の右と下に余白が付いてしまいます。この余白が出ないように画像サイズピッタリに別ウィンドウを開きたいです。

発生している問題・エラーメッセージ

エラーは特に出ません。

該当のソースコード

html

1<!DOCTYPE html> 2<html dir="ltr" lang="ja" data-whatintent="keyboard"> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>別ウィンドウで画像を開く</title> 7 <link href="css/style.css" rel="stylesheet" type="text/css"> 8 <script src="javascript/jquery-1.12.4.js"></script> 9 <script src="javascript/phone-number.js"></script> 10 <!--[if (gte IE 6)&(lte IE 8)]><script type="text/javascript" src="javascript/selectivizr-min.js"></script><![endif]--> 11 <!--[if lt IE 9]><script type="text/javascript" src="javascript/html5shiv.js">  </script><![endif]--> 12 <!--[if lt IE 9]><script type="text/javascript" src="javascript/css3-mediaqueries.js"></script><![endif]--> 13</head> 14 15<body> 16 17 <!-- メイン --> 18 <div id="main" role="main"> 19 20  <section> 21   <div class="content"> 22    <div class="pictures_02 clearfix"> 23     <div class="picture"><img id="photo01" class="size_210x140" src="images/photo6.jpg" onclick="imgwin('photo6_origin.jpg')" alt="白いセーターの女性" title="" width="210" height="140" tabindex=0></div> 24     <div class="picture"><img id="photo02" class="size_210x140" src="images/photo7.jpg" onclick="imgwin('photo7_origin.jpg')" alt="天使の女性" title="" width="210" height="140" tabindex=0></div> 25     <div class="picture"><img id="photo03" class="size_210x140" src="images/photo8.jpg" onclick="imgwin('photo8_origin.jpg')" alt="寝転ぶ女性" title="" width="210" height="140" tabindex=0></div> 26     <div class="picture"><img id="photo04" class="size_210x140" src="images/photo9.jpg" onclick="imgwin('photo9_origin.jpg')" alt="ピンク髪の女性" title="" width="210" height="140" tabindex=0></div> 27     <div class="picture"><img id="photo05" class="size_210x140" src="images/photo10.jpg" onclick="imgwin('photo10_origin.jpg')" alt="夕日と女性" title="" width="210" height="140" tabindex=0></div> 28     <div class="picture"><img id="photo06" class="size_210x140" src="images/photo11.jpg" onclick="imgwin('photo11_origin.jpg')" alt="花束を持つ女性" title="" width="210" height="140" tabindex=0></div> 29    </div> 30   </div> 31  </section> 32 33 </div> 34 <!-- / メイン --> 35 36 <script src="javascript/what-input.js"></script> 37 38 <script src="javascript/window_photo_03.js"></script> 39 40</body> 41</html> 42

JavaScript

1var image = new Image(); 2 image.src = "http://cgi1.plala.or.jp/~tmyk1979/images/"+img;//高さと幅を取得したいURLを入力 3console.log(image.src); 4 image.addEventListener("load", function(event){ 5 var img_width = image.width; // 幅 6 var img_height = image.height; // 高さ 7console.log(img_width); 8console.log(img_height); 9/* ウィンドウを開く位置、ウィンドウサイズを指定 */ 10 var opt = ""; 11 opt+='top=0,left=0'; 12 opt+=',width='+img_width+',height='+img_height+','; 13 opt+='directories=0,toolbar=0,menubar=0,scrollbars=0,status=0,resizable=0'; 14 /* 新ウィンドウを開く */ 15 jsw=window.open("","jsw",opt); 16console.log(jsw); 17 jsw.focus(); 18 /* 新ウィンドウにドキュメントを書出 */ 19 jsw.document.open(); 20 htm = '<html style="margin:0;padding:0;width:'+img_width+'px;height:'+img_height+'px;">' 21 htm+='<head>'; 22 htm+='<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'; 23 htm+='<title>画像サンプル</title>'; 24 htm+='</head>'; 25 /* body要素の余白をゼロに指定 */ 26 htm+='<bod' + 'y style="margin:0;padding:0;width:'+img_width+'px;height:'+img_height+'px;">'; 27 htm+='<img src="images/'+img+'" width="'+img_width+'" height="'+img_height+'" border="0" alt="" style="margin:0;padding:0;">'; 28 htm+='</bod'+'y></html>'; 29 jsw.document.write(htm); 30 }) 31} 32

試したこと

ウィンドウサイズを指定して開き、htmlタグ、bodyタグ、imgタグそれぞれに同じサイズを指定し、margin,paddingともに「0」を指定したのですがそれでも余白が付いてしまいます。

補足情報(FW/ツールのバージョンなど)

テキストエディタはSublime Text バージョン3.2.2を使っています。
動作確認はGoogle Chrome バージョン80.0.3987.122(Official Build)(64 ビット)を使って行っています。

ここにより詳細な情報を記載してください。

下記URLに症状を再現しております。
http://cgi1.plala.or.jp/~tmyk1979/window_photo_03.html

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんなかんじでやると特に問題はなさそうですが

投稿2020/03/03 00:54

編集2020/03/03 00:55
yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/03/03 05:18 編集

※修正版 <script> window.addEventListener('DOMContentLoaded', ()=>{ document.querySelector('#btn').addEventListener('click',e=>{ console.log(e.target.nodeName) var nWin=window.open('','_blank','height=150,width=200'); var img=Object.assign(document.createElement('img'),{'src':'https://placehold.jp/ff0000/00ffff/200x150.png?text=1',margin:0}); Object.assign(nWin.document.querySelector('body').style,{margin:0,display:"inline",overflow:"hidden"}); nWin.document.querySelector('body').appendChild(img); }); }); </script> <input type="button" value="open" id="btn">
tmyk1979

2020/03/03 05:01

回答ありがとうございます。提示していただいたコードをGoogle Chromeで試したのですが、やはり余白が付いてしまっています。Codepenの方も余白が付いています。あと、http://cgi1.plala.or.jp/~tmyk1979/window_photo_03.htmlのように画像をクリックするとサムネとは別に用意してある大き目の画像が開くようにしたいのですが、提示していただいたコードを応用してできるのでしょうか?
yambejp

2020/03/03 05:18

あー、ブラウザの幅は縮められる限界があるようなので150だと厳しかったのかも あらためてcodepenのサンプル一部調整したので再度確認してみてください
tmyk1979

2020/03/03 05:34

対応ありがとうございます。それでもやはり余白が付いてしまいますね。200x150の画像なのにhtmlが208x168になってしまっています。画像をどのサイズにしても右に8px、下に16pxの余白が付いてしまうようです。
yambejp

2020/03/03 05:37

win版chromeで余白がないの確認してます 何版のchromeですか? なにかの要素のmarginやpaddingなどを調整する必要があるのかもしれません。
tmyk1979

2020/03/03 05:44

私もWin版Chromeなのですが、余白が付いてしまっています。私もmarginやpaddingを調整してみます。
tmyk1979
guest

0

自己解決

yambejpさんに提示していただいた方法で解決しました。

私の環境でyambejpさんに提示していただいた方法を試しても余白が付いてしまっていたのはディスプレイ設定で「拡大縮小とレイアウト」という項目が「150%」になっていたせいでした。

これを「100%」に変えたら余白が消えました。

yambejpさん、そしてこの質問を見てくれた皆様、ありがとうございました。

投稿2020/03/05 04:34

tmyk1979

総合スコア145

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/03/05 05:01

なるほどねー、そういうこともあるんですねぇ
tmyk1979

2020/03/05 07:05

盲点でした。でもいただいた回答のおかげでコードの方が間違っている状態ではなくなったので、そこからディスプレイのせいではないかと思い至りました。おかげさまでやりたい事が実現できました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問