2012-02-29 6 views
9

Tôi có một divTruyền thông truy vấn và hình ảnh nền

<div id="page"> 

</div> 

Với css sau:

#page { 
    background: url('images/white-zigzag.png') repeat-x; 
    } 

    @media (max-width: 600px) { 
    #page {  
    background: url('images/white-zigzag-mobile.png') repeat-x; 
    } 
} 

tôi nhận thấy khi tôi thay đổi kích thước trình duyệt của tôi, tôi thấy "di động" nền (tốt) nhưng nếu tôi quay trở lại và làm cho trình duyệt của tôi lớn, nền "lớn" trước đó của tôi không xuất hiện lại.

Đó là một vấn đề liên tục nhưng nó xảy ra thường xuyên đủ để tôi nghĩ rằng tôi nên giải quyết nó.

Có cách nào để giải quyết vấn đề "hình nền không xuất hiện" hay cách thay đổi kích thước hình nền, sao cho truy vấn phương tiện "thu hẹp" hình nền để vừa với kích thước mới? Theo như tôi biết không có (lan rộng) cách để thay đổi kích thước của một hình ảnh nền ...

+1

Bạn có thử sử dụng @media (min-width: 600px) {background: url ('images/trắng ngoằn ngoèo. png ') lặp lại-x; } Tôi không chắc chắn nếu điều này hoạt động, đó là lý do tại sao một bình luận của nó. – Tim

+1

Bạn có thể đã biết liên kết này: http://css-tricks.com/how-to-resizeable-background-image/ (thay đổi kích thước của hình nền). – juanrpozo

+0

Khi tôi làm điều đó không thay đổi kích thước hình ảnh ... đó là tôi chỉ nhìn thấy một phần của hình ảnh, không phải hình ảnh có kích thước xuống – redconservatory

Trả lời

18

Theo this test:

Nếu bạn muốn chỉ phiên bản máy tính để bàn của hình ảnh sẽ được tải xuống trên desktop ...

chỉ hình ảnh điện thoại di động được tải về trên điện thoại di động thiết bị -

Bạn cần sử dụng tờ khai min-width để chỉ định chiều rộng trình duyệt tối thiểu cho hình ảnh trên máy tính ...

a max-width cho hình ảnh trên thiết bị di động.

Vì vậy, mã của bạn sẽ là:

@media (min-width: 601px) { 
    #page { 
    background: url('images/white-zigzag.png') repeat-x; 
    } 
} 

@media (max-width: 600px) { 
    #page {  
    background: url('images/white-zigzag-mobile.png') repeat-x; 
    } 
} 
+0

Trong trường hợp nó giúp mọi người, vấn đề tôi đã không bao gồm thẻ '' một cách thích hợp, giống như: ' phần còn lại của CSS. – YPCrumble

+0

Có vấn đề với điều này: Firefox và Chrome cũng sẽ tải xuống kích thước hình ảnh nhỏ hơn, khi chế độ xem được thay đổi kích thước (thành kích thước nhỏ hơn), ví dụ: bạn bắt đầu với kích thước màn hình lớn hơn (width> = 601px) và trình duyệt tải xuống hình ảnh lớn hơn; sau đó bạn thay đổi kích thước trình duyệt thành chiều rộng <= 600px và trình duyệt của bạn cũng sẽ tải xuống hình ảnh nhỏ hơn, điều này hoàn toàn vô nghĩa, bởi vì bạn đã có độ phân giải lớn và bây giờ bạn cũng đã tải xuống bản sao nhỏ hơn. Hoàn toàn chống lại logic của sự vật (tiết kiệm băng thông bằng cách tải về chỉ có kích thước lớn nhất mà bạn cần). –

+0

@DrunkenMaster bạn có thể không * thích * hành vi đó nhưng nó không phải là vô nghĩa. Trình duyệt không biết rằng hai hình ảnh chỉ là các độ phân giải khác nhau của cùng một hình ảnh, nhiều người hiển thị * các hình ảnh * khác nhau tùy thuộc vào đó là điện thoại di động hay máy tính để bàn. Tôi, cho một, thích hành vi này. – TKoL

1

Mã bạn cung cấp là một lỗi nhỏ mà có lẽ là một nơi tốt để bắt đầu hiện bạn có

#page { 
background: url('images/white-zigzag.png') repeat-x; 
} 

@media (max-width: 600px) { 
background: url('images/white-zigzag-mobile.png') repeat-x; 
} 

Phần truy vấn phương tiện chưa hoàn tất. Bạn vẫn cần phải cung cấp bộ chọn CSS mà bạn đã sử dụng bên ngoài truy vấn:

#page { 
background: url('images/white-zigzag.png') repeat-x; 
} 

@media (max-width: 600px) { 
    #page {  
    background: url('images/white-zigzag-mobile.png') repeat-x; 
    } 
} 

Bắt đầu với điều đó và cho tôi biết nếu điều đó khắc phục được sự cố.

+0

Xin lỗi, đó là lỗi đánh máy của tôi ... Tôi đã sửa câu hỏi của mình ở trên. – redconservatory

0

xin vui lòng sử dụng

`@media screen and (min-width: 320px) and (max-width:580px) { 
#page{ 
background: url('images/white-zigzag.png') repeat-x;}}` 
+1

hãy giải thích tại sao câu trả lời của bạn sẽ cải thiện về câu hỏi – nomistic