Περισσότερα
CSS αναγκάζει την εικόνα να αλλάξει μέγεθος και να διατηρήσει την αναλογία διαστάσεων
Εργάζομαι με εικόνες και αντιμετώπισα ένα πρόβλημα με τις αναλογίες διαστάσεων.
<img src="big_image.jpg" width="900" height="600" alt="" />
Όπως μπορείτε να δείτε, το "ύψος" και το "πλάτος" έχουν ήδη καθοριστεί. Πρόσθεσα κανόνα CSS για τις εικόνες:
img {
max-width:500px;
}
Αλλά για την big_image.jpg
, λαμβάνω width=500
και height=600
. Πώς μπορώ να ορίσω τις εικόνες να αλλάζουν μέγεθος, διατηρώντας τις αναλογίες διαστάσεων τους.
497
3
Η ιδιότητα background-size είναι δηλαδή μόνο για 9, αλλά αν αυτό σας βολεύει, μπορείτε να χρησιμοποιήσετε ένα div με
background-image
και να ορίσετεbackground-size: contain
:Τώρα μπορείτε απλά να ορίσετε το μέγεθος του div σας σε ό,τι θέλετε και όχι μόνο η εικόνα θα διατηρήσει την αναλογία διαστάσεων της, αλλά θα είναι επίσης κεντρικά τοποθετημένη τόσο κάθετα όσο και οριζόντια μέσα στο div. Απλά μην ξεχάσετε να ορίσετε τα μεγέθη στο css αφού τα divs δεν έχουν το χαρακτηριστικό width/height στην ίδια την ετικέτα.
Αυτή η προσέγγιση είναι διαφορετική από την απάντηση του setecs, χρησιμοποιώντας αυτή η περιοχή της εικόνας θα είναι σταθερή και θα ορίζεται από εσάς (αφήνοντας κενά διαστήματα είτε οριζόντια είτε κάθετα ανάλογα με το μέγεθος του div και την αναλογία διαστάσεων της εικόνας), ενώ η απάντηση του setecs θα σας δώσει ένα πλαίσιο που θα έχει ακριβώς το μέγεθος της κλιμακωτής εικόνας (χωρίς κενά διαστήματα).
Επεξεργασία: Σύμφωνα με την τεκμηρίωση MDN background-size documentation μπορείτε να προσομοιώσετε την ιδιότητα background-size στον IE8 χρησιμοποιώντας μια ιδιόκτητη δήλωση φίλτρου:
Αφαιρέστε την ιδιότητα "height".
Με τον προσδιορισμό και των δύο αλλάζετε την αναλογία διαστάσεων της εικόνας. Ο ορισμός μόνο του ενός θα αλλάξει το μέγεθος αλλά θα διατηρήσει την αναλογία διαστάσεων.
Προαιρετικά, για να περιορίσετε τις υπερμεγέθη:
Δεν υπάρχει τυποποιημένος τρόπος διατήρησης της αναλογίας διαστάσεων για εικόνες με
width
,height
καιmax-width
που καθορίζονται μαζί.Έτσι είμαστε αναγκασμένοι είτε να καθορίσουμε τα
width
καιheight
για να αποφύγουμε τα "άλματα" της σελίδας κατά τη φόρτωση των εικόνων, είτε να χρησιμοποιήσουμε τοmax-width
και να μην καθορίσουμε διαστάσεις για τις εικόνες.Ο προσδιορισμός μόνο του
width
(χωρίς τοheight
) συνήθως δεν έχει πολύ νόημα, αλλά μπορείτε να προσπαθήσετε να παρακάμψετε το HTML-attributeheight
προσθέτοντας έναν κανόνα όπωςIMG {height: auto; }
στο φύλλο στυλ σας.Δείτε επίσης το σχετικό [bug 392261] του Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=392261).