gpt4 book ai didi

javascript - 点击任意位置打开关闭侧边栏

转载 作者:行者123 更新时间:2023-11-28 19:23:42 28 4
gpt4 key购买 nike

我需要创建一个侧边栏,它可以通过点击 X 按钮并点击任意位置来关闭它我可以通过单击边栏中的 X 按钮来关闭导航栏。如何更改我的 javascript 以便能够通过单击页面上的任意位置来关闭边栏?

	function openNav() {
document.getElementById('mySidenav').style.width="250px";
}
function closeNav() {
document.getElementById('mySidenav').style.width="0"
}
	
.sidenav {
height: 100%;
width: 0;
position: fixed;
z-index: 1;
top: 0;
right: 0;
overflow-x: hidden;
transition: 0.5s;
padding-top: 60px;
background-color: #111;
}

.sidenav a{

display: block;
padding: 8px 8px 8px 32px;
text-decoration: none;
font-size: 25px;
color: #818181;
transition: 0.3s;
}

.sidenav a:hover{

color: #F1F1F1;

}

.sidenav .closebtn{

position: absolute;
top: 0;
right: 25px;
font-size: 35px;
margin-left: 50px;
}

@media screen and (max-height: 450px){

.sidenav{padding-top: 15px;}
.sidenav a{font-size: 18px;}

}
<body>


<div id="mySidenav" class="sidenav">

<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
<a href="#">CARRITO 1</a>
<a href="#">CARRITO 2</a>

</div>
<h2>Animated Sidenav</h2>
<p>Click on the element below to open sidenav</p>
<span style="cursor: pointer;" onclick="openNav()">cart</span>




</body>

最佳答案

您可以通过以下方式收听整个页面的点击次数:

document.body.onclick = function () {
// Close Nav here
}

但是,这样做会导致您的整个页面在单击时尝试关闭导航 - 甚至是您的打开按钮。

您可以通过 e.stopPropagation() 方法将某些元素排除在监听父元素上设置的事件之外。请参阅下面的示例实现。

另请注意,由于缺少内容,您的正文不会从窗口高度的 100% 开始,因此不会响应页面上所有位置的点击。您可以通过设置 CSS 属性 body: 100vh 来解决这个问题。

function openNav(e) {
e.stopPropagation();
document.getElementById('mySidenav').style.width="250px";
}

function closeNav(e) {
e.stopPropagation();
document.getElementById('mySidenav').style.width="0"
}

document.body.onclick = closeNav;
document.getElementsByClassName('openbtn')[0].onclick = openNav;
document.getElementById('mySidenav').onclick = openNav;
document.getElementsByClassName('closebtn')[0].onclick = closeNav;
body {
height: 100vh;
}

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

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

.sidenav a:hover {
color: #F1F1F1;
}

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

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


<div id="mySidenav" class="sidenav">

<a href="javascript:void(0)" class="closebtn">&times;</a>
<a href="#">CARRITO 1</a>
<a href="#">CARRITO 2</a>

</div>
<h2>Animated Sidenav</h2>
<p>Click on the element below to open sidenav</p>
<span style="cursor: pointer;" class="openbtn">cart</span>

</body>

关于javascript - 点击任意位置打开关闭侧边栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56798531/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com