2017-08-22 11 views
1

こんにちは、私はマウスを動かすと自動的に非表示にします。https://codepen.io/JFarrow/pen/fFrpgの例です。私はオンラインいくつかの文書を読んでいるが、私はまだ..ここに私のコードであるかを見つけ出すことはできません。HTMLとCSSを使用してサイドナビゲーションバーを非表示にする方法

li .glyphicon { 
 
    margin-right: 10px; 
 
} 
 

 
/* Highlighting rules for nav menu items */ 
 
li.link-active a, 
 
li.link-active a:hover, 
 
li.link-active a:focus { 
 
    background-color: #4189C7; 
 
    color: white; 
 
} 
 

 
/* Keep the nav menu independent of scrolling and on top of other items */ 
 
.main-nav { 
 
    position: fixed; 
 
    top: 0; 
 
    left: 0; 
 
    right: 0; 
 
    z-index: 1; 
 
} 
 

 
@media (min-width: 768px) { 
 
    /* On small screens, convert the nav menu to a vertical sidebar */ 
 
    .main-nav { 
 
     height: 100%; 
 
     width: calc(25% - 20px); 
 
    } 
 
    .navbar { 
 
     border-radius: 0px; 
 
     border-width: 0px; 
 
     height: 100%; 
 
    } 
 
    .navbar-header { 
 
     float: none; 
 
    } 
 
    .navbar-collapse { 
 
     border-top: 1px solid #444; 
 
     padding: 0px; 
 
    } 
 
    .navbar ul { 
 
     float: none; 
 
    } 
 
    .navbar li { 
 
     float: none; 
 
     font-size: 15px; 
 
     margin: 6px; 
 
    } 
 
    .navbar li a { 
 
     padding: 10px 16px; 
 
     border-radius: 4px; 
 
    } 
 
    .navbar a { 
 
     /* If a menu item's text is too long, truncate it */ 
 
     width: 100%; 
 
     white-space: nowrap; 
 
     overflow: hidden; 
 
     text-overflow: ellipsis; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> 
 

 

 
<div class='main-nav'> 
 
    <div class='navbar navbar-inverse'> 
 
     <div class='navbar-header'> 
 
      <a class='navbar-brand' [routerLink]="['/home']">Navbar</a> 
 
      <button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse'> 
 
       <span (click)="isCollapsed = !isCollapsed">Toggle navigation</span> 
 
       <span class='icon-bar'></span> 
 
       <span class='icon-bar'></span> 
 
       <span class='icon-bar'></span> 
 
       <span class='icon-bar'></span> 
 
      </button> 
 
     </div> 
 
     <div class='clearfix'></div> 
 
     <div class='navbar-collapse collapse' > 
 
       <ul class='nav navbar-nav'> 
 
        <li [routerLinkActive]="['link-active']"> 
 
         <a [routerLink]="['/home']"> 
 
          <span class='glyphicon glyphicon-home'></span> Home 
 
         </a> 
 
        </li> 
 
        <li [routerLinkActive]="['link-active']"> 
 
         <a [routerLink]="['/login']"> 
 
          <span class='glyphicon glyphicon-log-in'></span> Log In 
 
         </a> 
 
        </li> 
 
        <li [routerLinkActive]="['link-active']"> 
 
         <a [routerLink]="['/margin']"> 
 
          <span class='glyphicon glyphicon-list'></span> Report 
 
         </a> 
 
        </li> 
 
        <li [routerLinkActive]="['link-active']"> 
 
         <a [routerLink]="['/smart-table']"> 
 
          <span class='glyphicon glyphicon-list'></span> Smart table 
 
         </a> 
 
        </li> 
 
       </ul> 
 
</div> 
 
    </div> 
 
</div>

そして私はどこ私は、コードを追加する必要がわからないが。 js関数を追加したり、ブートストラップ関数でいくつかのbuidを使って、ちょうど私のために働かないコードがオンラインであります....

あなたの助けをお待ちしています。

答えて

1

この効果は、CSSの一部の行だけで簡単に達成できます。

まずすなわち.nav-label、あなたのナビゲーションアイテムのラベルのラッパーを追加します、ホバー上.main-navに対して異なるwidthを使用することによって今

... 
<span class='glyphicon glyphicon-home'></span> <span class="nav-label">Home</span> 
... 

transition効果を適用すると、デフォルトで.nav-labelsを隠す:

.main-nav { 
    height: 100%; 
    width: 100px; 
    transition: all .1s linear; 
} 
.main-nav:hover { 
    width: calc(25% - 20px) 
} 
.main-nav:hover .nav-label { 
    display: inline-block; 
} 

ここでは、コードを使用した実例を示します(サイドバーの操作を見るにはフルスクリーンモードで表示します):

li .glyphicon { 
 
    margin-right: 10px; 
 
} 
 

 

 
/* Highlighting rules for nav menu items */ 
 

 
li.link-active a, 
 
li.link-active a:hover, 
 
li.link-active a:focus { 
 
    background-color: #4189C7; 
 
    color: white; 
 
} 
 

 

 
/* Keep the nav menu independent of scrolling and on top of other items */ 
 

 
.main-nav { 
 
    position: fixed; 
 
    top: 0; 
 
    left: 0; 
 
    right: 0; 
 
    z-index: 1; 
 
} 
 

 
.main-nav .navbar-nav>li { 
 
    float: none; 
 
} 
 

 
.nav-label { 
 
    display: none; 
 
    margin-left: 2em; 
 
} 
 

 
@media (min-width: 768px) { 
 
    /* On small screens, convert the nav menu to a vertical sidebar */ 
 
    .main-nav { 
 
    height: 100%; 
 
    width: 100px; 
 
    transition: all .1s linear; 
 
    } 
 
    .main-nav:hover { 
 
    width: calc(25% - 20px) 
 
    } 
 
    .main-nav:hover .nav-label { 
 
    display: inline-block; 
 
    } 
 
    .navbar { 
 
    border-radius: 0px; 
 
    border-width: 0px; 
 
    height: 100%; 
 
    } 
 
    .navbar-collapse { 
 
    border-top: 1px solid #444; 
 
    padding: 0px; 
 
    } 
 
    .navbar li { 
 
    display: block; 
 
    font-size: 15px; 
 
    margin: 6px; 
 
    } 
 
    .navbar li a { 
 
    display: block; 
 
    padding: 10px 16px; 
 
    border-radius: 4px; 
 
    } 
 
    .navbar a { 
 
    /* If a menu item's text is too long, truncate it */ 
 
    width: 100%; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    text-overflow: ellipsis; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> 
 

 
<div class='main-nav'> 
 
    <div class='navbar navbar-inverse'> 
 
    <div class='navbar-header'> 
 
     <a class='navbar-brand' [routerLink]="['/home']">Navbar</a> 
 
     <button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse'> 
 
      <span (click)="isCollapsed = !isCollapsed">Toggle navigation</span> 
 
      <span class='icon-bar'></span> 
 
      <span class='icon-bar'></span> 
 
      <span class='icon-bar'></span> 
 
      <span class='icon-bar'></span> 
 
     </button> 
 
    </div> 
 
    <div class='clearfix'></div> 
 
    <div class='navbar-collapse collapse'> 
 
     <ul class='nav navbar-nav'> 
 
     <li [routerLinkActive]="['link-active']"> 
 
      <a [routerLink]="['/home']"> 
 
      <span class='glyphicon glyphicon-home'></span> <span class="nav-label">Home</span> 
 
      </a> 
 
     </li> 
 
     <li [routerLinkActive]="['link-active']"> 
 
      <a [routerLink]="['/login']"> 
 
      <span class='glyphicon glyphicon-log-in'></span> <span class="nav-label">Log In</span> 
 
      </a> 
 
     </li> 
 
     <li [routerLinkActive]="['link-active']"> 
 
      <a [routerLink]="['/margin']"> 
 
      <span class='glyphicon glyphicon-list'></span> <span class="nav-label">Report</span> 
 
      </a> 
 
     </li> 
 
     <li [routerLinkActive]="['link-active']"> 
 
      <a [routerLink]="['/smart-table']"> 
 
      <span class='glyphicon glyphicon-list'></span> <span class="nav-label">Smart table</span> 
 
      </a> 
 
     </li> 
 
     </ul> 
 
    </div> 
 
    </div> 
 
</div>

1

あなたがMouseEnterイベント/ mouseleaveのイベントを調べて、自分のナビゲーションにいくつかのクラスを追加する必要があります。

例:

$(document).on('mouseenter', '.main-nav', function() { 
    $(this).addClass('expanded'); //Add Class for full nav 
}); 

$(document).on('mouseleave', '.main-nav', function() { 
    $(this).removeClass('expanded'); //Return to small nav 
}); 

これはJavascriptを持つソリューションであるか、あなただけのナビゲーションの一部の表示/幅を変更する簡単なCSSのソリューションを持つことができます。

関連する問題