2017-01-02 41 views
0

我有一個固定位置的導航欄,我試圖推倒一切,如果只有一條警報消息。該警報將被固定也推divs內容的警報

我試圖包裝我的內容在一個部門,但它什麼都沒做。

我用粉底6我發現正是我這裏尋找http://www.bootply.com/4FSUjc2qej

,但它是引導..但如果導航是靜態的,上面的代碼纔有效。如果顯示的信息需要保持固定在導航上方,我需要該信息。但是當點擊關閉網站時滑到正常水平。

<div class="alert alert-info" role="alert"> 
    <button type="button" class="close" data-dismiss="alert">×</button> 
    <strong>Holy guacamole!</strong> Best check yo self, you are looking very good. 
</div> 

<div id"site"> 
<nav class="nav">My Nav</nav> 
<div>content</div> 
</div> 


    .alert-info { 
     margin-bottom:0; 
     position: fixed 
    } 


.nav { 
    min-height: 50px; 
    height: 50px; 
    overflow: visible; 
    background-color: #000; 
    color: #fff; 
    position: fixed; 
    top: 0; 
    z-index: 10000; 
} 
+0

您應該製作一個位置爲'fixed'的容器/包裝器div,並將該警報和導航器放入該固定div中,而不是使警報和導航都固定。只有一個固定的東西...不是2 – zgood

+0

,但如果我這樣做,它會推動導航下來,但不是網站的其餘部分 – Case

+0

是'固定'的內容將位於靜態內容的頂部......這就是它的工作原理。你需要這樣做嗎?如果某人在你的頁面中間滾動一半並獲得警報,那麼警報會將「固定」導航和「靜態」內容向下推動? – zgood

回答

1

您可以通過設置警報的固定高度,例如40px來實現。然後你可以使用transition的動畫,就像這樣:

function showAlert() { 
 
    document.getElementsByClassName("alert")[0].classList.add("active"); 
 
} 
 

 
function closeAlert() { 
 
    document.getElementsByClassName("alert")[0].classList.remove("active"); 
 
}
.alert { 
 
    position: fixed; 
 
    top: 0; 
 
    height: 0; 
 
    width: 100%; 
 
    background-color: blue; 
 
    color: white; 
 
    transition: height .2s; 
 
} 
 

 
.alert.active { 
 
    height: 40px; 
 
} 
 

 
#site { 
 
    transition: margin-top .2s; 
 
} 
 

 
.alert.active + #site { 
 
    margin-top: 40px; 
 
} 
 

 
.nav { 
 
    display: block; 
 
    width: 100%; 
 
    min-height: 50px; 
 
    height: 50px; 
 
    overflow: visible; 
 
    background-color: #000; 
 
    color: #fff; 
 
    position: fixed; 
 
    top: 0; 
 
    z-index: 10000; 
 
    transition: top .2s; 
 
} 
 

 
.alert.active + #site .nav { 
 
    top: 40px; 
 
} 
 

 
.content { 
 
    padding-top: 59px 
 
}
<div class="alert alert-info" role="alert"> 
 
    <button type="button" class="close" data-dismiss="alert" onclick="closeAlert()">×</button> 
 
    <strong>Holy guacamole!</strong> Best check yo self, you are looking very good. 
 
</div> 
 

 
<div id="site"> 
 
    <nav class="nav">My Nav</nav> 
 
    <div class="content"> 
 
    <button onclick="showAlert()">alert</button> 
 
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
 
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
 
    </div> 
 
</div>

因此顯示警報時,你將不得不

  1. 設置警報
  2. 的高度
  3. 設置網站的頂部偏移量
  4. 設置導航欄的頂部偏移量
+1

只有當你可以有一個靜態高度警報框時,這將會起作用。根據我的經驗,警報中的內容通常都是動態的,並且可以包裝多行,因此請小心。另外,文本在不同的屏幕分辨率下換行方式不同(在桌面上40px可能有足夠的空間提醒,但在平板電腦或手機上可能需要兩倍的空間) – zgood