2016-11-26 101 views
3

注意:容器的位置必须为absolute caue我的插件需要这样做。粘性元素到父溢出容器

<div class = "container"> 
    <div id = "element1"> 
    </div> 
    <div id = "element2"> 
    </div> 
    <div id = "element3"> 
    </div> 
</div> 

.container { 
    display: block; 
    overflow-y: scroll; 
    overflow-x: hidden; 

    background-color: yellow; 
} 

#element1 { 
    background-color: red; 
} 
#element2 { 
    background-color: green; 
} 
#element3 { 
    background-color: blue; 
} 

Should work like this

+0

请列出所有的要求,使我们这些试图回答这个问题不必不断调整答案。 – rfornal

回答

0

#element3的需求来.container外面移动;但如果你需要的容器这种方式,尝试...

小提琴:https://jsfiddle.net/rfornal/y3qs8nxv/

<div class="container"> 
    <div class="inner-container"> 
    <div id="element1"></div> 
    <div id="element2"></div> 
    </div> 
    <div id="element3"></div> 
</div> 

尝试CSS像这样...

.container { 
    display: block; 
    position: absolute; 
    width: 50%; 
    height: 50%; 
} 

.inner-container { 
    display: block; 
    overflow-y: scroll; 
    overflow-x: hidden; 

    background-color: yellow; 
    position: relative; 
    z-index: 10; 
    width: 100%; 
    height: 100%; 
} 

#element1 { 
    background-color: red; 
    padding: 1em; 
} 
#element2 { 
    background-color: green; 
    padding: 1em; 
} 
#element3 { 
    background-color: blue; 
    position: absolute; 
    right: -2em; 
    bottom: -2em; 
    height: 4em; 
    width: 4em; 
    z-index: 20; 
} 
+0

不幸的是我的容器位置必须是“绝对的”,因为我的插件要求。 – Dominik

+0

我已经更改了代码以适应此。你可能想考虑把这一切都放在一个“包装器”里面;该包装器可能带有'.inner-container'和'#element3'的'.container'作为插件约束的子节点。 – rfornal

+0

更改我的答案,以适应你的要求,以容器内的#element3'。 – rfornal

0

在您的标记,#element3里面.container

但在图片中#element3.container之外。

你有两个选择:

  1. 写标记,以便#element3超出.container;或
  2. 添加JavaScript它选择#element3,然后移动它之外.container
+0

。我需要在容器内部有#element3,否则我的网格会被破坏。 – Dominik

+1

对。那么,你的答案就是这样。您不能在'.container'之外将'#element3'显示在图片中。 – Rounin