2012-06-22 51 views
2

我試圖使頁面變窄時使用background-image設置的背景圖像淡出。我很確定它可以使用CSS轉換來完成,但我對它們很不熟悉。我想我問的是,你可以基於媒體查詢做出背景圖像轉換嗎?基於媒體查詢的CSS過渡

+0

你是什麼意思「頁面變窄」?根據名稱建議的媒體查詢通常用於根據有關正在查看您的頁面的媒體或設備的信息來設置頁面的樣式。例如,設備寬度和方向可能是您使用媒體查詢檢查的內容。如果您只是指瀏覽器窗口大小,那麼您可能需要查看其他解決方案。這裏有一些關於[媒體查詢]的更多信息(http://www.w3.org/TR/css3-mediaqueries/) – Zhihao

+0

我的意思是瀏覽器的寬度。我只是想要一個很好的轉換,以便在瀏覽器窗口變窄時擺脫背景圖像。 deltab的第二個答案完美運作。 –

+0

然後你應該把他的答案標記爲正確答案。 –

回答

2

Oli Studholme,背景圖像這樣是不是一個動畫的屬性:

CSS工作組是知道這些問題,例如過渡背景圖像正在工作,所以我希望這將改變在未來!

但是,背景色爲動畫屬性,因此這個工程:

body { 
    background-color: #666; 
    height: 100%; 
    -moz-transition: background-color 1s ease; 
} 
@media screen and (max-width: 800px) { 
    body { 
     background-color: #ccc; 
     -moz-transition: background-color 1s ease; 
    } 
} 
@media screen and (max-width: 400px) { 
    body { 
     background-color: #fff; 
     -moz-transition: background-color 1s ease; 
    } 
} 

當然,沒有梯度。這不使用CSS轉換,但也有點八九不離十模擬了同一件事:

body { 
    background-image: -moz-linear-gradient(top, #369, #000); 
    height: 100%; 
} 
@media screen and (max-width: 800px) { 
    body { 
     background-image: -moz-linear-gradient(top, #036, #000); 
    } 
} 
@media screen and (max-width: 400px) { 
    body { 
     background: #000; 
    } 
} 

只需使用取決於你想要支持的瀏覽器的各自的屬性。

3

是的,你可以。我做了幾個活生生的實例:

@media screen and (max-width: 400px) { 
    div { background: navy; } 
} 

@media screen and (min-width: 400px) { 
    div { background: green; } 
} 
div { 
    transition: background 2s linear; 
    width: 400px; text-align: center; color: white; 
} 
@media screen and (max-width: 400px) { 
    div { opacity: 0; } 
} 
@media screen and (min-width: 400px) { 
    div { opacity: 1; } 
} 
div { 
    background: url(http://placekitten.com/400/300/); 
    transition: opacity 1s linear; 
    width: 400px; height: 300px; text-align: center; color: white; 
} 

我被騙了一點,因爲淡出背景圖片並不廣泛不支持,但請嘗試使用交叉淡入淡出()語法(例如http://peter.sh/files/examples/cross-fading.html)。

+0

輝煌。你應該在這裏包含代碼,而不僅僅是一個鏈接到jsFiddle。 –

+0

這是第一個,它的工作!謝謝! –

+0

認真,雖然你讓我的夜晚。 –