html - 我怎样才能使从左侧滑入的 flexbox 过渡到页面居中?

标签 html css flexbox

我目前有一个带有 css 属性的 flexbox,看起来像这样:

#root {
    display: flex;
    width: 85%;
    border: 1px #F2F0F0 solid;
    margin: 0 -100%;
    position: relative;
    top: 15%;
    height: 600px;
    overflow: hidden;
    align-items: center;
    transition-property: margin;
    transition-duration: 1s;
}

这将我的 flexbox 完全推出屏幕,向左。我现在想把它滑到右边,但是,我读到你不能使用计算值的过渡,比如 margin: 0 auto 这是我希望我的 flexbox 过渡到的 css,在为了使我的 flexbox 响应地居中到我的屏幕中心。

我怎样才能做到这一点?我确定我错过了一些简单的东西。我目前的过渡只是一个既没有响应也没有居中的边距。

#root.slide-in {
    margin: 0 2%;
}

编辑:

我的 flexbox 在这样的容器中:

<div class="container">
    <!-- I want to center this flexbox -->
    <div id="root" class="flexbox"></div>
</div>

最佳答案

您应该使用 CSS 属性 transform 而不是为 margin 设置动画,它是为这种过渡而创建的。然后,您可以保留 CSS 布局属性(例如边距和位置)不变。与 margin 不同,改变 transform 永远不会改变周围元素的定位。

https://developer.mozilla.org/en-US/docs/Web/CSS/transform

.container {
  background: #eee;
  padding: 10px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
}

#root {
  align-self: center;
  width: 85%;
  height: 60px;
  background: #ccc;
  transition: 1s transform;
  padding: 10px;
}

.hidden {
  transform: translateX(-100vw);
}
<div class=container onclick="document.querySelector('#root').classList.toggle('hidden')">
  <div id=root> This is #root </div>
  <p>click to hide or show #root</p>
</div>

关于html - 我怎样才能使从左侧滑入的 flexbox 过渡到页面居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900027/

相关文章:

javascript - 打开 HTML5 视频的隐藏字幕

javascript - 如何创建编辑特定元素的 TamperMonkey 脚本

javascript - 更改标签<h1>,如果更改页面

CSS 页脚将取代右侧

html - 在 flexbox 布局中设置图像基线

html - 如何使用 css flexbox 创建水平滚动?

javascript - 使用 jquery、html 和 css 显示多个文件上传的多个进度条

css - 防止页面跳转按钮点击? ReactJS

javascript - 使用 react 时的前端故障

css - 将元素水平居中到其容器,同时避免重叠