2012-09-07 14 views
28

Mam duży obraz. Chcę wyświetlić go na własnej stronie internetowej, a kiedy to zrobię bez żadnego CSS, wypełnia całą stronę i jest zbyt duży, by można go było wyświetlić na raz (pojawiają się paski przewijania). Chcę go skalować tak, aby pasował do wysokości ekranu użytkownika (nie do szerokości). Znalazłem rozwiązania, ale rozciągają obraz tak, aby pasował do całego ekranu - nie chcę tego, ponieważ psuje proporcje.Jak zmienić rozmiar obrazu przy zachowaniu proporcji w CSS?

Zasadniczo chcę zmienić rozmiar obrazu przy zachowaniu proporcji. Jak mam to zrobic?

+0

http://stackoverflow.com/questions/10559058/resize -view-width-keep-image-aspect-ratio-with-css –

+0

Po prostu podaj wysokość i pozostaw właściwość width bez zmian. – knittl

+0

To powtarzający się temat z już rozwiązanym. https://stackoverflow.com/questions/3029422/how-do-i-auto-resize-an-image-to-fit-a-div-container –

Odpowiedz

37

Wystarczy ustawić width do auto:

img { 
    width: auto; 
    max-height: 100%; 
} 

Oto skrzypce: http://jsfiddle.net/6Y5Zp/

+0

W jaki sposób mogę automatycznie dopasować wysokość do najlepszego możliwego współczynnika proporcji w zależności od wielkości obrazu? – user1447941

+2

@ user1447941 - Powyższy kod robi dokładnie to. –

+0

Jeśli chcesz dostosować szerokość: szerokość: 100% i wysokość: auto zamiast tego – speeder

6

Można użyć div z tła wizerunku i set background-size: zawierać:

div.image{ 
    background-image: url("your/url/here"); 
    background-size:contain; 
    background-repeat:no-repeat; 
    background-position:center; 
} 

Teraz możesz po prostu ustawić rozmiar div na dowolny, a nie tylko zachować proporcje obrazu, ale także będzie on scentralizowany w pionie i poziomie. Po prostu nie zapomnij ustawić rozmiarów na css, ponieważ divy nie mają atrybutu width/height na samym znaczniku.

Właściwość wielkości tła wynosi np.> = 9 tylko.

2

myślę, że trzeba wkleić klasę wewnątrz obrazu, który ma pokazać jak ten

< image class="image" > 

i jest to klasa

.image 


text align: center 
max width:pixels you want 
max height pixels you want 

ale upewnij się, że oba są takie same ilości w ten sposób nie wydostanie się z ekranu w wysokości i szerokości.

czy można grać z szerokością i wysokością

21

oto próbka jeden

div{ 
 
    width: 200px; 
 
    height:200px; 
 
    border:solid 
 
} 
 

 
img{ 
 
    width: 100%; 
 
    height: 100%; 
 
    object-fit: contain; 
 
    }
<div> 
 
    <img src="https://upload.wikimedia.org/wikipedia/meta/0/08/Wikipedia-logo-v2_1x.png"> 
 
</div>

+4

To jest najprostsze rozwiązanie, ale zauważ, że IE nie obsługuje właściwości dopasowanych do obiektu. – cytsunny

+0

Najwyraźniej nawet IE 11 lub Edge 15 nie obsługują tego: http://caniuse.com/#feat=object-fit – Grav

Powiązane problemy