【问题标题】:Left side menu sliding in correctly but the body not sliding左侧菜单正确滑入但主体不滑动
【发布时间】:2017-02-10 04:30:35
【问题描述】:

所以我正在制作一个左侧菜单,当你单击它时它会滑入,它工作正常动画是正确的,当我尝试使用类 .bd 为 div 设置动画时(我使用它作为主体页面)它没有动画。它移动正确,但很突然,不知道为什么会这样,我包含了一个codepen,我还将包含一个代码 sn-p,它在它们中都给了我相同的结果。

$(document).ready(function(){
	$('.opener').click(function(){
		function name(){
			if($('.bd').css('margin-left') == ($('body').width()*25)/100+'px'){
				$('.bd').css({
					'animation-name':'expandbody',
					'anmation-duration':'2s',
					'margin-left':'0',
					'width':'100%'
				});
				$('.menu').css({
					'animation-name':'closemenu',
					'animation-duration':'1s',
					'width':'0%',
					'display':'none'
				});
			}else{
				$('.bd').css({
					'animation-name':'smallerbody',
					'anmation-duration':'2s',
					'margin-left':'25%',
					'width':'75%'
				});
				$('.menu').css({
					'animation-name':'expandmenu',
					'animation-duration':'1s',
					'width':'25%',
					'display':'block'
				});
			}
		}
		name();
	});
});
html,body{
	margin:0;
	padding:0;
	width:100%;
	height:100%;
}
.menu{
	width:25%;
	height:100%;
	position:fixed;
	background-color:#0A0A0A;
	display:none;
}
.menu ul{
	padding:0;
	margin:0;
}
.menu ul li{
	margin:0;
	padding:0;
	width:100%;
	border-bottom:1px solid #F0F0F0;
	height:50px;
	line-height:50px;
}
.menu ul li a{
	display:block;
	margin:0;
	padding:0;
	width:100%;
	color:#F0F0F0;
	text-decoration:none;
	font-size:1.5em;
	font-family:Arial;
	font-weight:bold;
	transition:all .5s;
}
.fa{
	width:25px;
	margin-left:10px;
	margin-right:25px;
}
.caret{
	float:right;
	display:block;
	width:0px;
	height:0px;
	border-top:10px solid transparent;
	border-right:10px solid transparent;
	border-bottom:10px solid transparent;
	border-left:10px solid #F0F0F0;
	position:relative;
	top:13px;
	display:none;
}
.menu ul li:hover{
	background-color:#1A1A1A;
}
.menu ul li:hover a>.caret{
	display:block;
}
.bar{
	position:fixed;
	margin:0;
	padding:0;
	top:0;
	width:100%;
	height:50px;
	background:#0A0A0A;
	color:#A0A0A0;
}
.opener{
	line-height:40px;
	font-size:2em;
	margin-left:25px;
	padding-left:6px;
	padding-right:6px;
	margin-top:5px;
	margin-bottom:5px;
	max-width:30px;
	cursor:pointer;
	font-weight:bold;
	transition:all .5s;
}
.opener:hover{
	color:#F0F0F0;
}
.bd{
	width:100%;
	height:100%;
	background-color:#F0F0F0;
}

/* Animations*/

@keyframes expandmenu{
	from{
		width:0%;
		display:none;
	}
	to{
		width:25%;
		display:block;
	}
}
@keyframes closemenu{
	from{
		width:25%;
		display:block;
	}
	to{
		width:0%;
		display:none;
	}
}
@keyframes expandbody{
	from{
		width:75%;
		margin-left:25%;
	}
	to{
		width:100%;
		margin-left:0%;
	}
}
@keyframes smallerbody{
	from{
		width:100%;
		margin-left:0%;
	}
	to{
		width:75%;
		margin-left:25%;

	}
}
<head>
	<title>Queltick | Admin Dashboard</title>
	<link href="css/style.css" rel="stylesheet" type="text/css">
	<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
	<script
  src="http://code.jquery.com/jquery-3.1.1.js"
  integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA="
  crossorigin="anonymous"></script>
