使用CSS转换从右向左移动div

问题描述 投票:0回答:3

我在抽屉上工作,我必须在按钮点击时从左到右移动div。我试图用CSS-transitions和jQuery做这个,但它不起作用。这是我到目前为止所尝试的内容:

$(document).ready(function() {
  $(".openUserEditBox").on("click", function() {
    $(".user-drawer").show();
  });
});
.user-drawer {
  position: relative;
  width: 600px;
  top: 50px;
  background-color: #f2f2f2;
  border: 1px solid #bbbbbb;
  min-height: 450px;
  float: right;
  display: none;
  left: 100px;
  transition: left 1s ease-in-out;
}

.user-menu {
  padding: 10px 20px;
  position: absolute;
}

.btn-default {
  background-color: #fff;
  padding: 10px;
  border: 1px solid #bbbbbb;
  width: 150px;
}

.btn-default:hover {
  cursor: pointer;
  box-shadow: inset 0 1px 3px 0 #bbbbbb;
}

.btngroup {
  float: right
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btngroup">
  <button class="btn-default openUserEditBox">Show Drawer</button>
  <button class="btn-default closeUserEditBox">Hide Drawer</button>
</div>
<div class="userForm">
  <div class="user-drawer">
    <div class="user-menu">
      <h1>Edit User</h1>
    </div>
  </div>
</div>
jquery css css-transitions
3个回答
1
投票

如果你想转换left属性,那么你不能使用show()hide()。只需在JavaScript中设置left属性即可。

$(document).ready(function() {
  $(".openUserEditBox").on("click", function() {
    $(".user-drawer")[0].style.left = '0';
  });
  $(".closeUserEditBox").on("click", function() {
    $(".user-drawer")[0].style.left = '602px';
  });
});
.userForm {
  overflow-x: hidden;
}

.user-drawer {
  position: relative;
  width: 600px;
  background-color: #f2f2f2;
  border: 1px solid #bbbbbb;
  min-height: 450px;
  margin-left:auto;
  left: 602px;
  transition:left 1s;
}

.btn-default {
  background-color: #fff;
  padding: 10px;
  border: 1px solid #bbbbbb;
  width: 150px;
}

.btngroup {
  text-align:right;
  margin:8px 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btngroup">
  <button class="btn-default openUserEditBox">Show Drawer</button>
  <button class="btn-default closeUserEditBox">Hide Drawer</button>
</div>
<div class="userForm">
  <div class="user-drawer">
    <div class="user-menu">
      <h1>Edit User</h1>
    </div>
  </div>
</div>

请注意,我放弃了花车,因为他们在用户表格中干扰了overflow。希望它目前的形式仍然可用。


1
投票

我只是用绝对定位来显示隐藏部分。并且还删除了用于修复对齐的部分的浮动属性。

$('.openUserEditBox').click(function() {
    $(".userForm").removeClass("hide");
    $(".userForm").addClass("show");
});
$('.closeUserEditBox').click(function() {
    $(".userForm").removeClass("show");
    $(".userForm").addClass("hide");
});
* {
    box-sizing: border-box;
    position: relative;
}

body {
    overflow: hidden;
}

.user-drawer {
    position: relative;
    width: 600px;
    top: 50px;
    background-color: #f2f2f2;
    border: 1px solid #bbbbbb;
    min-height: 450px;
}

.user-drawer .active {
    left: 20px;
    transform: translateX(0%);
}

.userForm::after {
    content: "";
    clear: both;
    display: table;
}

.clearfix::after {
    content: "";
    clear: both;
    display: table;
}

.user-menu {
    padding: 10px 20px;
    position: absolute;
}

.btn-default {
    background-color: #fff;
    padding: 10px;
    border: 1px solid #bbbbbb;
    width: 150px;
}

.btn-default:hover {
    cursor: pointer;
    box-shadow: inset 0 1px 3px 0 #bbbbbb;
}

.btngroup {
    text-align: right
}

.userForm {
    position: absolute;
    right: -100%;
    visibility: visible;
    transition: 0.6s;
}

.userForm.show {
    visibility: visible;
    right: 0;
}

.userForm.hide {
    visibility: hidden;
    right: -100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btngroup">
    <button class="btn-default openUserEditBox">Show Drawer</button>
    <button class="btn-default closeUserEditBox">Hide Drawer</button>
</div>
<div class="userForm">
    <div class="user-drawer">
        <div class="user-menu">
            <h1>Edit User</h1>
        </div>
    </div>
</div>

0
投票

您可以通过添加类并在单击上删除它并在其上设置动画来完成此操作

$(document).ready(function() {
  $(".openUserEditBox").on("click", function() {
       $(".user-drawer").removeClass("slide-out");
       $(".user-drawer").addClass("slide-in");
  });
  $(".closeUserEditBox").on("click", function() {
       $(".user-drawer").removeClass("slide-in");
       $(".user-drawer").addClass("slide-out");
  });
});
.userForm {
  overflow-x: hidden;
}

.user-drawer {
  position: relative;
  width: 600px;
  background-color: #f2f2f2;
  border: 1px solid #bbbbbb;
  min-height: 450px;
  margin-left:auto;
  left: 100%;
}

.btn-default {
  background-color: #fff;
  padding: 10px;
  border: 1px solid #bbbbbb;
  width: 150px;
}

.btngroup {
  text-align:right;
  margin:8px 0;
}

.slide-in {
  animation: slide-in 0.5s forwards;
  -webkit-animation: slide-in 0.5s forwards;
}
.slide-out {
  animation: slide-out 0.5s forwards;
  -webkit-animation: slide-out 0.5s forwards;
}
@-webkit-keyframes slide-in {
  100% {
    left: 0;
  }
}
@keyframes slide-in {
  100% {
    left: 0;
  }
}
@-webkit-keyframes slide-out {
  0% {
    left: 0;
  }
  100% {
    left: 100%;
  }
}
@keyframes slide-out {
  0% {
    left: 0;
  }
  100% {
    left:100%;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="btngroup">
  <button class="btn-default openUserEditBox">Show Drawer</button>
  <button class="btn-default closeUserEditBox">Hide Drawer</button>
</div>
<div class="userForm">
  <div class="user-drawer">
    <div class="user-menu">
      <h1>Edit User</h1>
    </div>
  </div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.