Ich möchte einen Abschnitt mit einem Hintergrund erstellen, der ihn in einer mobilen Webseite abdeckt. Ich verwendete den folgenden CSS-Code:
#section1{
background: url("background1.png") auto 749px;
height: 749px;
}
Der Hintergrund wird auf Android (Chrome, Firefox ...) korrekt angezeigt, auf dem iPhone oder iPad (Safari, Chrome iOS ...) jedoch nicht. Ich habe versucht, diese Eigenschaften mit jQuery festzulegen, wenn das DOM fertig ist, aber kein Glück. Ich habe gelesen, dass die Größe möglicherweise ein Problem darstellt, aber das Bild ist etwa 700 KB (1124 x 749px) und sollte daher die Safari Web Content Guide Regeln erfüllen. Was ist das Problem?
Es gibt ein Problem mit Ihrer CSS-Regel:
Sie verwenden die Kurzschreibweise, in der die background-size
- Eigenschaft after die background-position
-Eigenschaft und sie muss durch einen /
getrennt werden muss.
Sie versuchen, die Position festzulegen, die jedoch fehlschlägt, da auto
kein gültiger Wert für sie ist.
Damit es in der Kurzschreibweise funktioniert, muss es so aussehen:
background: url([URL]) 0 0 / auto 749px;
Beachten Sie auch, dass es einen Wert namens cover
gibt, der hier geeignet und flexibler sein kann:
background: url([URL]) 0 0 / cover;
Das support für background-size
in der Kurzschreibweise ist nicht sehr breit, da es in Firefox 18+, Chrome 21+, IE9 + und Opera unterstützt wird. Es wird in Safari überhaupt nicht unterstützt. In diesem Zusammenhang würde ich vorschlagen, immer zu verwenden:
background: url("background1.png");
background-size: auto 749px; /* or cover */
Hier sind einige Beispiele und eine Demo, um dieses Verhalten zu demonstrieren. Sie sehen, dass Firefox zum Beispiel jedes Bild außer dem ersten zeigt. Safari dagegen zeigt nur das letzte.
CSS
section {
width: 200px;
height: 100px;
border: 1px solid grey;
}
#section1 {
background: url(http://placehold.it/350x150) auto 100px;
}
#section2 {
background: url(http://placehold.it/350x150) 0 0 / auto 100px;
}
#section3 {
background: url(http://placehold.it/350x150) 0 0 / cover;
}
#section4 {
background: url(http://placehold.it/350x150) 0 0;
background-size: cover;
}
Demo
Weiterführende Literatur
MDN-CSS-Referenz "Hintergrund"
MDN CSS-Referenz "Hintergrundgröße"
<'background-size'>
Siehe Hintergrundgröße . Diese Eigenschaft muss hinter der Hintergrundposition angegeben werden, getrennt durch das Zeichen '/'.
Mein Problem war, dass iOS background-attachment: fixed
nicht unterstützt. Wenn Sie diese Linie entfernen, erscheint das Bild.
Es scheint jedoch, dass es für ein festes Hintergrundbild Workarounds gibt: Wie repliziert man unter iOS
Ich hoffe, dass dies jemandem helfen kann, der verzweifelt ist ... In meinem Fall war die Größe des Bildes zu groß, sodass das iPad es einfach nicht laden konnte (und es tatsächlich stimmte).
Durch die Verringerung der Größe und Qualität wurde das Ladeproblem gelöst.
Das Problem wurde nicht gelöst, als ich versuchte, den Hintergrund in Kurzform richtig zu verwenden. Es funktioniert, wenn ich die Hintergrundeigenschaft aufspalte:
#section1{
background: url("background1.png");
background-size: auto 749px;
height: 749px;
}
Reduzieren Sie die Bildgröße, wenn nichts anderes funktioniert - iOS mag keine großen Bildgrößen auf dem Handy und zeigt das Bild einfach nicht an, wenn es zu groß ist.
Große Grundlagen von @insertusernamehere! Egal was ich tat, ich konnte mein Bild nicht auftauchen ... bis ich zu den Grundlagen zurückkehrte. Die Bildgröße war zu groß und das iPhone lud nicht gerne ein Bild mit einer Größe von über 700kbs. Also habe ich es auf 32kb reduziert und wir waren in Aktion.
Das Hintergrundbild wird im IOS -Browser (iPhone/iPad) nicht angezeigt.
/*CSS*/
.bg-image {
background: url([URL]) center/cover no-repeat;
}
Alternativ funktioniert img src in allen Browsern. Die Hintergrundbilder werden entsprechend der Geräteauflösung hinzugefügt.
<div class="download">
<picture>
<source srcset="/images/ios-device-mobile-v2.png" media="(max-width:450px)"/>
<source srcset="/images/ios-device-mobile-v2.png" media="(min-width: 600px)"/>
<img src="/images/ios-device.png" class="imgright">
</picture>
</div>
Dieser Code wurde auf iPhone Safari, Android Chrome) und Web Safari getestet. Hoffentlich hilft dies.
Fügen Sie eine Hintergrundfarbe hinzu, die mein Problem gelöst hat
background-color: #F4F4F2;
Ich habe niemanden gesehen, der dies ausdrücklich sagt, aber Sie müssen auch die Breite definieren. Macht da, da ich die Hintergrundgröße auf "enthalten" eingestellt habe - es muss wissen, welche Abmessungen der Container hat.
Sobald ich das getan habe, wird der Hintergrund wie erwartet gerendert.
@media only screen and (max-width:599px) {
[id=banner] td { width:480px !important; height:223px !important; background:url('image') no-repeat 0 0 !important; }
}
@media only screen and (max-width:479px) {
[id=banner] td { width:320px !important; height:149px !important; background:url('image') no-repeat 0 0 !important; background-size:contain !important; }
}
Hinweis: Die Hintergrund-URL muss für beide Haltepunkte definiert werden, damit sie für iPhone 5 (iOS7) funktioniert.
Ich hatte einen negativen Texteinzug, der mein Hintergrundbild von der Seite warf, also Farbe: Transparent ist es dann.