Ich möchte ein Hintergrundbild für verschiedene Divs festlegen, aber meine Probleme sind:
Wie kann ich das Hintergrundbild dehnen, um den gesamten Hintergrund des Div auszufüllen?
#div2{
background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
height:180px;
width:200px;
border: 1px solid red;
}
Hinzufügen
background-size:100% 100%;
zu deinem CSS unter dem Hintergrundbild.
Sie können auch genaue Abmessungen angeben, d. H .:
background-size: 30px 40px;
Hier: JSFiddle
Sie können verwenden:
background-size: cover;
Oder verwenden Sie einfach ein großes Hintergrundbild mit:
background: url('../images/teaser.jpg') no-repeat center #eee;
.selector{
background-size: cover;
/* stretches background WITHOUT deformation so it would fill the background space,
it may crop the image if the image's dimensions are in different ratio,
than the element dimensions. */
}
Max. Dehnung ohne Zuschneiden oder Verformung (darf den Hintergrund nicht ausfüllen) :background-size: contain;
Absolute Dehnung erzwingen (kann Verformung verursachen, aber keine Ernte) :background-size: 100% 100%;
Absolute Positionierung des Bildes als erstes untergeordnetes Element des übergeordneten Elements (relativ positioniert) und Strecken auf die übergeordnete Größe.
HTML
<div class="selector">
<img src="path.extension" alt="alt text">
<!-- some other content -->
</div>
background-size: cover;
:Um dies dynamisch zu erreichen, müssten Sie das Gegenteil der Option "Enthalten" (siehe unten) verwenden. Wenn Sie das zugeschnittene Bild zentrieren möchten, benötigen Sie ein JavaScript, um dies dynamisch zu tun - z. mit jQuery:
$('.selector img').each(function(){
$(this).css({
"left": "50%",
"margin-left": "-"+( $(this).width()/2 )+"px",
"top": "50%",
"margin-top": "-"+( $(this).height()/2 )+"px"
});
});
praktisches Beispiel:
background-size: contain;
:Dies kann etwas knifflig sein. In der Dimension Ihres Hintergrunds, in der die übergeordneten Elemente überlaufen würden, ist CSS auf 100% festgelegt, in der anderen auf auto. praktisches Beispiel:
.selector img{
position: absolute; top:0; left: 0;
width: 100%;
height: auto;
/* -- OR -- */
/* width: auto;
height: 100%; */
}
background-size: 100% 100%;
:.selector img{
position: absolute; top:0; left: 0;
width: 100%;
height: 100%;
}
PS: Um die Entsprechungen von cover/contain auf die "alte" Art und Weise vollständig dynamisch zu machen (so dass Sie sich nicht um Überläufe/Verhältnisse kümmern müssen), müssten Sie Javascript verwenden, um die Verhältnisse zu erkennen für Sie und stellen Sie die Maße wie beschrieben ein ...
Hierfür können Sie CSS3 background-size
Eigentum. Schreiben Sie wie folgt:
#div2{
background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
-moz-background-size:100% 100%;
-webkit-background-size:100% 100%;
background-size:100% 100%;
height:180px;
width:200px;
border: 1px solid red;
}
Überprüfen Sie dies: http://jsfiddle.net/qdzaw/1/
Du kannst hinzufügen:
#div2{
background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
background-size: 100% 100%;
height:180px;
width:200px;
border: 1px solid red;
}
Sie können hier mehr darüber lesen: css3 background-size
body{
margin:0;
background:url('image.png') no-repeat 50% 50% fixed;
background-size: cover;
}
unter Verwendung der Eigenschaft css:
background-size: cover;
Verwendung: Hintergrundgröße: 100% 100%; Hintergrundbild an die div-Größe anpassen.
Verwenden Sie background-size: 100% auto;
, Um das Seitenverhältnis beizubehalten.
div {
background-image: url('image.jpg');
background-size: 100% auto;
width: 150px;
height: 300px;
}
Versuchen Sie so etwas:
div {
background-image: url(../img/picture1.jpg);
height: 30em;
background-repeat: no-repeat;
width: 100%;
background-position: center;
}