2012-09-07 36 views
28

Tôi có một hình ảnh lớn. Tôi muốn hiển thị nó trên của riêng mình trên một trang web, và khi làm điều này mà không có bất kỳ CSS nó lấp đầy toàn bộ trang và là quá lớn để hiển thị cùng một lúc (thanh cuộn xuất hiện). Tôi muốn mở rộng nó xuống để nó phù hợp với chiều cao của màn hình của người dùng (không phải chiều rộng). Tôi đã tìm thấy các giải pháp nhưng những hình ảnh căng ra để phù hợp với toàn bộ màn hình - Tôi không muốn điều này vì nó làm hỏng tỷ lệ khung hình.Làm cách nào để thay đổi kích thước hình ảnh trong khi vẫn giữ tỷ lệ co trong CSS?

Về cơ bản, tôi muốn đổi kích thước hình ảnh trong khi vẫn giữ tỷ lệ cỡ ảnh. Làm thế nào để tôi làm điều này?

+0

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

+0

Chỉ cần chỉ định chiều cao và để nguyên thuộc tính chiều rộng. – knittl

+0

Đây là chủ đề được lặp lại với giải pháp đã có. https://stackoverflow.com/questions/3029422/how-do-i-auto-resize-an-image-to-fit-a-div-container –

Trả lời

37

Chỉ cần đặt width-auto:

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

Đây là fiddle: http://jsfiddle.net/6Y5Zp/

+0

Tôi có thể tự động điều chỉnh chiều cao sao cho phù hợp với tỷ lệ khung hình tốt nhất có thể tùy thuộc vào kích thước của hình ảnh? – user1447941

+2

@ user1447941 - Mã ở trên thực hiện chính xác điều đó. –

+0

Nếu bạn muốn điều chỉnh chiều rộng: chiều rộng: 100% và chiều cao: tự động thay vì – speeder

6

Bạn có thể sử dụng một div với background-image và thiết lập nền-size: chứa:

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

Bây giờ bạn chỉ có thể đặt kích thước div của mình thành bất kỳ thứ gì bạn muốn và không chỉ ảnh sẽ giữ nguyên tỷ lệ khung hình của nó mà nó cũng sẽ được tập trung cả theo chiều dọc và chiều ngang. Chỉ cần đừng quên đặt kích thước trên css vì div không có thuộc tính chiều rộng/chiều cao trên chính thẻ đó.

Thuộc tính kích thước nền tức là> = 9 chỉ.

2

Tôi nghĩ rằng bạn cần phải dán một lớp bên trong hình ảnh mà bạn muốn hiển thị như thế này

< image class="image" > 

và đây là lớp

.image 


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

nhưng chắc chắn rằng cả hai đều cùng số lượng theo cách đó sẽ không thoát khỏi màn hình ở chiều cao và chiều rộng.

hoặc bạn có thể chơi với chiều rộng và chiều cao

21

đây là mẫu một

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

Đây là giải pháp dễ nhất, nhưng lưu ý rằng IE không hỗ trợ thuộc tính phù hợp với đối tượng. – cytsunny

+0

Dường như thậm chí không hỗ trợ IE 11 hoặc Edge 15: http://caniuse.com/#feat=object-fit – Grav

Các vấn đề liên quan