[英]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
,切换0px
, 200px
; 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.