2011-11-24 88 views
3

我在滾動內容和溢出div中背景時遇到問題。在溢出div中滾動背景

我的情況:

<style> 
    .parent{ 
     background-image: url(http://www.google.lv/images/srpr/logo3w.png); 
     width:100px; 
     height:200px; 
     overflow:scroll; 
    } 
    .parent div{ 
     background-color:red; 
     width:10px; 
     height:1000px; 
    } 
</style> 
<div class="parent"> 
    <div> 
     a 
     b 
     c 
     f 
     d 
    </div> 
</div> 

內容是滾動的,但父母的背景保持不變。我也想滾動背景。我認爲這是可能的,而不需要在父div中添加具有所需背景的額外圖層。

任何想法?

回答

1

將您的背景設置爲內部div,而不是容器,因爲容器停留在相同的位置,但內部div正在向上移動。

<style> 
    .parent{ 
     width:100px; 
     height:200px; 
     overflow:scroll; 
    } 
    .parent div{ 
     background-image: url(http://www.google.lv/images/srpr/logo3w.png); 
     width:10px; 
     height:1000px; 
    } 
</style> 
+0

不能這樣做,因爲我的內部div可能有它自己的背景。而且我不想在 – Yurish

+0

內添加額外的圖層像選項一樣,您可以使用JavaScript移動背景,但這不是一個好的解決方案。你可以通過訂閱容器的'onscroll'事件並在'scrollOffset'值上移動背景位置來做到這一點。 – Samich

+0

另外,你的內容只有不同的背景顏色,所以你可以將它與圖像混合:'background:#f00 url(http://www.google.lv/images/srpr/logo3w.png)no-repeat left top;' – Samich

0

不知道純CSS的方法來解決它(因爲溢出容器的大小不計算從它的內容的大小,而是從集大小)。只有這樣我可以通過添加第二個容器想到的是:

http://jsfiddle.net/cBMNs/1/

+0

我做到了,使用第二個容器,但爲了不破壞我的.parent容器內的結構,我只是用div來包裝一切溢出。和你一樣。但是,我仍然認爲,這可能與CSS,因爲它很奇怪 - 爲什麼背景在身體上滾動,但在溢出的div沒有。 – Yurish

9

好了,2年前,這可能不是一直如此,但background-attachment:local;在Chrome 4+,IE 9,火狐25解決問題+和Safari 5+。

移動瀏覽器的支持是可變的。在IOS中工作,在Android瀏覽器中不起作用,Android Chrome 47聲稱支持它,但它在所有情況下都無法正常工作。

我更新了@Alexey Ivanov的小提琴並刪除了額外的bg包裝。

http://jsfiddle.net/nilloc/c5yfn81s/