我有一个移动菜单,它占用了所有屏幕,我想隐藏并以淡入淡出过渡显示它。
问题在于我使用不透明度来执行此效果,当不透明度设置为0时,链接不可见但仍然可以点击,我尝试使用z-index
或display
解决此问题但过渡的结果并不相同。
你知道我该怎么办?
这是我的代码fiddle
$(window).ready(function() {
//MENU MOBILE
$('#menu-switch').click(function() {
$( this ).toggleClass('switch-on');
$('#menu-mobile').toggleClass('animated');
});
});

.content{
height:100vh;
width:100vw;
}
.cmn-toggle-switch {
z-index: 999;
display: block;
position: fixed;
top:0;
left:0;
overflow: hidden;
margin: 0;
padding: 0;
width: 60px;
height: 50px;
font-size: 0;
text-indent: -9999px;
box-shadow: none;
border-radius:0;
border: none;
cursor: pointer;
background:transparent;
}
.cmn-toggle-switch:focus {
outline: none;
}
.cmn-toggle-switch span {
display: block;
position: absolute;
top: 20px;
left: 10px;
right: 10px;
height: 5px;
border-radius: 15px;
background: black;
-webkit-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-moz-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-o-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.cmn-toggle-switch span::before,
.cmn-toggle-switch span::after {
position: absolute;
display: block;
left: 0;
width: 120%;
border-radius: 15px;
height: 6px;
background-color: black;
content: "";
}
.cmn-toggle-switch span::before {
top: -12px;
-webkit-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-moz-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-o-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.cmn-toggle-switch span::after {
bottom: -12px;
-webkit-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-moz-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-o-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.cmn-toggle-switch.switch-on span {
position: absolute;
top: 20px;
left: 12px;
right: 12px;
height: 4px;
background: none;
}
.cmn-toggle-switch.switch-on span::before {
opacity:1;
top:0px;
background-color:white;
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-o-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.cmn-toggle-switch.switch-on span::after {
opacity:1;
bottom:-2px;
background-color:white;
-moz-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg);
}
div#menu-mobile{
width:100vw;
height:100vh;
position:fixed;
top:0;
bottom:0;
opacity:0.95;
background-color: #BF4139;
-webkit-transition: opacity 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-moz-transition: opacity 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-o-transition: opacity 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: opacity 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
div#menu-mobile.animated{
opacity:0;
}
div#menu-mobile ul:first-child{
margin-top:60px;
}
div#menu-mobile ul{
margin-left:15%;
}
div#menu-mobile ul li{
list-style:none;
padding:8px 0px;
}
div#menu-mobile ul li a{
color:white !important;
font-size:16px;
}
div#menu-mobile ul li a:hover{
color: #001e4e !important;
font-size:16px;
}
div#menu-mobile span{
display: block;
position: absolute;
margin:0;
font-size:0;
top: 165px;
left: 1px;
right: 1px;
height: 4px;
background: white;
}
div#menu-mobile p{
font-size:18px;
color:white;
text-align:center;
}
#menu-switch {
display: block;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="content"></div>
<button id="menu-switch" class="cmn-toggle-switch">
<span>toggle menu</span>
</button>
<div id="menu-mobile" class="animated">
<ul>
<li class="home"><a href="/">Accueil</a></li>
<li class="publiee"><a href="/pages/publiee">Idée publiée</a></li>
<li class="en-place"><a href="/pages/enplace">Idée mise en place</a></li>
</ul>
<span>sperator</span>
<p class="name">Nom Prénom</p>
<ul>
<li class="profil"><a href="/">Mon Profil</a></li>
<li class="admin"><a href="/">Espace Administrateur</a></li>
<li class="deco"><a href="/">Déconnexion</a></li>
</ul>
</div>
&#13;
答案 0 :(得分:2)
您还应该在visibility: hidden
中使用transition
,因为事件仍适用于opacity: 0
(请阅读更多here)。
$(window).ready(function() {
//MENU MOBILE
$('#menu-switch').click(function() {
$( this ).toggleClass('switch-on');
$('#menu-mobile').toggleClass('animated');
});
});
&#13;
.content{
height:100vh;
width:100vw;
}
.cmn-toggle-switch {
z-index: 999;
display: block;
position: fixed;
top:0;
left:0;
overflow: hidden;
margin: 0;
padding: 0;
width: 60px;
height: 50px;
font-size: 0;
text-indent: -9999px;
box-shadow: none;
border-radius:0;
border: none;
cursor: pointer;
background:transparent;
}
.cmn-toggle-switch:focus {
outline: none;
}
.cmn-toggle-switch span {
display: block;
position: absolute;
top: 20px;
left: 10px;
right: 10px;
height: 5px;
border-radius: 15px;
background: black;
-webkit-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-moz-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-o-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.cmn-toggle-switch span::before,
.cmn-toggle-switch span::after {
position: absolute;
display: block;
left: 0;
width: 120%;
border-radius: 15px;
height: 6px;
background-color: black;
content: "";
}
.cmn-toggle-switch span::before {
top: -12px;
-webkit-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-moz-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-o-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.cmn-toggle-switch span::after {
bottom: -12px;
-webkit-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-moz-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-o-transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.cmn-toggle-switch.switch-on span {
position: absolute;
top: 20px;
left: 12px;
right: 12px;
height: 4px;
background: none;
}
.cmn-toggle-switch.switch-on span::before {
opacity:1;
top:0px;
background-color:white;
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-o-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.cmn-toggle-switch.switch-on span::after {
opacity:1;
bottom:-2px;
background-color:white;
-moz-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg);
}
div#menu-mobile{
width:100vw;
height:100vh;
position:fixed;
top:0;
bottom:0;
opacity:0.95;
background-color: #BF4139;
-webkit-transition: opacity 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-moz-transition: opacity 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
-o-transition: opacity 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: opacity 400ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
div#menu-mobile.animated{
opacity: 0;
visibility: hidden;
}
div#menu-mobile ul:first-child{
margin-top:60px;
}
div#menu-mobile ul{
margin-left:15%;
}
div#menu-mobile ul li{
list-style:none;
padding:8px 0px;
}
div#menu-mobile ul li a{
color:white !important;
font-size:16px;
}
div#menu-mobile ul li a:hover{
color: #001e4e !important;
font-size:16px;
}
div#menu-mobile span{
display: block;
position: absolute;
margin:0;
font-size:0;
top: 165px;
left: 1px;
right: 1px;
height: 4px;
background: white;
}
div#menu-mobile p{
font-size:18px;
color:white;
text-align:center;
}
#menu-switch {
display: block;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="content"></div>
<button id="menu-switch" class="cmn-toggle-switch">
<span>toggle menu</span>
</button>
<div id="menu-mobile" class="animated">
<ul>
<li class="home"><a href="/">Accueil</a></li>
<li class="publiee"><a href="/pages/publiee">Idée publiée</a></li>
<li class="en-place"><a href="/pages/enplace">Idée mise en place</a></li>
</ul>
<span>sperator</span>
<p class="name">Nom Prénom</p>
<ul>
<li class="profil"><a href="/">Mon Profil</a></li>
<li class="admin"><a href="/">Espace Administrateur</a></li>
<li class="deco"><a href="/">Déconnexion</a></li>
</ul>
</div>
&#13;
答案 1 :(得分:1)
您可以将---
title: "Model 1 Coefficients"
output: pdf_document
twoside: inner=1.25in, outer=0.25in
---
更改为max-height
并隐藏溢出。它只是一个可通行的解决方案。
0
答案 2 :(得分:0)
您可以使用关键帧并为不透明度设置动画,后跟宽度或高度。在这里摆弄https://jsfiddle.net/otvpL8xp/4/
@-moz-keyframes hideMenu {
0% {
opacity:1;
}
100% {
opacity: 0;
}
}
@-moz-keyframes widthMenu {
0% {
width:100%;
}
100% {
width: 0;
}
}
div#menu-mobile.animated {
animation: hideMenu .4s ease forwards,
widthMenu 0s .5s forwards;
}