2016-07-24 4 views
1

내 탐색 막대가 접힐 때 스크롤은 정상이며 탐색 막대는 머리글/점보트론을지나 스크롤 할 때 페이지 상단에 고정됩니다. 그러나 탐색 모음이 펼쳐지면 ('1', '2'및 '3'이 표시됨) 페이지가 일부 콘텐츠를 건너 뛰고 탐색 표시 줄로 덮어 씁니다. 페이지를 스크롤/"정상적으로"동작하게하고 아래의 내용을 뛰어 넘지 않고 확장 된 navbar를 페이지 상단으로 수정하도록 허용하려면 어떻게해야합니까? 당신은 아마 알다시피Navbar 스크롤을 확장하고 페이지를 펼칠 때 페이지 상단에 수정하려면 어떻게해야합니까?

<!DOCTYPE html> 
<html> 

<head> 
    <title>Example</title> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
    <link href="https://fonts.googleapis.com/css?family=Cabin" rel="stylesheet"> 
    <link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet"> 
    <script type="text/javascript"> 
    </script> 
    <style> 
     .affix { 
      top: 0; 
      width: 100%; 
     } 
     .affix + .container-fluid { 
      padding-top: 70px; 
     } 
     nav { 
      z-index: 9; 
     } 
     .emoji p:hover { 
      text-decoration: none; 
     } 
    </style> 
</head> 

<body> 
    <div class="container-fluid" style="background-color:#f64e09; color:#fff; height:200px;"> 
     <div class="container text-center" style="color: white;"> 
      <div> 
       <h1 style="font-family: 'Lobster', cursive;">Website</h1> </div> 
      <h1 style="font-size: 30px; font-family: 'Cabin', sans-serif;"> 

    </h1> </div> 
    </div> 
    <nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197"> 
     <div class="container-fluid"> 
      <div class="navbar-static-top"> 
       <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a id="navId" class="navbar-brand" style="color:white;" href="#">Navbar Title</a> </div> 
      <div class="collapse navbar-collapse" id="myNavbar"> 
       <ul class="nav navbar-nav"> 
        <li><a href="#">One</a> </li> 
        <li class="active"><a href="#">Two</a> </li> 
        <li><a href="#">Three</a> </li> 
       </ul> 
      </div> 
     </div> 
    </nav> 
    <!-- Start containter for everything south of navbar --> 
    <div class="container-fluid"> 
     <div class="container" style="padding-top: 20px;"> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> </div> 
    </div> 
    <div class="panel panel-default" style="font-family: 'Cabin', sans- serif;"> 
     <div class="panel-footer"> 
      <center> 
       <p>This is the footer</p> 
      </center> 
     </div> 
    </div> 
</body> 

</html> 

답변

0

는, 네비게이션 바이 붕괴되는 동안 내용이 "점프"하지 않는 이유는이 스타일에 있습니다

.affix + .container-fluid { 
    padding-top: 70px; 
} 

하지만 네비게이션 바에을 확장 할 때, 패딩이 동일하게 유지, 하지만 navbar 자체가 더 커졌습니다. 그래서, 우리는 어떻게 든 그 상황을 distingush해야합니다.

<script type="text/javascript"> 
    $(document).ready(function() { 
     var navBar = $('#myNavbar'); 
     $('.navbar-toggle').click(function(e) { 
      if (!navBar.is(':visible')) { 
       // #myNavbar is about to be shown, add extra class to parent <nav> 
       navBar.parents('nav').addClass('affix-visible-navbar'); 
      } else { 
       // #myNavbar is about to be hidden, remove extra class from parent <nav> 
       navBar.parents('nav').removeClass('affix-visible-navbar'); 
      } 
     }); 
    }); 
</script> 

새로운 CSS 클래스 정의 :

.affix.affix-visible-navbar + .container-fluid { 
    padding-top: 155px !important; 
} 

그래서 전체 작업 솔루션은 다음과 같이 것을 우리는 <nav> 요소에 추가 클래스를 추가하는 몇 가지 javascript을 추가 할 수 있습니다

:

<!DOCTYPE html> 
<html> 

<head> 
    <title>Example</title> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
    <link href="https://fonts.googleapis.com/css?family=Cabin" rel="stylesheet"> 
    <link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet"> 
    <script type="text/javascript"> 
    </script> 
    <style> 
     .affix { 
      top: 0; 
      width: 100%; 
     } 
     .affix + .container-fluid { 
      padding-top: 70px; 
     } 
     .affix.affix-visible-navbar + .container-fluid { 
      padding-top: 155px !important; 
     } 
     nav { 
      z-index: 9; 
     } 
     .emoji p:hover { 
      text-decoration: none; 
     } 
    </style> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      var navBar = $('#myNavbar'); 
      $('.navbar-toggle').click(function(e) { 
       if (!navBar.is(':visible')) { 
        // #myNavbar is about to be shown, add extra class to parent <nav> 
        navBar.parents('nav').addClass('affix-visible-navbar'); 
       } else { 
        // #myNavbar is about to be hidden, remove extra class from parent <nav> 
        navBar.parents('nav').removeClass('affix-visible-navbar'); 
       } 
      }); 
     }); 
    </script> 
</head> 

<body> 
    <div class="container-fluid" style="background-color:#f64e09; color:#fff; height:200px;"> 
     <div class="container text-center" style="color: white;"> 
      <div> 
       <h1 style="font-family: 'Lobster', cursive;">Website</h1> </div> 
      <h1 style="font-size: 30px; font-family: 'Cabin', sans-serif;"> 

    </h1> </div> 
    </div> 
    <nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197"> 
     <div class="container-fluid"> 
      <div class="navbar-static-top"> 
       <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a id="navId" class="navbar-brand" style="color:white;" href="#">Navbar Title</a> </div> 
      <div class="collapse navbar-collapse" id="myNavbar"> 
       <ul class="nav navbar-nav"> 
        <li><a href="#">One</a> </li> 
        <li class="active"><a href="#">Two</a> </li> 
        <li><a href="#">Three</a> </li> 
       </ul> 
      </div> 
     </div> 
    </nav> 
    <!-- Start containter for everything south of navbar --> 
    <div class="container-fluid"> 
     <div class="container" style="padding-top: 20px;"> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> 
      <h1>Content so the page scrolls</h1> </div> 
    </div> 
    <div class="panel panel-default" style="font-family: 'Cabin', sans- serif;"> 
     <div class="panel-footer"> 
      <center> 
       <p>This is the footer</p> 
      </center> 
     </div> 
    </div> 
</body> 

</html> 

물론 0을 변경하는 경우개의 요소 (예 : 항목 추가/제거)에서 채우기를 조정해야합니다. .affix.affix-visible-navbar + .container-fluid {}

+0

완벽하게 작동합니다. 감사합니다. – user3376899

+0

@ user3376899, upvote pls보다 =) – spirit

+0

내가 한 일이지만, 너무 새로운 사용자이기 때문에 표시되지 않습니다. – user3376899