</head>
<body>
<div class="menu">
<ul>
	<li><a class="menuitem" href="#"><span class="fa fa-home"></span>Home <span class="caret"></span></a></li>
	<li><a class="menuitem" href="#"><span class="fa fa-user"></span>Users <span class="caret"></span></a></li>
	<li><a class="menuitem" href="#"><span class="fa fa-book"></span>Posts <span class="caret"></span></a></li>
	<li><a class="menuitem" href="#"><span class="fa fa-users"></span>Groups <span class="caret"></span></a></li>
</ul>
</div>
<div class="bd">
	<div class="bar">

		<div class="opener">
		&#9776;
		</div>

		<div class="logo"></div>

	</div>

</div>
</body>

编辑:
我将($(window).width()*25)/100+'px' 更改为($('body').width()*25)/100+'px' 以使其更具响应性

【问题讨论】:

  • 它在我的兄弟身上运行良好。我在最后一个 div 之前添加了一些 h1 标签来填充你的 .bd 内容,它完全可以推送它们,这似乎是确切的问题。
  • 身体被正确推到了,但由于某种原因,推没有动画

标签: javascript jquery html css


【解决方案1】:

在您的情况下,第 7 行和第 20 行有两个小拼写错误,“anmation-duration”应该是“animation-duration”

$(document).ready(function() {
  $('.opener').click(function() {
    function name() {
      if ($('.bd').css('margin-left') >= ($('body').width() * 25) / 100 + 'px') {
        $('.bd').css({
          'animation-name': 'expandbody',
          'animation-duration': '2s',
          'margin-left': '0',
          'width': '100%'
        });
        $('.menu').css({
          'animation-name': 'closemenu',
          'animation-duration': '1s',
          'width': '0%',
          'display': 'none'
        });
      } else {
        $('.bd').css({
          'animation-name': 'smallerbody',
          'animation-duration': '2s',
          'margin-left': '25%',
          'width': '75%'
        });
        $('.menu').css({
          'animation-name': 'expandmenu',
          'animation-duration': '1s',
          'width': '25%',
          'display': 'block'
        });
      }
    }
    name();
  });
});
html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}
.menu {
  width: 25%;
  height: 100%;
  position: fixed;
  background-color: #0A0A0A;
  display: none;
}
.menu ul {
  padding: 0;
  margin: 0;
}
.menu ul li {
  margin: 0;
  padding: 0;
  width: 100%;
  border-bottom: 1px solid #F0F0F0;
  height: 50px;
  line-height: 50px;
}
.menu ul li a {
  display: block;
  margin: 0;
  padding: 0;
  width: 100%;
  color: #F0F0F0;
  text-decoration: none;
  font-size: 1.5em;
  font-family: Arial;
  font-weight: bold;
  transition: all .5s;
}
.fa {
  width: 25px;
  margin-left: 10px;
  margin-right: 25px;
}
.caret {
  float: right;
  display: block;
  width: 0px;
  height: 0px;
  border-top: 10px solid transparent;
  border-right: 10px solid transparent;
  border-bottom: 10px solid transparent;
  border-left: 10px solid #F0F0F0;
  position: relative;
  top: 13px;
  display: none;
}
.menu ul li:hover {
  background-color: #1A1A1A;
}
.menu ul li:hover a>.caret {
  display: block;
}
.bar {
  position: fixed;
  margin: 0;
  padding: 0;
  top: 0;
  width: 100%;
  height: 50px;
  background: #0A0A0A;
  color: #A0A0A0;
}
.opener {
  line-height: 40px;
  font-size: 2em;
  margin-left: 25px;
  padding-left: 6px;
  padding-right: 6px;
  margin-top: 5px;
  margin-bottom: 5px;
  max-width: 30px;
  cursor: pointer;
  font-weight: bold;
  transition: all .5s;
}
.opener:hover {
  color: #F0F0F0;
}
.bd {
  width: 100%;
  height: 100%;
  background-color: #F0F0F0;
}
/* Animations*/

