2016-09-27 96 views
2

這裏是我的主頁的簡化版本:一個固定的div,保持其父寬度?

<div class="main"> 
    <div class="content"> all the content of my website </div> 
    <div class="nav"> fixed on the screen and always visible </div> 
</div> 

而這裏的相應的CSS:

.main { 
    max-width: 500px; 
    height: 2000px; 
    margin: auto; 
    background-color: grey; 
} 

.nav { 
    width: 100px; 
    height: 100px; 
    background-color: blue; 
    position:fixed; 
    right: 0; /* that's the issue */ 
} 

我想作爲固定要素留在它的父(觸摸其父的右邊緣)。但現在它正在觸摸屏幕的右邊界。

任何想法如何解決這個問題?謝謝!

+0

只需使用一個浮動的權利,而不是一個位置的? –

+1

但我確實希望div是固定的,所以即使在滾動時它也始終顯示在屏幕上。 – Thomas

+1

你將需要使用一點的JavaScript這個和絕對定位 – Pete

回答

2

您可以添加一個附加項目,以模擬主容器的屬性,嘗試這樣的:

.main { 
 
    max-width: 500px; 
 
    height: 2000px; 
 
    margin: auto; 
 
    background-color: grey; 
 
} 
 
.nav { 
 
    position:fixed; 
 
    max-width:500px; 
 
    width:100%; 
 
} 
 
.nav > div{ 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: blue; 
 
    float:right; 
 
}
<div class="main"> 
 
    <div class="content">all the content of my website</div> 
 
    <div class="nav"><div>fixed on the screen and always visible</div></div> 
 
</div>

0

position: fixed被描述爲「元素相對於瀏覽器窗口定位」。您可以使用JavaScript來實現這種效果,這裏是你如何用jQuery做到這一點,例如:

$(window).scroll(function() { 
 
      var y = $(window).scrollTop(); 
 
      $(".nav").css('top', y); 
 
});
.main { 
 
    max-width: 500px; 
 
    height: 4000px; 
 
    margin: auto; 
 
    background-color: grey; 
 
    position: relative; 
 
} 
 

 
.nav { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: red; 
 
    position: absolute; 
 
    right: 0; /* that's the issue */ 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="main"> 
 
    <div class="content"> parent </div> 
 
    <div class="nav"> fixed to parent width </div> 
 
</div>

+1

謝謝,但我希望該div被修復,因此即使我滾動時它始終可見在屏幕上。 – Thomas

+0

DaniP有一個非常好的解決方案,唯一的考慮就是如果你改變父項的寬度,你還必須更新'.nav' max-width屬性的值。 – Ryanthehouse

+0

分部使用位置:固定 – Milind

相關問題