bedingt das laden von Bildern für responsive designs
Ich bin Nachrüstung eines adaptiven Layouts auf eine vorhandene Website. Grundsätzlich ist bei 500 Pixel der Website wechselt zu einer 100% Breite mobile-Stil layout. Normalerweise hätte ich mit ems, aber als ich sagen, ich bin Nachrüstung.
Ich weiß, wie ich zum laden von js und css bedingt ist, aber wie wäre es mit html und Bildern?
Auf der homepage der Seite gibt es ein großes Bild, das den Bildschirm ausfüllt, das brauche ich nicht auf meinem kleinen Bildschirm-layout, so will ich es laden, wenn der browser breiter als 500 Pixel. Problem ist ich kann nicht speichern Sie die <img src="..." />
usw. in js, weil es dynamisch geladen mit php. Der client steuert die Bilder über die wordpress admin.
Irgendwelche Gedanken würde geschätzt werden. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Arbeit wird für ein oder zwei Dinge. Für die site-wide image laden von Einstellungen, gibt es andere Lösungen.
Sehen in diesem codepen für ein Beispiel. Ich habe es in den dev-tools, um sicher zu sein, dass das große Bild nicht geladen werden kann.
So finden Sie die Fenster-Breite mit
.width()
und speichern Sie in der variable namens (was auch immer Sie wollen) ich nannte eswWidth
. Dann eine if-Anweisung. wenn die Fenster-Breite ist größer als 1200px (Es saugt Sie nicht verwenden können, em) --- DANN, laden Sie dieses Bild - andernfalls, lade einfach das kleinere Bild. Um es in den DOM, Sie fügen den html-Code einer vorhandenen div mit.appendTo()
Diesem Beispiel wurde für eine Karte... so, Wenn Sie wollten, um das laden der google map hatte ich einen link, dort konnte drücken, laden die schönere Karte. (wenn dann aber das Fenster war groß, ich würde nicht brauchen, die link - also versteckte ich es mit
.hide()
BEARBEITEN 04/2014
April 2014, ich habe die Umschaltung der src mit attr (), um auf diese Weise, Sie müssen nur das Bild für Handy, und dann, wenn es einen großen Bildschirm, können Sie das größere Bild der Quelle... aber dann laden Sie 2 Bilder... man könnte also stattdessen laden ein 1px x 1px leeres gif oder so etwas zu starten... und geben Sie eine Breite und Höhe in der Nähe des Verhältnis Sie sich für...
eine neue CodePen hier:
HTML
jQuery
<noscript>
fallback?Ich würde vorschlagen, wenn Sie können, verwenden divs, und legen Sie die Eigenschaft background-image das Bild, das Sie brauchen. Du kannst die Bildschirmgröße mit media queries. Im Grunde...
Können Sie die Anzeige des Bildes basierend auf media query(aber es lädt sowieso)
Oder nicht zu erlauben, das Bild zu laden, auf allen für kleinere Bildschirme, Sie können wickeln Sie das Bild innerhalb eines div(z.B. mit id-img-container) und Folgendes tun:
<script> if (document.documentElement.clientWidth > 940) { document.write('<img class="<?php echo "ligncenter size-full ".$imgInfo[$randno][id];?>" src="<?php echo $imgInfo[$randno][src];?>" title="<?php echo $imgInfo[$randno][title];?>" alt="<?php echo $imgInfo[$randno][alt];?>" />'); } </script>
Die Frage ist alt, aber ich hatte das gleiche Problem und dachte an das schreiben meine Lösung für andere, die von Interesse sein könnten.
Client-Seite nur mit angular js
Auf der client-Seite, Sie "entdecken" die "Art" der Ressourcen, die geladen werden soll. Zum Beispiel, in der Haupt-app-controller:
Dann in Inhalte, die Sie anzeigen wollen, bedingt, fügen Sie die variable
Hinweis:, dass der Ort, wo Sie Ihre controller-Fragen. Wenn es vor der
</body>
tag, stellt der browser eine Anfrage vor eckig erweitert die variable. Wenn es ein `, dann wird die variable erweitert wird, bevor der browser stellt die AnfrageServer-Seite (PHP)
Können Sie
$_SERVER['HTTP_USER_AGENT'];
zu erkennen, ob es ein mobiles Gerät ist und dementsprechend zu handeln.Offensichtlich user-Agenten manipuliert werden können aber da der einzige Unterschied ist die Größe des Bildes, den schlimmsten Fall passieren kann, ist, die Sie servieren, ein kleines Bild auf einer großen Leinwand oder Umgekehrt.
Zum Beispiel:
Dann dazu dienen, das Bild entsprechend zu
$type
Gemischt
Können Sie auch mischen die beiden, besonders, wenn du eher daran interessiert sind, die Bildschirmgröße (oder sonstige, das Eigentum der browser) als der tatsächliche user-agent. Ich benutze die folgende Strategie eine Menge.
Erstellen Sie eine landing-page (mit einem splashscreen oder so), setzt ein cookie.
Dann leiten Sie den Benutzer auf die Haupt-Seite
Verwenden Sie dann die cookie-server-Seite zur Anzeige der richtigen Bilder