@keyframes expandmenu {
  from {
    width: 0%;
    display: none;
  }
  to {
    width: 25%;
    display: block;
  }
}
@keyframes closemenu {
  from {
    width: 25%;
    display: block;
  }
  to {
    width: 0%;
    display: none;
  }
}
@keyframes expandbody {
  from {
    width: 75%;
    margin-left: 25%;
  }
  to {
    width: 100%;
    margin-left: 0%;
  }
}
@keyframes smallerbody {
  from {
    width: 100%;
    margin-left: 0%;
  }
  to {
    width: 75%;
    margin-left: 25%;
  }
}
<head>
  <title>Queltick | Admin Dashboard</title>
  <link href="css/style.css" rel="stylesheet" type="text/css">
  <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
  <script src="http://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script>
</head>

<body>
  <div class="menu">
    <ul>
      <li><a class="menuitem" href="#"><span class="fa fa-home"></span>Home <span class="caret"></span></a>
      </li>
      <li><a class="menuitem" href="#"><span class="fa fa-user"></span>Users <span class="caret"></span></a>
      </li>
      <li><a class="menuitem" href="#"><span class="fa fa-book"></span>Posts <span class="caret"></span></a>
      </li>
      <li><a class="menuitem" href="#"><span class="fa fa-users"></span>Groups <span class="caret"></span></a>
      </li>
    </ul>
  </div>
  <div class="bd">
    <div class="bar">

      <div class="opener">
        &#9776;
      </div>

      <div class="logo"></div>

    </div>

  </div>
</body>

【讨论】:

  • 天哪……耶稣
  • 没有汗水,它发生了。我的许多小时都在追溯到奇怪的缺失点或逗号。
  • hahahahah 很好,谢谢你的修复,我接受了你的回答,我确实有另一个问题,但我想知道你是否可以帮助我?
【解决方案2】:

我将动画名称和动画持续时间更改为动画并将它们放在一起。我认为动画名称不是正确的表达方式。它奏效了

$(document).ready(function(){
    $('.opener').click(function(){
        function name(){
            if($('.bd').css('margin-left') == ($('body').width()*25)/100+'px'){
                $('.bd').css({
                    'animation':'expandbody 2s',
                    'margin-left':'0',
                    'width':'100%'
                });
                $('.menu').css({
                    'animation':'closemenu 1s',
                    'width':'0%',
                    'display':'none'
                });
            }else{
                $('.bd').css({
                    'animation':'smallerbody 2s',
                    'margin-left':'25%',
                    'width':'75%'
                });
                $('.menu').css({
                    'animation':'expandmenu 1s',
                    'width':'25%',
                    'display':'block'
                });
            }
        }
        name();
    });
});

【讨论】:

  • 你能解释一下吗?单独指定动画名称和动画持续时间有什么问题
  • 给我现金,哈哈,这没用,因为我需要它,我想我知道问题是什么
  • 我认为下面的答案是正确的,但它适用于我的。我将动画关键帧学习为单行动画:;
  • 顺便说一句,你的 .bd 在 2 秒内推送,而菜单在 1 秒内推送,看起来很奇怪的变化是 1 秒或 2 秒
【解决方案3】:

对于任何有兴趣的人,我已修复它
这是修复:

