【问题标题】:Toggle a Div with Button changing margin-left property使用 Button 更改 margin-left 属性切换 Div
【发布时间】:2016-03-22 16:24:14
【问题描述】:

我有一个<div class="lateral-menu"> 和一个按钮

<img class="responsive-icon" src="images/resposive-icon.svg"/>

,div 的宽度为 220px,高度为 auto。

这个想法是在单击 .resposive-icon 时切换横向菜单的 css 属性之一

似乎是我的代码不起作用,有人可以指导我吗?

HTML

<div class="lateral-menu">
<img class="responsive-icon" src="images/resposive-icon.svg"/>

CSS

.lateral-menu {
height: auto;
background-color: #262525;
overflow: hidden;
position: absolute;
top: 50px;
width: 220px;
margin-left:-220px;
}

JAVASCRIPT

$('.responsive-icon').click(function () {
$(".lateral-menu").animate({
    marginLeft: '0px'
}, 500);
});

我正在尝试将 margin-left 从 -220px 切换为 0 以使其从左侧出现。一些建议?谢谢!

【问题讨论】:

  • 似乎运行良好..查看fiddle...浏览器控制台中有任何错误吗?
  • 看看这个例子,它可能对你有帮助:jsfiddle.net/07dmh3gL/2
  • 或者是this你想要达到的目标?
  • 由于您已经将元素定位为absolute,因此更改left 属性而不是margin-left 更合适。

标签: javascript jquery html css


【解决方案1】:

您粘贴的代码示例存在一些问题,导致它在不进行一些更改的情况下无法工作,但总体而言,该方法没有任何问题。

如果 HTML 是这样的:

<div class="lateral-menu"></div>
<img class="responsive-icon" src="images/resposive-icon.svg"/>

那么你需要对这个例子应用一个高度,如Lai's 2nd jsfiddle

如果 HTML 是这样的:

<div class="lateral-menu">
  <img class="responsive-icon" src="images/resposive-icon.svg"/>
</div>

假设您在页面上加载了 jQuery,它应该可以正常工作。我建议打开browser console to check for errors or warnings

此外,您可能会发现使用 left 的运气更好,因为它的绝对位置如下例所示:https://jsfiddle.net/okohrvoL/1/

编辑:

要让菜单再次折叠,可以在回调函数中添加一个简单的检查:

$('.responsive-icon').click(function () {
  var targetValue;

  if ($('.lateral-menu').css('left') == "0px") {
    targetValue = '-220px';
  } else {
    targetValue = '0px';
  }

  $(".lateral-menu").animate({
    left: targetValue
  }, 500);
});

此处的工作示例:https://jsfiddle.net/okohrvoL/2/

【讨论】:

  • 谢谢!那部分正在工作,我想做的是,当我再次单击同一个按钮时,将其恢复到原始位置。到目前为止,我只能显示横向菜单
  • 我已经用一种简单的方法更新了答案,在下次点击时关闭菜单。
  • 真棒@JeremyBaker 现在我明白它是如何工作的了!谢谢朋友!
猜你喜欢
  • 2017-12-18
  • 1970-01-01
  • 2014-09-27
  • 2021-07-28
  • 2017-07-03
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多