如何在特定的div中显示固定的隐藏菜单?

我已经开发了一个切换菜单,我的代码可以正常工作而没有任何问题。我的菜单非常适合在可配置的网站上添加。

这是我完整的代码,功能齐全:

$(document).ready(function () {
$('.slideout-menu-toggle').on('click', function(event){
  event.preventDefault();
  var slideoutMenu = $('.slideout-menu');
  var slideoutMenuWidth = $('.slideout-menu').width();
  $('.capa').toggleClass('visible');  
  slideoutMenu.toggleClass("open");
});
});
.slideout-menu {
  position: fixed;
  top: 0;
  left:-250px;
  width: 250px;
  height: 100%;
  background-color: rgba(15, 23, 27, 0.85);
  transition: all .5s cubic-bezier(0.39, 0.575, 0.565, 1);
  z-index: 100;
}
.slideout-menu h3 {
  position: relative;
  padding: 12px 10px;
  color: #fff;
  font-size: 1.2em;
  font-weight: 400;
}
.slideout-menu .slideout-menu-toggle {
  position: absolute;
  top: 12px;
  left: 10px;
  display: inline-block;
  padding: 6px 9px 5px;
  font-weight: bold;
  line-height: 1;
  color: #999;
  vertical-align: top;
}
.slideout-menu .slideout-menu-toggle:hover {
  color: #fff;
}

.slideout-menu ul li a {
  position: relative;
  display: block;
  padding: 10px;
  color: #999;
}

.slideout-menu ul li a:hover {
  background: #000;
  color: #fff;
}

.capa {
  background-color: rgba(0, 0, 0, 0.4);
  height: 100%;
  left: 0;
  opacity: 0;
  position: fixed;
  top: 0;
  transition: all .5s cubic-bezier(0.39, 0.575, 0.565, 1);
  visibility: hidden;
  width: 100%;
  z-index: 10;
}
.capa.visible {
  opacity: 1;
  visibility: visible;
}
.slideout-menu.open {
  left: 0;
}

