C'est simple.
Déplacer ma mise en page dans un territoire fluide, travailler sur des images évolutives. L'utilisation de la balise img et la définition de la largeur maximale à 100% fonctionnent parfaitement, mais je préfère utiliser un div avec l'image définie comme arrière-plan.
Le problème que je rencontre est que l'image ne s'adapte pas à la taille de la div en arrière-plan. Est-il possible d'ajouter du balisage au code d'arrière-plan pour le définir à 100% de la largeur de son conteneur?
#one {
background: url('../img/blahblah.jpg') no-repeat;
max-width: 100%;
}
Vous pouvez le faire avec background-size
:
html {
background: url(images/bg.jpg) no-repeat center center fixed;
background-size: cover;
}
Il existe de nombreuses valeurs autres que cover
que vous pouvez définir background-size
à, voir lequel vous convient le mieux: https://developer.mozilla.org/en/CSS/background-size
Spec: https://www.w3.org/TR/css-backgrounds-3/#the-background-size
Il fonctionne dans tous les navigateurs modernes: http://caniuse.com/#feat=background-img-opts
Comme l'a dit thirtydot, vous pouvez utiliser le CSS3 background-size
syntaxe:
Par exemple:
-o-background-size:35% auto;
-webkit-background-size:35% auto;
-moz-background-size:35% auto;
background-size:35% auto;
Cependant, comme l'a également déclaré thirtydot, cela ne fonctionne pas dans IE6, 7 et 8.
Voir les liens suivants pour plus d'informations sur background-size
: http://www.w3.org/TR/css3-background/#the-background-size
On dirait que vous essayez de redimensionner l'image d'arrière-plan? Il y a un excellent article dans le soufflet de référence où vous pouvez utiliser css3 pour y parvenir.
Et si j'ai mal lu la question, j'accepte humblement les votes. (Encore bon à savoir cependant)
Veuillez considérer le code suivant:
#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;
}
Cela fonctionnera sur tous les principaux navigateurs, bien sûr, cela n'est pas facile sur IE. Il existe cependant quelques solutions de contournement telles que l'utilisation des filtres de Microsoft:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
Il existe quelques alternatives qui peuvent être utilisées avec un peu de tranquillité d'esprit en utilisant 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");
});
J'espère que ça aide!
Malheureusement, il n'y a pas de min
(ou max
) - taille d'arrière-plan en CSS, vous ne pouvez utiliser que background-size
. Cependant, si vous recherchez une image d'arrière-plan réactive, vous pouvez utiliser les unités Vmin
et Vmax
pour background-size
propriété pour obtenir quelque chose de similaire.
#one {
background:url('../img/blahblah.jpg') no-repeat;
background-size:10vmin 100%;
}
qui définira la hauteur à 10% de la plus petite fenêtre que vous ayez, qu'elle soit verticale ou horizontale, et définira la largeur à 100%.
En savoir plus sur les unités CSS ici: https://www.w3schools.com/cssref/css_units.asp