2014-08-27 82 views
1

我试图将一个元素固定在一个容器中,但固定元素似乎是根据屏幕而不是父元素定位自己。相对于父容器的固定位置

我的代码:

<div class="relative"> 
    <div class="absolute"> 
    <div class="fixed"></div> 
    </div> 
</div> 

的CSS:

.relative{ 
    position: relative; 
    height:800px; 
    width: 400px; 
    background: #000; 
} 

.absolute{ 
    height:60px; 
    width: 60px; 
    position: absolute; 
    top:0; 
    right:0; 
    background: #ccc; 
    -webkit-transform: translateZ(0); 
} 

.fixed{ 
    height:20px; 
    width: 20px; 
    background: red; 
    position: fixed; 
    top:0; 
    right:0; 
} 

我想红色框是固定的灰色方框内。但现在当我滚动框滚动,并没有保持固定。

亲身体验:http://codepen.io/undefinedtoken/pen/abhgc

+0

固定位置拉动DOM外的元件,并且它相对于视场所。 “我希望它是固定的”是什么意思?它应该留在父母的内部吗? – LinkinTED 2014-08-27 12:27:43

+0

是的!我试图做一个模式弹出,其右上方有一个固定的关闭按钮,因为内容有太高的高度,我想让关闭按钮固定,这样如果用户滚动关闭按钮不会滚动。 – undefinedtoken 2014-08-27 12:29:40

+0

然后我认为lpg提供的答案可能适合你。 – LinkinTED 2014-08-27 12:30:31

回答

3

这里的问题是与-webkit-transform

Chrome无法在转换下的元素上渲染position:fixed

Read here

你可以尝试删除transform.absolute股利和计算它的父母后宽度设置margin-left.fixed股利。在你的情况下它是40px

实施例:

.absolute{ 
    height:60px; 
    width: 60px; 
    position: absolute; 
    top:0; 
    right:0; 
    background: #ccc; 
    /* -webkit-transform: translateZ(0); */ 
} 

.fixed{ 
    height:20px; 
    width: 20px; 
    background: red; 
    position: fixed; 
    margin-left: 40px; 
} 

JSFiddle DEMO

1

你确定你不想红格为position:absolute,而不是固定的吗?例如。

.fixed{ 
    height:20px; 
    width: 20px; 
    background: red; 
    position: absolute; 
    top:0; 
    right:0; 
} 

演示拨弄:http://jsfiddle.net/lparcerisa/osxo8ysw/

http://www.w3schools.com/css/css_positioning.asp

固定定位

与固定位置的元素相对于浏览器窗口被定位。

即使窗口滚动

+0

嗨,我想红色的div被固定在右上方,即使我向下滚动。 – undefinedtoken 2014-08-27 12:31:16

1
height:20px; 
width: 20px; 
background: red; 
position: fixed; 
right:0px; 
/* adjust manually by margin*/ 
margin-right: 300px; 

read this article

编辑它不会移动

CSS

.relative-wrapper { 
     background-color:#f00; 
     height:500px; 
     overflow:scroll; 
     width: 220px; 
     position: absolute; 
     z-index:0; 
    } 

    .fixed { 
     background-color:green; 
     width: 180px; 
     position: absolute; 
     z-index:1; 
     margin: 3px 10px 10px; 
    } 

HTML

<div class="relative-wrapper"> 
    test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test 
    </div> 
    <div class="fixed"> 
    Overwrite it the content.. 
    </div> 
+0

如果它的响应呢? – undefinedtoken 2014-08-27 12:44:16

+0

是的,给出百分比值并使用媒体查询。 – 2014-08-27 12:46:43

+0

你现在可以检查答案吗?你能否说这是你在找什么? – 2014-08-27 13:00:10

相关问题