横幅が3000px、縦幅400pxの画像があるとします。
これをhtmlに直接 <img src="aaa.jpg"> などで表示すると、ブラウザの画面からはみ出して、下にバーが出てしまいます。
cssのbackgroundでDIV要素等に width: 100%, height: 400px にすると表示されます。
ユーザーに画像をアップロードさせる際、どんな画像がアップロードされるかわからないという状況で、
・横は画面をはみ出さない(横500pxや横1000pxといった画像は中央に配置 center center no-repeat)
・縦は400pxまでにしたい(400pxを超えている場合は centerで切り抜き、横幅はそのまま)
ということは可能でしょうか?
わかりづらいかと思いますがよろしくお願いします。
イケてない方法だなと思うけど、一つ思いついたので書きます。
読解力無いので質問の意図を勘違いしていたらごめんなさい。
DIVの中に、高さを算出する目的でIMG要素を入れる。
表示は背景でやる。
IMG要素のsrc属性の値は背景の画像と一緒で、visibility:hidden;とかopacity:0;にする。
DIVはmax-height:400px;
divタグにcssで、width:100%;height:400px;background-image:url('/hoge.gif');background-repeat:no-repeat;background-position:center center;
で、どうですか。
「切り抜き」ってのが、css だけだと難しそうな。
切り抜きだけだと、clip でいけるけど、サイズを指定しなきゃいけないからなあ。
div.abc {
height: 400px;
background: url(...) center center no-repeat;
}
高さが指定できないというのが最大の問題なんですよね。
・横2500px、縦300pxとかの画像だとdivの高さがブラウザ幅に応じて縮小してしまう
・400px以下の画像だと余白が出てしまう
結局振り出しに戻った感じです。。
それならやはり2014/12/06 03:48:03のコメントの
overfrowをoverflowにすればいけると思います。
画像を4パターン用意してテストのページを作ってみました。
http://jislotz.net/test/test.html
思い描いていた挙動になっています。
どうも有難うございました!