javascript - 创建可折叠的侧边菜单

标签 javascript jquery html css

我想要达到的效果是: https://gesso-theme.myshopify.com/
当你点击左上角的折叠菜单时。

我坚持并努力实现的事情是:

1.) 当菜单向内移动时,如何使菜单看起来将正文内容向右移动? (这不是很重要,但很高兴知道)
2.) 为什么隐藏我的正文内容的阴影 div 不能达到浏览器的全宽和全高?
3.) 无论我体内有什么内容,我都希望能够实现这一目标。
4.) 我想在没有插件或 Bootstrap 的情况下实现这一点,只有 javascript、jquery、css 和 html,这样我才能真正理解发生了什么。

$(".show-side-menu").click(function(){
$(".container").toggle();
$(".darkness").toggle();
});
*{
  margin:0;
  padding:0;
}
html, body{
  height: 100%;
    		margin: 0;
}
.container{
height:100%;
width:200px;
background:white;
position:absolute;
top:0;
bottom:0;
display:none;
}
a.show-side-menu{
  background:blue;
  color:white;
  font-size:20px;
  z-index:10;
  position:absolute;
}
.random-content{
height:500px;
width:500px;
margin:10px;
background:purple;
}
.darkness{

  background:rgba(136, 114, 114, 0.65);
  position:absolute;
  top:0;
  bottom:0;
  left:0;
  right:0;
  display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class="show-side-menu">Show</a>
<div class="darkness"></div>
<div class="container">

</div>

<div class="random-content">
  
</div>

<div class="random-content">
  
</div>
<div class="random-content">
  
</div>
<div class="random-content">
  
</div>

最佳答案

用最简单的html和css这就是我能给你的

$(function() {
	$(".ui-menu-toggle").click(function() {
  	$(".ui-menu").toggleClass("open");
    console.info($(".ui-menu"));
  });
});
.ui-menu {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  top: 0;
  z-index: 1001;
}
.ui-menu > .ui-menu-overlay {
  opacity: 0;
  height: 100%;
  width: 100%;
  z-index: 0;
  position: fixed;
  background: #000;
  transition-property: opacity;
  transition-duration: 0.2s;
}
.ui-menu > .ui-menu-container {
  background-color: #fff;
  box-shadow: 0 -1px 24px rgba(0, 0, 0, 0.4);
  height: 100%;
  left: -340px;
  position: absolute;
  width: 320px;
  transition-property: transform;
  transition-duration: 0.3s;
} 

.ui-menu.open {
  display: block;
}

.ui-menu.open > .ui-menu-overlay {
  opacity: 0.3;
}
.ui-menu.open > .ui-menu-container {
  transform: translateX(340px);
} 

.ui-body {
  background: pink;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  top: 0;
  transition-property: transform;
  transition-duration: 0.3s;  
}

.ui-menu.open > .ui-body {
  transform: translateX(320px);
  z-index: -1;
} 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="ui-menu">
	<div class="ui-menu-overlay"></div>
	<div class="ui-menu-container">
    <a href="#" class="ui-menu-toggle">close menu</a>
		menu content
	</div>
  <div class="ui-body">
    <a href="#" class="ui-menu-toggle">open menu</a>
    body content
  </div>  
</div>

关于javascript - 创建可折叠的侧边菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35077445/

相关文章:

jquery - 我如何解决 jQuery 和 CSS 中的对齐问题?

html - 当鼠标悬停效果发生在图像上时,段落向上移动

javascript - 我怎样才能用javascript选择这个元素?

javascript - FCM 通知适用于 Chrome 但不适用于 Firefox

javascript - 滚动的淡入问题

javascript - 检查 "change"事件是否来自键盘

javascript - jQuery加载导致body变白

javascript - 模块模式和闭包讨论

javascript - 在我的表格中添加 CSS 滚动条

javascript - 如何使用 JSON 数据进行动态星级评分