2012-04-30 32 views
5

Tôi đang phát triển trang web đáp ứng cho công ty có trang web kích thước đầy đủ có trình chiếu với hình ảnh trong nền (lấp đầy hoàn toàn màn hình bằng Backstretch). Vì hình ảnh có kích thước khá lớn (khoảng 300k), tôi đang tìm cách ngăn hình ảnh không được tải khi xem trang web trên điện thoại thông minh.Dừng tải hình ảnh khi đang ở trên điện thoại thông minh

Tôi đã áp dụng display: nonevisibility: hidden trên div backstretch với truy vấn phương tiện. Nó ẩn hình ảnh, nhưng có vẻ như chúng vẫn đang được tải xuống. Có cách nào thông minh để làm cho trình duyệt bỏ qua chúng hoàn toàn không?

Trả lời

6

Nếu bạn đang đặt hình ảnh qua CSS thì có một cách.

Nếu bạn đặt div để hiển thị: none nó vẫn sẽ tải về, tuy nhiên nếu bạn thiết lập các div cha để hiển thị không có thì nó sẽ không tải cho đến khi một đám cháy truy vấn phương tiện để đặt

CSS

.parent {display:block;} 
.background {background-image:url(myimage.png);} 

@media only screen and (max-width:480px) { 
.parent {display:none;} 
} 

HTML

<div class="parent"> 
    <div class="background"></div> 
</div> 

Hat tip để Tim Kadlec - http://timkadlec.com/2012/04/media-query-asset-downloading-results/

+0

Chính xác những gì tôi đang tìm kiếm, cảm ơn! –

+0

Điều này vẫn tải hình ảnh. – praaveen

+0

@praaveen chỉ khi truy vấn phương tiện truyền thông kích hoạt (vì phần tử mẹ của vùng chứa hình ảnh đã được đặt thành không hiển thị) – justinavery

1

visibilitydisplay không liên quan gì đến việc tải xuống hình ảnh hay không. Điều duy nhất bạn có thể làm là có tất cả hình ảnh làm hình nền và sử dụng truy vấn phương tiện để loại trừ chúng hoàn toàn trong biểu định kiểu thay thế của bạn.

+0

Plugin Backstretch jQuery tôi sử dụng để hiển thị hình ảnh nền đưa hình ảnh vào div ngay phía trên thẻ body đóng. Tôi đã thử sử dụng kích thước nền để mở rộng nền, nhưng đó là một con heo điện trên Google Chrome (và không được hỗ trợ trong các trình duyệt cũ). Tôi đã tải lên trang [ở đây] (http://www.andersnoren.se/private/272/uppdrag/rbj/). Có cách nào để làm điều này mà không cần loại bỏ Backstretch? –

4

Tùy chọn khác là đi theo phương pháp đầu tiên trên thiết bị di động, xác định kiểu mặc định cho thiết bị di động và ghi đè các kiểu này trong truy vấn phương tiện cho chiều rộng màn hình lớn hơn.

giống như sau sẽ ngăn chặn các hình ảnh được tải xuống trên một thiết bị di động, và cũng tránh sự cần thiết cho một div wrapper không cần thiết :)

HTML:

<div class="container"> 
    <!-- slideshow container --> 
</div> 

CSS:

/* default to no background image */ 
.container { 
    background-image: none; 
} 

/* add it in for wider screens */ 
@media screen and (min-width: 500px) { 
    .container { 
     background-image: url(myimage.png); 
    } 
} 
Các vấn đề liên quan