简体   繁体   English

试图用一个按钮打开/关闭一个div

[英]Trying to Open/Close a div with one button

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

/* Set the width of the side navigation to 0 */
function closeNav() {
    document.getElementById("mySidenav").style.width = "0";
}

<div onclick="openNav()" class="minimenubutton"><img src="images/menu.png"/></div>

I'm looking for a way to have the function change every time I click this so that I can open my div with one button. 我正在寻找一种方法,每次单击此功能都会对其进行更改,以便可以通过一个按钮打开div。 As of right now, I have closeNav set to a button inside that div, but I'd like to do it all with just the "minimenubutton." 截至目前,我已经将closeNav设置为该div中的按钮,但是我只想使用“ minimenubutton”来完成所有操作。

I'm new to Javascript so please go easy on me. 我是Java语言的新手,所以请放轻松。 I looked up toggles but couldn't figure them out. 我抬头看拨动开关,但找不到。

You just need one function with 2 conditionals (if and else); 您只需要一个带有2个条件的函数(if和else);

 function togNav() { var nav = document.getElementById("nav"); if (nav.style.width == '200px') { nav.style.width = '0'; nav.style.opacity = 0; } else { nav.style.width = "200px"; nav.style.opacity = 1; } } 
 #nav { transition: opactity 3s ease-in; opacity: 0; cursor: pointer; } 
 <p>Click under this paragraph</p> <nav id="nav" onclick="togNav()" class="minimenubutton"> <img src="https://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png" /> </nav> 

You can check css width of element using getComputedStyle() , toggle 0px , 200px ; 您可以使用getComputedStyle()检查元素的css width ,切换0px200px set overflow to hidden at #mySidenav css overflow设置为hidden#mySidenav css

 #mySidenav { display: inline-block; width: 0px; position: relative; overflow: hidden; } 
 <script> function toggleNav() { var el = document.getElementById("mySidenav"); el.style.width = window.getComputedStyle(el).width === "0px" ? "200px" : "0px"; } </script> <div id="mySidenav">side nav</div> <div onclick="toggleNav()" class="minimenubutton"> <img src="http://lorempixel.com/50/50/nature" /> </div> 

You can also achieve this using checkbox + div if layout allows. 如果布局允许,您还可以使用checkbox + div实现此目的。 Without Javascript at all. 完全没有Java语言。

 input.toggler { display: none; } input.toggler + label + div { display: none; } input.toggler:checked + label + div { display: block; } 
 <input type=checkbox id=sometoggler class=toggler /> <label for=sometoggler>open/close</label> <div>content to show / hide </div> 

function toggleNav() {
    var el = document.getElementById("mySidenav");
    if(el.style.width == "200px"){
        el.style.width = "0px";
    } else {
        el.style.width = "200px";
    }
}

<div onclick="toggleNav()" class="minimenubutton"><img src="images/menu.png"/></div>

Just check the width of the element first. 只需先检查元素的宽度即可。 if the element has a width of 200px then set it to 0px, but if its not 200px it must be 0px; 如果元素的宽度为200px,则将其设置为0px,但如果元素宽度不为200px,则必须为0px; So set the width to 200px. 因此,将宽度设置为200px。

function togNav() {
    var e = document.getElementById("mySidenav");
    if (e.style.width == "200px") ? e.style.width = "0px" : e.style.width = "200px";
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM