2017-04-09 54 views
0

我要讓這樣的關帆布菜單,但我要推文在屏幕作物,而不是。我想補充一點,關閉菜單後我點擊了它的功能。關閉帆布菜單HTML教程

我從w3school關閉帆布菜單中的代碼。

function openNav() { 
 
    document.getElementById("mySidenav").style.width = "250px"; 
 
    document.getElementById("main").style.marginLeft = "250px"; 
 
} 
 

 
function closeNav() { 
 
    document.getElementById("mySidenav").style.width = "0"; 
 
    document.getElementById("main").style.marginLeft= "0"; 
 
}
body { 
 
    font-family: "Lato", sans-serif; 
 
} 
 

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

 
.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: 16px; 
 
} 
 

 
@media screen and (max-height: 450px) { 
 
    .sidenav {padding-top: 15px;} 
 
    .sidenav a {font-size: 18px;} 
 
}
<div id="mySidenav" class="sidenav"> 
 
    <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
 
    <a href="#">About</a> 
 
    <a href="#">Services</a> 
 
    <a href="#">Clients</a> 
 
    <a href="#">Contact</a> 
 
</div> 
 

 
<div id="main"> 
 
    <h2>Sidenav Push Example</h2> 
 
    <p>Click on the element below to open the side navigation menu, and push this content to the right.</p> 
 
    <span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span> 
 
</div>

回答

0

而不是試圖添加/刪除CSS規則上單擊事件 - 嘗試使用一個單一的功能,增加/刪除一個類來實現開/關。

我創建一個開放的類,有你在JS們的造型 - 那麼它只是添加/刪除類,允許sidenav打開/關閉的情況。

這是不是我會建議有它 - 但保持它與你的原碼觸摸儘可能多的 - 我包裹在一個div整個事情與包裝的ID - 然後說,在點擊的該div(其中包含側NAV和主面板),如果包裝物具有開放類 - 然後將其刪除(關閉sidenav),並且如果不是 - 打開它。

你需要看看你想要觸發的開放 - 我假設你不想在整個疼痛面板上打開側面中殿 - 但這應該給你一個關於如何獲得點擊的想法在sidenav之外關閉它。

function toggleNav() { 
 
    var wrapper = document.getElementById("wrapper"); 
 
    
 
    if(wrapper.classList.contains("open")){ 
 
    wrapper.classList.remove("open") 
 
    } else { 
 
    wrapper.classList.add("open"); 
 
    }; 
 
}
body { 
 
    font-family: "Lato", sans-serif; 
 
} 
 

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

 
.open #mySidenav { 
 
    width:250px; 
 
} 
 

 
.open #main { 
 
    margin-left:250px; 
 
} 
 

 

 
.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: 16px; 
 
} 
 

 
@media screen and (max-height: 450px) { 
 
    .sidenav {padding-top: 15px;} 
 
    .sidenav a {font-size: 18px;} 
 
}
<div id="wrapper" class="" onclick="toggleNav()"> 
 
<div id="mySidenav" class="sidenav"> 
 
    <a href="javascript:void(0)" class="closebtn">&times;</a> 
 
    <a href="#">About</a> 
 
    <a href="#">Services</a> 
 
    <a href="#">Clients</a> 
 
    <a href="#">Contact</a> 
 
</div> 
 

 
<div id="main"> 
 
    <h2>Sidenav Push Example</h2> 
 
    <p>Click on the element below to open the side navigation menu, and push this content to the right.</p> 
 
    <span style="font-size:30px;cursor:pointer">&#9776; open</span> 
 
</div> 
 
<div>

+0

我媒體鏈接這樣做在我的網站,但對我的代碼從w3school無需改動複製起來比較方便。不管怎麼說,多謝拉 –