.bloque {
 margin: 0 auto;
 width: 600px;
 height: 100vh;
 background: bisque;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container-menu-toggle">
		<div class="slideout-menu">
			<h3>Menu <a href="#" class="slideout-menu-toggle">&times;</a></h3>
			<ul>
				<li><a href="#">Home</a></li>
				<li><a href="#">Home</a></li>
				<li><a href="#">Home</a></li>
				<li><a href="#">Home</a></li>
				<li><a href="#">Home</a></li>
				<li><a href="#">Home</a></li>
				<li><a href="#">Home</a></li>
			</ul>
		</div>
	</div>

	<div class="bloque">
		<div class="boton-menu-toggle">
			<a href="#" class="slideout-menu-toggle">Menu</a>
		</div>
	</div>

但是我希望能够使菜单显示和隐藏于特定的div。

从而:

在此处输入图片说明

而不是这样:

在此处输入图片说明

您能解释一下如何在特定的div中显示和隐藏隐藏菜单吗?

showdev

一种想法是将菜单元素移动到所需的容器(.bloque)中。

然后将菜单从更改position:fixedposition:absolute
并添加position:relative到容器。

我还更改left:-250pxleft:-100vw使菜单完全不在屏幕上。

$(document).ready(function() {
  $('.slideout-menu-toggle').on('click', function(event) {
    event.preventDefault();
    var slideoutMenu = $('.slideout-menu');
    var slideoutMenuWidth = $('.slideout-menu').width();
    $('.capa').toggleClass('visible');
    slideoutMenu.toggleClass("open");
  });
});
.slideout-menu {
  position: absolute;
  top: 0;
  left: -100vw;
  width: 250px;
  height: 100%;
  background-color: rgba(15, 23, 27, 0.85);
  transition: all .5s cubic-bezier(0.39, 0.575, 0.565, 1);
  z-index: 100;
}

.slideout-menu h3 {
  position: relative;
  padding: 12px 10px;
  color: #fff;
  font-size: 1.2em;
  font-weight: 400;
}

.slideout-menu .slideout-menu-toggle {
  position: absolute;
  top: 12px;
  left: 10px;
  display: inline-block;
  padding: 6px 9px 5px;
  font-weight: bold;
  line-height: 1;
  color: #999;
  vertical-align: top;
}

.slideout-menu .slideout-menu-toggle:hover {
  color: #fff;
}

.slideout-menu ul li a {
  position: relative;
  display: block;
  padding: 10px;
  color: #999;
}

.slideout-menu ul li a:hover {
  background: #000;
  color: #fff;
}

.capa {
  background-color: rgba(0, 0, 0, 0.4);
  height: 100%;
  left: 0;
  opacity: 0;
  position: fixed;
  top: 0;
  transition: all .5s cubic-bezier(0.39, 0.575, 0.565, 1);
  visibility: hidden;
  width: 100%;
  z-index: 10;
}

.capa.visible {
  opacity: 1;
  visibility: visible;
}

.slideout-menu.open {
  left: 0;
}

.bloque {
  position: relative;
  margin: 0 auto;
  width: 300px;
  height: 100vh;
  background: bisque;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="bloque">

  <div class="container-menu-toggle">
    <div class="slideout-menu">
      <h3>Menu <a href="#" class="slideout-menu-toggle">&times;</a></h3>
      <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
      </ul>
    </div>
  </div>


  <div class="boton-menu-toggle">
    <a href="#" class="slideout-menu-toggle">Menu</a>
  </div>
</div>


编辑

如果要隐藏菜单的外部部分.bloque,可以使用overflow:hidden在这种情况下,我会将菜单设置为left:-100%而不是left:100vw

$(document).ready(function() {
  $('.slideout-menu-toggle').on('click', function(event) {
    event.preventDefault();
    var slideoutMenu = $('.slideout-menu');
    var slideoutMenuWidth = $('.slideout-menu').width();
    $('.capa').toggleClass('visible');
    slideoutMenu.toggleClass("open");
  });
});
.slideout-menu {
  position: absolute;
  top: 0;
  left: -100%;
  width: 250px;
  height: 100%;
  background-color: rgba(15, 23, 27, 0.85);
  transition: all .5s cubic-bezier(0.39, 0.575, 0.565, 1);
  z-index: 100;
}

.slideout-menu h3 {
  position: relative;
  padding: 12px 10px;
  color: #fff;
  font-size: 1.2em;
  font-weight: 400;
}

.slideout-menu .slideout-menu-toggle {
  position: absolute;
  top: 12px;
  left: 10px;
  display: inline-block;
  padding: 6px 9px 5px;
  font-weight: bold;
  line-height: 1;
  color: #999;
  vertical-align: top;
}

.slideout-menu .slideout-menu-toggle:hover {
  color: #fff;
}

.slideout-menu ul li a {
  position: relative;
  display: block;
  padding: 10px;
  color: #999;
}

.slideout-menu ul li a:hover {
  background: #000;
  color: #fff;
}

.capa {
  background-color: rgba(0, 0, 0, 0.4);
  height: 100%;
  left: 0;
  opacity: 0;
  position: fixed;
  top: 0;
  transition: all .5s cubic-bezier(0.39, 0.575, 0.565, 1);
  visibility: hidden;
  width: 100%;
  z-index: 10;
}

.capa.visible {
  opacity: 1;
  visibility: visible;
}

.slideout-menu.open {
  left: 0;
}

.bloque {
  position: relative;
  margin: 0 auto;
  width: 300px;
  height: 100vh;
  background: bisque;
  overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="bloque">

  <div class="container-menu-toggle">
    <div class="slideout-menu">
      <h3>Menu <a href="#" class="slideout-menu-toggle">&times;</a></h3>
      <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
        <li><a href="#">Home</a></li>
      </ul>
    </div>
  </div>


  <div class="boton-menu-toggle">
    <a href="#" class="slideout-menu-toggle">Menu</a>
  </div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在菜单中隐藏div折叠

如何在React中显示/隐藏div?

如何在DIV中隐藏特定的A元素

如何在Nautilus的右键菜单中添加“显示隐藏的文件”?

如何在BottomNavigationView中隐藏和显示菜单?

显示/隐藏固定菜单(jQuery)

jQuery onclick在菜单中隐藏/显示div

Inno Setup如何在任务栏菜单中隐藏“固定”命令

滚动特定Div时如何切换显示/隐藏固定元素?

如何在简单的基于网格/flex 的菜单中显示/隐藏汉堡菜单?

如何在正确的登录凭据上取消隐藏或显示html中的预隐藏菜单?

如何在颤振中显示/隐藏此特定代码

如何在反应中隐藏和显示div

如何在JavaScript中隐藏/显示div容器?

如何在react js中隐藏和显示div

如何在多个div中显示隐藏单个区域

如何在Bootstrap 3中对SelectedIndex显示/隐藏Div?

如何在菜单项悬停(选择)上显示或隐藏div内容

如何在Drupal中隐藏主菜单

如何在导航菜单中隐藏名称?

如何显示和隐藏特定的div?

在反应中显示/隐藏特定的<div>

如何更改菜单状态以在 React 中隐藏或显示菜单?

从下拉菜单中显示/隐藏,隐藏 div 中的新下拉菜单消失

单击按钮时如何在javascript中隐藏/显示下拉菜单

如何在侧面菜单IONIC2中显示和隐藏页面

如何在Microsoft Visio中隐藏为绘图形状显示的弹出菜单项?

如何在php中显示和隐藏带有会话的菜单

如何在Angular中组合两个下拉菜单时隐藏下拉菜单中的特定选项