2017-03-22 2 views
5

Ich möchte wissen, ob es für meine Startseite möglich ist, ein Bild nur für mobile Benutzer zu laden. Ich weiß, dass es mit Javascript möglich ist, aber ich möchte wissen, ob ich dasselbe nur mit CSS erreichen kann. Ich habe versucht zu recherchieren, kann aber nicht finden, wonach ich suche. Ich meine nicht die Größe des Bildes basierend auf der Bildschirmgröße, sondern das Laden eines für Mobilgeräte optimierten Bildes.Laden Sie ein Bild nur für Mobilgerät

+0

Sie meinen mit html img oder mit CSS-Hintergrund. – frnt

+0

@frnt Verwenden css Hintergrund :) –

Antwort

2

Ja, das ist möglich. Sie können Media Querys verwenden. Beispiel CSS:

#yourimage { 
    display: none; 
} 

@media (max-width: 500px) { 
    #yourimage { 
     display: block; 
    } 
} 

Dieser Code ist für HTML-Bilder tho. Hier ist ein JSFiddle:

https://jsfiddle.net/vqfLokpa/

Drücken Sie einfach laufen und dann das Browserfenster kleiner zu machen beginnen.

+0

Hey, vielen Dank für Ihre Antwort. Das Szenario ist, ich habe zwei Bilder. Einer von ihnen ist für die Desktop-Website, und es ist ziemlich groß. Aber für einen kleineren Bildschirm (mobil) möchte ich die kleinere Version dieses Bildes laden. –

+0

Dann stellen Sie einfach das erste Bild auf 'display: none;' und das neue Bild auf 'display: block;' Ich habe den Post mit einem JSFiddle bearbeitet, wenn Sie nicht sicher sind, wie Sie es implementieren. – NullDev

+0

Aber wird dies nicht beide Bilder laden und Leistung verlangsamen? Denn in diesem Fall ist es für meine Titelseite ziemlich viele Medien darauf. :) –

2

Sie können Medienabfragen verwenden, um Klassen abhängig von der Bildschirmgröße anzuwenden.

#img { 
    display: none; 
} 

/* Large Devices, Wide Screens */ 
    @media only screen and (max-width : 1200px) { 

} 

/* Medium Devices, Desktops */ 
@media only screen and (max-width : 992px) { 

} 

/* Small Devices, Tablets */ 
@media only screen and (max-width : 768px) { 

} 

/* Extra Small Devices, Phones */ 
@media only screen and (max-width : 480px) { 
    #img{ 
    display: block; 
    } 

} 

/* Custom, iPhone Retina */ 
@media only screen and (max-width : 320px) { 

} 
+0

Hey, danke für deine Antwort! Aber wenn ich diesen Ansatz anwende, werden nicht alle Bilder auf die Seite geladen und die Leistung verlangsamt? Ich frage mich, ob ich reines CSS verwenden könnte, ich könnte nur das benötigte Bild auf die Seite laden. –

+0

Alle Ihre Bilder werden gleich am Anfang geladen, Sie müssen Ihre Bilder optimieren, damit sie die Website nicht verlangsamen, unabhängig davon, was Sie auf Ihrem Mobiltelefon oder Desktop zeigen. Aber dies sollte Ihnen erlauben, zu verstecken und zu zeigen, was Sie auf welcher Bildschirmgröße benötigen. – Conor

+0

Ah ich sehe. Danke für die Informationen! ^^ –

4

Nutzen Sie media querybackground-image bei verschiedenen screen resolutions wie unten zu ändern,

div{ 
 
    width:100%; 
 
    height:400px; 
 
    background:url('http://placehold.it/350x150/f22/fff'); 
 
    background-size:100% 100%; 
 
} 
 
@media screen and (max-width : 480px){ 
 
div{ 
 
    background:url('http://placehold.it/480x150/f12/fff'); 
 
    background-size:100% 100%; 
 
} 
 
} 
 
@media screen and (max-width : 320px){ 
 
div{ 
 
    background:url('http://placehold.it/320x150/e12/fff'); 
 
    background-size:100% 100%; 
 
} 
 
}
<div></div>

prüfen diese jsFiddle.

+0

@ S.Reyes Wählen Sie beide Hauptseite div und die Verwendung von Medienabfrage ändert Hintergrundbild URL an verschiedenen Haltepunkten. – frnt

+0

Vielen Dank für Ihre Antwort! :) Ich werde versuchen, einen solchen Ansatz zu implementieren! : D –

+0

Willkommen @ S.Reyes :-) – frnt

1

Basierend auf Ihrem Kommentar zu @NullDev müssen Sie ein Div in der entsprechenden Größe erstellen und das Bild als Hintergrundbild auf ein Element anwenden, um zu bestimmen, was über CSS geladen wird.

Zum Beispiel:

HTML:

<div id="image"></div> 

CSS:

#image { 
    position: relative; 
    width: 400px; 
    height: 400px; 
    background-image:url('/path/to/image'); 
    background-size: cover; 
    background-repeat: no-repeat; 
} 

dann die Medienabfrage gelten:

@media only screen and (max-width : 480px) { 
    #image{ 
    background-image:url('/path/to/mobile/image'); 
    } 
} 

Ich hoffe, das hilft.

Verwandte Themen