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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

2111閲覧

画像 リサイズ 中心を表示するには?

may88seiji

総合スコア79

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2016/08/04 12:49

編集2016/08/04 14:04

###前提・実現したいこと
画像をウインドウサイズにリサイズをして中心を表示したいと思っています。

画像は横1280px 縦720px
でウインドウのサイズ、比率をjavascriptで取得してcssを書き換えるとういことをしています。
下記コードをにてリサイズはできているのではと思うのですが、
横長の画像のため中心がずれてしまいます。
リサイズしても中心を表示する方法を教えていただければ幸いです。

よろしくお願いします。
追記
画正方形のウィンドウだと横は必ずはみ出る
→はみ出る部分は表示しなくても大丈夫です。
その代わり常に中心を表示したいのです。(比率を保ち、中心を常に表示する)

###該当のソースコード

html

1<div class="pc_top"> 2 <img src="common/img/pc_teaser.jpg" alt=""> 3 <a href="#" target="_blank"><div class="teaser_pc"></div></a> 4</div>

javascript

1$(window).on('load resize', function () { 2 3 var w = $(window).width(); 4 var h = $(window).height(); 5 var imageW = 1280; 6 var imageH = 720; 7 var wRatio = imageW / imageH; //1.77 8 var hRatio = imageH / imageW; //0.5625 9 10 var stageRatio = w / h; 11 var imageRatio = imageW / imageH; 12 13 console.log(stageRatio, imageRatio); 14 15 if(imageRatio>stageRatio){ 16 //winの縦に合わせる 17 $(".pc_top img").css({ 18 height: h +"px", 19 width: h * wRatio + "px" 20 }); 21 }else{ 22 //winの横に合わせる 23 $(".pc_top img").css({ 24 height: w * hRatio +"px", 25 width: w + "px" 26 }); 27 } 28 29 30});

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

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

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

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

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

flied_onion

2016/08/04 13:46

どういう表示にしたいのか、計算がよくわからないのですが、この計算ならたとえば正方形のウィンドウだと横は必ずはみ出る気がするんですが、それは意図した動作ですか?(stageRatioは1なので、横長画像なら必ずimageRatioが大きい。wRatioは1より大きいので、画像の横幅はhよりも大きくなる。しかしウィンドウは縦横同じなので、ウィンドウの横幅よりも画像の横幅の方がかならず大きくなる。)
guest

回答3

0

やりたいことと合ってるかわかりませんが

css

1.pc_top { 2background: url(画像のパス) no-repeat 50% 50%; 3background-size: cover; 4}

で解決するのはどうでしょうか?
全体を覆いたい場合はcover、縦か横の大きい方をめいっぱいにするのはcontainです。

もし画像のURLが都度変わったりするのであれば、

<div class="pc_top" style="background-image:(画像のパス);">

でURLだけ変更できます。

投稿2016/08/04 14:27

NatsumiOki

総合スコア1298

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

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

0

こちらで解決できました。
回答いただいた皆さん、ありがとうございます

javascript

1$(window).on('load resize', resizeHandler); 2 3resizeHandler(); //リサイズ即時実行 4 5function resizeHandler(){ 6 var w = $(window).width(); 7 var h = $(window).height(); 8 var imageW = 1280; 9 var imageH = 720; 10 var wRatio = imageW / imageH; //1.77 11 var hRatio = imageH / imageW; //0.5625 12 13 var stageRatio = w / h; 14 var imageRatio = imageW / imageH; 15 var wh = w / 2; 16 var hh = h / 2; 17 18 if(imageRatio>stageRatio){ 19 console.log("たて"); 20 21 $(".pc_top img").css({ 22 height: h, 23 width: h * wRatio, 24 left:wh-(h*wRatio)/2, 25 top:0 26 }); 27 28 }else{ 29 console.log("よこ"); 30 31 $(".pc_top img").css({ 32 height: w * hRatio, 33 width: w, 34 top:hh-(w*hRatio)/2, 35 left:0 36 }); 37 } 38}

投稿2016/08/04 14:47

may88seiji

総合スコア79

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

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

0

ベストアンサー

はみ出た場合は左右に均等にはみ出てほしいということですか?
(本来の目的は、ウィンドウの中央に画像の中央が来てほしい、ということだと思っています)

調整は必要かもしれませんが、例えばこういうことでしょうか?
(はみ出る分の半分だけ画面外に出してます)

if(imageRatio>stageRatio){ //winの縦に合わせる $(".pc_top img").css({ position: 'absolute', height: h +"px", width: h * wRatio + "px", left: (Math.abs(h*wRatio - w) / 2) * -1 + "px" }); }else{ //winの横に合わせる $(".pc_top img").css({ position: 'absolute', height: w * hRatio +"px", width: w + "px", top: (Math.abs(w*hRatio - h) / 2) * -1 + "px" }); }

投稿2016/08/04 14:23

flied_onion

総合スコア2604

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問