とても簡単です。
レイアウトを流動的な領域に移動し、スケーラブルな画像に取り組んでいます。 imgタグを使用し、max-widthを100%に設定すると完全に機能しますが、画像を背景として設定したdivを使用したいと思います。
私が遭遇している問題は、画像が背景にあるdivのサイズにスケーリングされないことです。マークアップをバックグラウンドコードに追加して、コンテナーの幅を100%に設定する方法はありますか?
#one {
background: url('../img/blahblah.jpg') no-repeat;
max-width: 100%;
}
これはbackground-size
で実行できます。
html {
background: url(images/bg.jpg) no-repeat center center fixed;
background-size: cover;
}
cover
以外にも、background-size
に設定できる値がたくさんあります。どれが適切かを確認してください: https://developer.mozilla.org/en/CSS/ background-size
仕様: https://www.w3.org/TR/css-backgrounds-3/#the-background-size
すべての最新のブラウザで動作します: http://caniuse.com/#feat=background-img-opts
30ドットが言ったように、CSS3 background-size
構文を使用できます。
例:
-o-background-size:35% auto;
-webkit-background-size:35% auto;
-moz-background-size:35% auto;
background-size:35% auto;
ただし、thirtydotでも述べられているように、これはIE6、7、8では機能しません。
background-size
の詳細については、次のリンクを参照してください。 http://www.w3.org/TR/css3-background/#the-background-size
背景画像を拡大縮小しようとしているようですか?これを達成するためにcss3を使用できる参考記事には、すばらしい記事があります。
そして、もし質問を読み間違えたら、私は謙虚に投票を受け入れます。 (それでも知っておくと良い)
次のコードを検討してください:
#some_div_or_body {
background: url(images/bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
これはすべての主要なブラウザで動作しますが、IEでは簡単にはいきません。ただし、Microsoftのフィルターを使用するなど、いくつかの回避策があります。
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
JQueryを使用することで少し安心して使用できるいくつかの代替方法があります。
HTML
<img src="images/bg.jpg" id="bg" alt="">
CSS
#bg { position: fixed; top: 0; left: 0; }
.bgwidth { width: 100%; }
.bgheight { height: 100%; }
jQuery:
$(window).load(function() {
var theWindow = $(window),
$bg = $("#bg"),
aspectRatio = $bg.width() / $bg.height();
function resizeBg() {
if ( (theWindow.width() / theWindow.height()) < aspectRatio ) {
$bg
.removeClass()
.addClass('bgheight');
} else {
$bg
.removeClass()
.addClass('bgwidth');
}
}
theWindow.resize(resizeBg).trigger("resize");
});
これが役に立てば幸いです!
Src: 完全なページ全体の背景画像
残念ながら、CSSにはmin
(またはmax
)-background-sizeがなく、background-size
しか使用できません。ただし、レスポンシブな背景画像を探している場合は、background-size
プロパティにVmin
およびVmax
unitsを使用して同様のことを実現できます。
#one {
background:url('../img/blahblah.jpg') no-repeat;
background-size:10vmin 100%;
}
これにより、高さが垂直または水平のどちらか小さい方のビューポートの10%に設定され、幅が100%に設定されます。
CSSユニットの詳細については、こちらをご覧ください: https://www.w3schools.com/cssref/css_units.asp