Ich habe ich ein Bild, das mit zunehmender Bedeutung entsprechend die folgenden Regeln skalieren würde:Bild mit einer bevorzugten Breite, min-Breite und max-width
- normalerweise eine Breite von 38% aufweist (des Elternteils/Bildschirms);
- nicht kleiner als 300px werden;
- nie größer als 100% werden (der Eltern/Bildschirm) (nur ein Problem, wenn die Eltern/Bildschirm kleiner als 300px ist;
Das heißt: das Bild nur einen Prozentsatz der verfügbaren nimmt Bei sehr kleinen Bildschirmen (mobilen Geräten) darf das Bild jedoch niemals die volle Breite des verfügbaren Platzes überschreiten, selbst wenn dies bedeuten würde, dass es unter die minimale Breite schrumpft.
Ich dachte, ich könnte dies mit den folgenden css tun:
img {
width: 38%;
min-width: 300px;
max-width: 100%;
}
denken, dass die max-width
würde Vorrang vor der min-width
, weil es später erscheint. Aber es funktioniert nicht ... Das Bild erscheint als der erforderliche Prozentsatz und schrumpft nicht unter 300px. Auf einem kleinen Bildschirm (< 300px) wird das Bild jedoch nicht angezeigt (Bildlaufleisten werden angezeigt).
Lesen Sie die Dokumentation, min-width
overrides max-width
, also sollte ich dies kommen sehen haben ...
Eine offensichtliche Lösung wäre, eine Medien-Abfrage hinzuzufügen:
@media screen and (max-width: 300px) {
img {
min-width: 0;
width: 100%;
}
}
Allerdings Ich mag wäre in der Lage sein, Überschreiben der Breitenspezifikationen (dh der 38% oder der 300px Werte) aus dem HTML (Tag Stil).
Mehrere Fragen zu SO Touch zum Thema Sizing, aber ich konnte keinen über meinen genauen Fall finden. Jeder hier mit einer Lösung/Vorschlag?
Einige Neben Anforderungen:
- sollten in gängigen Browsern arbeiten, html5/css3
- kein Javascript (wenn sich herausstellt, dass es nur mit CSS nicht möglich ist, werde ich eine js Lösung schaffen, aber ich keine js bevorzugen für diesen)
- keine Medienanfragen (siehe oben)
- ich die Kontrolle über den hTML-Code bin, so im Inneren zusätzlichen Elementen Verschachtelung ist in Ordnung, wenn benötigt
youprefered für nicht mit '@ media' aber bisher für Ich denke, dies ist die einzige Möglichkeit ist, verwenden .. – Jer
'@ media' ist meine aktuelle Lösung, aber es ist nicht flexibel im Falle einer Dimension Override in der html ... –
Ich bin mir nicht sicher über die" Dimension Override in der HTML ". Meinst du, dass bestimmte Bilder andere Größen als die in der Frage erwähnten haben sollen? Wenn ja, geben Sie diesen Bildern einfach eine Klasse und sprechen Sie die Klasse im CSS an (sowohl innerhalb als auch außerhalb der Medienabfrage). Wenn das nicht funktioniert, können Sie ein Beispiel für HTML geben, das nicht funktioniert? –