2010-08-11 42 views
84

Tôi đang cố gắng tải hình ảnh (được đặt động, không có giới hạn về thứ nguyên) rộng bằng div mẹ, nhưng chỉ miễn là chiều rộng đó không rộng hơn chiều rộng của nó ở 100%. Tôi đã cố gắng này, không có kết quả:Tạo chiều rộng hình ảnh 100% div gốc, nhưng không lớn hơn chiều rộng của chính nó

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

Nhiều người trong số những hình ảnh này là cách rộng hơn div cha mẹ của họ, đó là lý do tôi muốn họ thay đổi kích thước cho phù hợp, nhưng khi một hình ảnh nhỏ bật trong đó và được mở rộng vượt ra ngoài kích thước bình thường của nó, nó thực sự trông khủng khiếp. Có cách nào để làm điều này không?

+4

gì xảy ra nếu bạn chỉ định 'max-width: 100 % '? –

+0

@Fyodor Soikin - Đưa ra câu trả lời và tôi sẽ bầu cho bạn. –

+0

Nó sẽ là tốt để xem xét những trình duyệt hỗ trợ tối đa chiều rộng, mặc dù. – kbrimington

Trả lời

146

Chỉ cần chỉ định max-width: 100% một mình, điều đó nên thực hiện.

+1

Chromium dường như chỉ đơn giản là để ở mức 100% bất kể ngữ cảnh. Có lẽ tôi nên ngừng liên tục xem xét công việc của mình trên phần mềm beta. Cảm ơn bạn! – Alfonso

+2

Điều này dường như không hoạt động trong Firefox. –

2

Đặt chiều rộng 100% là chiều rộng đầy đủ của div nằm trong đó chứ không phải hình ảnh có kích thước đầy đủ gốc. Không có cách nào để làm điều đó mà không có JavaScript hoặc một số ngôn ngữ kịch bản khác có thể đo hình ảnh. Nếu bạn có chiều rộng cố định hoặc chiều cao cố định của div (như chiều rộng 200px) thì không được là quá khó để cung cấp cho phạm vi hình ảnh để lấp đầy. Nhưng nếu bạn đặt một hình ảnh 20x20 pixel trong một hộp 200x300 pixel, nó sẽ vẫn bị méo.

+1

vui lòng cung cấp ví dụ hoạt động bất cứ khi nào có thể. [Này] (http://jsfiddle.net/) được khuyến khích. :) – bhb

+2

^oh sự mỉa mai =] – ahnbizcad

6

Tìm thấy bài đăng này trên tìm kiếm của Google và giải quyết vấn đề của tôi nhờ trả lời @jwal, nhưng tôi đã thêm một giải pháp cho giải pháp của anh ấy.

img.content.x700 { 
    width: auto !important; /*override the width below*/ 
    width: 100%; 
    max-width: 678px; 
    float: left; 
    clear: both; 
} 

Với trên, chúng tôi đã thay đổi max-width đến kích thước của vùng chứa nội dung mà hình ảnh của tôi là trong Trong trường hợp này đó là: chiều rộng container - đệm - trú = chiều rộng tối đa

Bằng cách này. hình ảnh của tôi sẽ không thoát ra khỏi div chứa, và tôi vẫn có thể nổi hình ảnh trong div nội dung.

Tôi đã thử nghiệm trong IE 9, FireFox 18.0.2 và Chrome 25.0.1364.97, Safari iOS và có vẻ hoạt động.

Bổ sung: Tôi đã thử nghiệm hình ảnh này trên một hình ảnh rộng 1024px được hiển thị ở 678px (chiều rộng tối đa) và hình ảnh rộng 500px được hiển thị ở 500px (chiều rộng của hình ảnh).

+1

Sử dụng 'width: auto! Important;' đã khắc phục sự cố trong IE11 đối với tôi nơi ảnh sẽ lớn hơn vùng chứa và IE11 không thu nhỏ hình ảnh. Thiết lập điều này trong bộ chọn 'img' đã sắp xếp vấn đề trong IE11. Tuy nhiên, thiết lập 'width: 100%;' không có rule khác không làm gì trong IE11.Vì vậy, "ghi đè" phải được bao gồm cho hình ảnh để thu nhỏ kích thước của vùng chứa. – lowtechsun

0

Nếu hình ảnh là nhỏ hơn so với cha mẹ ...

.img_100 { 
    width: 100%; 
} 
0

Tôi sẽ sử dụng tài sản display: table-cell

Đây là link

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