2011-03-20 68 views
21

Có cách nào với CSS hoặc cách khác làm cho hình ảnh vừa với một khu vực hay không. Cho phép nói rằng tôi có nhiều hình ảnh có kích thước khác nhau và tôi muốn tất cả chúng phù hợp với một div có kích thước 150px x 100px. Tôi không muốn chia tỷ lệ hình ảnh mặc dù một số có thể cao và những người khác thu hẹp tôi chỉ đơn giản muốn họ vừa với khu vực này với phần còn lại bị ẩn.Chia tỷ lệ hình ảnh CSS để vừa trong khu vực không bị bóp méo

Tôi đã nghĩ đến việc sử dụng overflow:hidden nhưng dường như không bị ẩn trong IE6.

Bất kỳ ý tưởng nào?

Marvelous

+0

Bạn không muốn họ để duy trì tỉ lệ? –

Trả lời

30

Bạn nên cố gắng sử dụng này:

img{ 
    width: auto; 
    max-width: 150px; 
    height: auto; 
    max-height: 100px; 
} 

Edit: Hình như IE6 không hỗ trợ max-width và tính max-height. Tuy nhiên, bạn có thể thực hiện giải pháp được cung cấp tại đây: max-width, max-height for IE6

+4

không hoạt động. Các hình ảnh được chia tỷ lệ vẫn là –

+2

Điều này đơn giản là không chính xác. Làm thế nào điều này có thể được upvoted 17 lần? Hình ảnh được chia tỷ lệ rõ ràng bằng cách này, và câu hỏi ban đầu nói rằng phần dư thừa nên được * ẩn *. –

+1

mọi người upvote câu trả lời bởi vì chúng tôi tìm thấy câu hỏi googling cho một chút khác nhau điều, và điều này chỉ làm việc cho trường hợp của chúng tôi;) – robermorales

9

Khi bạn nói "vừa trong khu vực này" với phần còn lại bị ẩn, tôi cảm thấy như bạn muốn hình ảnh không được thu nhỏ và cắt giảm bất kỳ phần thừa nào.

Tôi có thể giải thích bạn đang đặt câu hỏi sai, nhưng hãy thử điều này và xem liệu nó có tạo ra hiệu ứng bạn đang tìm kiếm hay không.

.img-holder { 
 
    width: 150px; 
 
    height: 150px; 
 
    position: relative; 
 
    overflow: hidden; 
 
} 
 
.img-holder img { 
 
    position: absolute; 
 
    display: block; 
 
    top: 0; 
 
    left: 0; 
 
}
<div class="img-holder"> 
 
    <img src="http://img.playit.pk/vi/dH6NIe7wm4I/mqdefault.jpg" /> 
 
</div>

+0

Có và không có. Những gì tôi muốn xảy ra là cho nó để quy mô hình ảnh cho đến khi chiều cao của chiều rộng (mà bao giờ đến đầu tiên) là của container và sau đó cắt phần còn lại. –

10

này sẽ không làm việc trong IE6 (theo yêu cầu của OP), nhưng cho đầy đủ, bạn có thể đạt được hiệu quả cần thiết trên các trình duyệt mới hơn sử dụng CSS3 của background-size:cover và thiết lập hình ảnh làm trung tâm hình nền. Cũng giống như vậy:

div { 
    width:150px; 
    height:100px; 
    background-size:cover; 
    background-position:center center; 
    background-repeat:no-repeat; 
    background-image:url('somepic.jpg'); 
} 
+0

Đã học được điều gì đó mới mẻ! Cảm ơn :-) –

+0

Có lẽ tôi đã nghịch ngợm để bỏ phiếu bầu một cái gì đó mà không cần thử nghiệm nó ... Chỉ cần thử nghiệm nó. Hoạt động đẹp mắt. –

+0

--Đối với tôi, điều này làm biến dạng hình ảnh .-- oh đợi nó thực sự không! tầm nhìn của tôi đã bị lừa. – donquixote

4

này đã làm việc cho tôi:

img.perfect-fit { 
    width: auto; 
    height: auto; 
    min-width: 100%; 
    min-height: 100%; 
} 

Nó cố gắng để làm một "hoàn toàn phù hợp" của container, kéo dài bản thân để phù hợp với các giới hạn trong khi duy trì tỷ lệ hình ảnh. Chưa thử nghiệm nó với IE6.

JSFiddle:http://jsfiddle.net/4zudggou/

+1

có thể căn giữa hình ảnh bằng phương pháp này không? điều đó sẽ rất tuyệt. – Darkhogg

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