2016-06-07 117 views
0

我有一個UL和裏面的李,我有一個孩子的div。當我在ul內滾動時,我想讓div div保持相對於ul的位置。我能夠在ul和li上使用靜態位置獲得所需的結果,但是當我將ul和li的位置更改爲相對時,它不起作用。絕對位置的孩子相對於滾動祖父母

<ul class="grandparent"> 
    <li class="parent"> 
     <div class="child"> 
     Child 
     </div> 
     <div > 
     <div> 
     Spam 
     </div> 
     <div> 
     Spam 
     </div> 
    <div> 
     Spam 
     </div> 
    <div> 
     Spam 
     </div> 
     </div> 
    </li> 
    <li> 
     <div> 
     Spam 
     </div> 
     <div> 
     Spam 
     </div> 
    <div> 
     Spam 
     </div> 
    <div> 
     Spam 
     </div> 
     </div> 
    </li> 
    </ul> 

這裏的工作副本 https://jsfiddle.net/4jhzfm1s/1/

所以我的問題是,我怎麼能同時具有UL和李爲相對定位的得到想要的效果的鏈接。

回答

0

因此,您希望.child保持在哪裏,無論您向何處滾動?如果是這樣的情況下,我想包在一個div的ul並給予position: relative如下:

.wrapper { 
 
    position: relative; 
 
} 
 
.grandparent{ 
 
    height:100px; 
 
    overflow:auto; 
 
} 
 
.child{ 
 
    position:absolute; 
 
    top:50px; 
 
    left:50%; 
 
}
<div class="wrapper"> 
 
    <ul class="grandparent"> 
 
    <li class="parent"> 
 
     <div class="child"> 
 
     Child 
 
     </div> 
 
     <div > 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     </div> 
 
    </li> 
 
    </ul> 
 
</div>

1

如果您父滾動,只保留祖父母在相對的,它按預期工作:

.grandparent { 
 
    position: relative; 
 
} 
 
.parent { 
 
    height: 100px; 
 
    overflow: auto; 
 
} 
 
.child { 
 
    position: absolute; 
 
    top: 50px; 
 
    left: 50%; 
 
}
<ul class="grandparent"> 
 
    <li class="parent"> 
 
    <div class="child"> 
 
     Child 
 
    </div> 
 
    <div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
     <div> 
 
     Spam 
 
     </div> 
 
    </div> 
 
    </li> 
 
</ul>

你也可以設置top:auto和margin-top:50px,所以你可以有多個元素設置爲絕對(類似固定)example https://jsfiddle.net/4jhzfm1s/3/

+0

會有更多的li,所以我必須保持滾動到祖父 –

+0

@ LunZhang **所以你需要在ul **附加一個額外的包裝,否則位置:sticky;會做(或一個js plolyfill)或專用腳本),但我相信CSS粘性工作實際上只在Firefox(鉻我不知道,一旦它,然後沒有更多) –

+1

我會嘗試添加額外的包裝ul –

相關問題