$(document).ready(function(){
	$('.opener').click(function(){
		function name(){
			if($('.bd').css('margin-left') == ($(window).width()*25)/100+'px'){
				$('.bd').css({
					'animation-name':'expandbody',
					'animation-duration':'1s',
					'margin-left':'0',
					'width':'100%'
				});
				$('.menu').css({
					'animation':'closemenu 1s',
					'margin-left':'-25%'
				});
			}else{
				$('.bd').css({
					'animation-name':'smallerbody',
					'animation-duration':'1s',
					'margin-left':'25%',
					'width':'75%'
				});
				$('.menu').css({
					'animation-name':'expandmenu',
					'animation-duration':'1s',
					'margin-left':'0%',
					'display':'block'
				});
			}
		}
		name();
	});
});
html,body{
	margin:0;
	padding:0;
	width:100%;
	height:100%;
}
.menu{
	width:25%;
	height:100%;
	position:fixed;
	background-color:#0A0A0A;
	margin-left:-25%;
-webkit-box-shadow: inset -2px 2px 10px -3px rgba(240,240,240,1);
-moz-box-shadow: inset -2px 2px 10px -3px rgba(240,240,240,1);
box-shadow: inset -2px 2px 10px -3px rgba(240,240,240,1);
}
.menu-title{
	height:50px;
	line-height:50px;
	font-size:1.7em;
	font-family:Arial;
	color:#F0F0F0;
	width:calc(100% - 5px);
	padding-left:5px;
	border-bottom:2px solid #F0F0F0;
}
.menu ul{
	padding:0;
	margin:0;
}
.menu ul li{
	margin:0;
	padding:0;
	width:100%;
	border-bottom:1px solid #F0F0F0;
	height:50px;
	line-height:50px;
}
.menu ul li a{
	display:block;
	margin:0;
	padding:0;
	width:100%;
	color:#F0F0F0;
	text-decoration:none;
	font-size:1.5em;
	font-family:Arial;
	font-weight:bold;
	transition:all .5s;
}
.fa{
	width:25px;
	margin-left:25px;
	margin-right:25px;
}
.caret{
	float:right;
	display:block;
	width:0px;
	height:0px;
	border-top:10px solid transparent;
	border-right:10px solid transparent;
	border-bottom:10px solid transparent;
	border-left:10px solid #F0F0F0;
	position:relative;
	top:13px;
	display:none;
}
.menu ul li:hover{
	background-color:#1A1A1A;
}
.menu ul li:hover a>.caret{
	display:block;
}
.bar{
	position:fixed;
	margin:0;
	padding:0;
	top:0;
	width:100%;
	height:50px;
	background:#0A0A0A;
	color:#A0A0A0;
}
.opener{
	line-height:40px;
	font-size:2em;
	margin-left:25px;
	padding-left:6px;
	padding-right:6px;
	margin-top:5px;
	margin-bottom:5px;
	max-width:30px;
	cursor:pointer;
	font-weight:bold;
	transition:all .5s;
}
.opener:hover{
	color:#F0F0F0;
}
.bd{
	width:100%;
	height:100%;
	background-color:#1A1A1A;
}

/* Animations*/

@keyframes expandmenu{
	from{
		margin-left:-25%;
	}
	to{
		margin-left:0%;
	}
}
@keyframes closemenu{
	from{
		margin-left:0%;
	}
	to{
		margin-left:-25%;
	}
}
@keyframes expandbody{
	from{
		width:75%;
		margin-left:25%;
	}
	to{
		width:100%;
		margin-left:0%;
	}
}
@keyframes smallerbody{
	from{
		width:100%;
		margin-left:0%;
	}
	to{
		width:75%;
		margin-left:25%;

	}
}
<head>
	<title>Queltick | Admin Dashboard</title>
	<link href="css/style.css" rel="stylesheet" type="text/css">
	<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
	<script
  src="http://code.jquery.com/jquery-3.1.1.js"
  integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA="
  crossorigin="anonymous"></script>
</head>
<body>
<div class="menu">
<div class="menu-title">
&#9776; Menu
</div>
<ul>
	<li><a class="menuitem" href="#"><span class="fa fa-home"></span>Home <span class="caret"></span></a></li>
	<li><a class="menuitem" href="#"><span class="fa fa-user"></span>Users <span class="caret"></span></a></li>
	<li><a class="menuitem" href="#"><span class="fa fa-book"></span>Posts <span class="caret"></span></a></li>
	<li><a class="menuitem" href="#"><span class="fa fa-users"></span>Groups <span class="caret"></span></a></li>
</ul>
</div>
<div class="bd">
	<div class="bar">

		<div class="opener">
		&#9776;
		</div>

		<div class="logo"></div>

	</div>

</div>
</body>
</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 2013-02-01
    • 2021-01-26
    • 2013-06-19
    • 2016-11-27
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多