当社のメインサイトのモバイルフレンドリーサイトの構築に取り組んでいます。それが設計されている方法は、網膜の約2倍です。私が計画しているのは、メインコンテンツを最大幅640px付近に設定し、幅を100%に設定することです。私はそれにぴったり合う特定の背景画像を持っています。しかし、divの幅が小さくなると、高さも調整する必要があります。何か案は?
これがcssです:
*{margin:0;padding:0}h1,h2,h3,h4,h5,p,li,a,cite{font-size:14px;font-weight:normal}button,img{border:0}body{font-family:Arial, sans-serif;}
body {
margin:0;
background-color:#fff;
}
.top, .body {
max-width:640px;
width:100%;
margin:0 auto;
}
.top {
background: white url(images/top.jpg) no-repeat;
background-size:auto;
overflow:hidden;
height:124px;
max-height:124px;
}
.top ul {
list-style:none;
height:100%;
}
.top ul li {
height:100%;
float:left;
display:block;
}
私はこれに対する答えを見つけました。非セマンティックなマークアップが少し追加されますが、うまく機能します。ここで見つけることができます: http://jsfiddle.net/AdQ3P/
ロジックはパディングボトムにあります。基本的に、これは(img_height/img_width)* 100である必要があります。
Editこれがコードなので、jsfiddleに依存しません。
<div class="container">
<div class="hero"></div>
</div>
.container {
width:100%;
max-width:500px;
}
.hero {
width:100%;
height:0;
background-size:100%;
background:url(http://img97.imageshack.us/img97/3410/photo2ue.jpg) no-repeat;
padding-bottom:75%;
}
また、それは私が笑っていた1つの厄介な机でした。
少しjQueryを使用することもできます。利点は、それが意味的に有効な修正であるということだと思います。そのため、コードを編集する次の人は、何が起こっているのかを理解するのが簡単になるかもしれません。
// Maintain aspect ratio of #my_div
// Set aspect ratio of #my_div
var aspect_ratio = 0.8;
// Store the jQuery object for future reference
var $my_div = jQuery("#my_div");
// Within your document ready function,
// Do an initial resize of #my_div
$(document).ready(function(){
$my_div.height( $my_div.width() * aspect_ratio );
});
// Resize #my_div on browser resize
jQuery(window).resize(function() {
$my_div.height( $my_div.width() * aspect_ratio );
});
固定されていない幅(100%など)はコンテナのすべての幅を取りますが、固定サイズに設定されていない場合の要素の高さは、流入するコンテンツ(パディング、マージン、境界線などを含む)に対応するために伸びます。
背景画像の代わりに<img>
タグを使用できる場合は、画像自体にmax-width:100%
を適用すると、コンテナに合わせて拡大縮小されます。ブラウザは、高さのサイズを変更して維持します。アスペクト比は一貫していますが、cssの背景を画像タグに置き換えることが常に可能であるとは限らず、セマンティクスやレイアウトの問題に関して最善の選択肢であるとは限りません。