2016-06-10 5 views
0

Die Bilder können breiter als die Breite ihres Containers oder kleiner als diese sein. Um die Breite größerer Bilder zu steuern, kann ich max-width: 100% verwenden. Ebenso kann ich auch width:100% für kleinere Bilder einstellen.Wie wird die Bildbreite basierend auf bestimmten Größenbeschränkungen des Containers auf 100% gesetzt?

Gibt es eine Möglichkeit, die Bildbreite nur dann auf 100% zu setzen, wenn das Originalbild mindestens 50% seiner Containerbreite beträgt? Ich werde eine CSS-basierte Lösung bevorzugen, wenn sie existiert, weil die Bilder dynamisch geladen werden.

+0

Bitte fügen Sie ein HTML-Beispiel zu Ihrer Frage –

+3

Der ** nur, wenn ** Teil Ihrer Frage eine bedingte genannt wird .. diejenigen nicht Existieren in CSS .. –

+1

Haben Sie 'background-size: contain' oder' background-size: cover' probiert? –

Antwort

0

Da die Bilder dynamisch geladen werden, denke ich, dass dein bester Schuss mit Javascript ist. Sie müssen die Breite des Bildes ermitteln (Determine original size of image cross browser?), und dann können Sie das mit dem übergeordneten Element des Bildes vergleichen und bestimmen, ob es über oder unter 50% liegt.

UPDATE:

die Frage Anbetracht hat jeden Beispielcode nicht zur Verfügung stellen, will ich nicht zu erraten nur. Aber würde der Pseudo-Code wie folgt aussehen:

// after ajax completes 
var image = jQuery('.image'), 
parent = image.parent(); 
if (image.width() * 2 >= parent.width()) { 
    image.css('width','100%'); 
} 
+0

Das Verknüpfen einer anderen SO-Antwort macht dies nicht zur Antwort. Aktualisieren Sie mit Codebeispielen. –

+0

Wie funktioniert es, wenn Bilder mit AJAX geladen werden? CSS wird tatsächlich die Größe aller Bilder ändern. Entschuldigung, wenn ich etwas verpasse. :) –

+0

Sie vermissen etwas ... Sie können Bilder nicht über Ajax laden, es funktioniert nicht so ... Warum postest du nicht etwas Code, damit wir sehen können, was du wirklich tust –

0
var containerDiv = $(".container"); 
var image = $(".img"); 
image.width(image.width()>containerDiv.width()?containerDiv.width():image.width()); 
+0

Funktioniert es immer noch, wenn das Bild mit AJAX geladen wird. Denn soweit ich weiß, wird das JavaScript nur einmal ausgeführt. :) –

+0

Feuer es von der AJAX Antwort. –

+1

Was meinst du damit, dass du Bilder über Ajax lädst ??? das macht keinen Sinn –

Verwandte Themen