2014-08-27 73 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

相關問題