2017-02-09 25 views
0

サイドバーを非表示にして、ボタンをクリックして開くと表示されます。隠しサイドバーをホバーに表示する方法

これはHTMLにある:

<div id="mySidenav" class="sidenav"> 
     <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
     <a href="#">Home</a> 
     <a href="#">About</a> 
     <a href="#">News</a> 
     <a href="#">Contact</a> 
    </div> 

これはCSSである:

/* The side navigation menu */ 
.sidenav { 
    height: 100%; 
    width: 0; 
    position: fixed; 
    z-index: 1; 
    top: 0; 
    left: 0; 
    background-color: #111; 
    overflow-x: hidden; 
    padding-top: 60px; 
    transition: 0.5s; 
} 

/* The navigation menu links */ 
.sidenav a { 
    padding: 8px 8px 8px 32px; 
    text-decoration: none; 
    font-size: 25px; 
    color: #818181; 
    display: block; 
    transition: 0.3s 
} 

.sidenav a:hover, .offcanvas a:focus{ 
    color: #f1f1f1; 
} 

.sidenav .closebtn { 
    position: absolute; 
    top: 0; 
    right: 25px; 
    font-size: 36px; 
    margin-left: 50px; 
} 

#main { 
    transition: margin-left .5s; 
    padding: 20px; 
} 

@media screen and (max-height: 450px) { 
    .sidenav {padding-top: 15px;} 
    .sidenav a {font-size: 18px;} 
} 

これはjavascriptのコードです:

<script type="text/javascript"> 
     /* Set the width of the side navigation to 250px and the left margin of the page content to 250px and add a black background color to body */ 
     function openNav() { 
      document.getElementById("mySidenav").style.width = "250px"; 
      document.getElementById("contoh").style.marginLeft = "250px"; 
      document.body.style.backgroundColor = "rgba(0,0,0,0.4)"; 
     } 

     /* Set the width of the side navigation to 0 and the left margin of the page content to 0, and the background color of body to white */ 
     function closeNav() { 
      document.getElementById("mySidenav").style.width = "0"; 
      document.getElementById("contoh").style.marginLeft = "0"; 
      document.body.style.backgroundColor = "white"; 
     } 
    </script> 

私の質問は、[開く]ボタンを変更する方法であり、ホバー上にあり、フルサイドバーを表示します。このウェブのサイドバーのように:https://la24.org/games-concept多くの感謝の前に。

+1

:あなたは、簡単なCSSでそれを行うことができますか?ボタン?またはnavbarの一部ですか?ボタン上で 'onmouseover'と' onmouseleave'を使うことができます。あなたがホバリングしたいものがあなたのマークアップに基づいて(あなたが提供したリンクのように)navbarの一部です。できません。あなたのnavbarに幅がないことが示されているからです。表示しないことを意味する。だから、どのように表示がない要素にカーソルを置くことができますか? – rmondesilva

+0

私は、私が与えたリンクのようにしたいと思っています。だから、最初に幅を表示したり、アイコンを表示したりする必要があります。全幅を表示すると、すべてのメニューが表示されます。 @rmondesilva – Rian

+0

はい。私はあなたに例を示す答えを掲示しました。 – rmondesilva

答えて

0

@OP、はい、あなたのナビゲーションバー上のいくつかの幅を配置する必要があります。あなたが提供したリンクのnavbarと同じように。 JavaScriptを使用して開く必要はありません。あなたがホバリングしたい要素

.sidenav { 
    height: 100%; 
    width: 50px; /* Put some width to hover on. */ 
} 

/* ON HOVER */ 
.sidenav:hover{ 
    width: 250px; 
} 

/* The side navigation menu */ 
 
.sidenav { 
 
    height: 100%; 
 
    width: 50px; 
 
    position: fixed; 
 
    z-index: 1; 
 
    top: 0; 
 
    left: 0; 
 
    background-color: #111; 
 
    overflow-x: hidden; 
 
    padding-top: 60px; 
 
    transition: 0.5s; 
 
} 
 

 
/* ON HOVER */ 
 
.sidenav:hover{ 
 
    width: 250px; 
 
} 
 

 
/* The navigation menu links */ 
 
.sidenav a { 
 
    padding: 8px 8px 8px 32px; 
 
    text-decoration: none; 
 
    font-size: 25px; 
 
    color: #818181; 
 
    display: block; 
 
    transition: 0.3s 
 
} 
 

 
.sidenav a:hover, .offcanvas a:focus{ 
 
    color: #f1f1f1; 
 
} 
 

 
.sidenav .closebtn { 
 
    position: absolute; 
 
    top: 0; 
 
    right: 25px; 
 
    font-size: 36px; 
 
    margin-left: 50px; 
 
} 
 

 
#main { 
 
    transition: margin-left .5s; 
 
    padding: 20px; 
 
}
<div id="mySidenav" class="sidenav"> 
 
     <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
 
     <a href="#">Home</a> 
 
     <a href="#">About</a> 
 
     <a href="#">News</a> 
 
     <a href="#">Contact</a> 
 
</div>

+0

うわー、これは私には大いに役立ちますが、サイドバーが全幅になるとメインページ(サイドバーの横)を暗くしています。どのようにこのコードでそれを使用する?ありがとう – Rian

+0

@Rianは '.sidenav:hover {/ *ここに* /}'の中にあなたの 'function openNav()'で持っているすべてのスタイルを追加します。 'background-color:rgba(0,0,0 、0.4); ' – rmondesilva

+0

ありがとう、私は今知っている。最後の質問、私はどのように私が与えたリンクからのように、CSSの遷移をトリガーするので、マウスポインタがサイドバーに近いですが(サイドバーにはない)、遷移がオンになっています。ありがとう – Rian

0

この問題を解決するには、jQueryのmouseoverメソッドとmouseoutメソッドを試すことができます。例えば

$("#mySidenav").mouseover(function(){ //Your code here. })

$("#mySidenav").mouseout(function(){ //Your code here. })

0
You can implement using CSS also without writing javascript code. See below the code. 

<div class="parent"> 
     <button class="dropbtn">Dropdown</button> 
     <div id="mySidenav" class="sidenav"> 
     <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
     <a href="#">Home</a> 
     <a href="#">About</a> 
     <a href="#">News</a> 
     <a href="#">Contact</a> 
     </div> 
    </div> 


.parent { 
    position: relative; 
    display: inline-block; 
} 

.parent:hover .sidenav { 
    display:block; 
} 


In the code mentioned by Dang Khoa, you have to include the button in side navigation or implement the onMouseHover on your button id. 
関連する問題