当父级具有“转换”CSS属性时,“position:fixed”不会被唤醒

时间:2016-02-24 08:05:22

标签: css3 css-transitions css-transforms

在我的项目中,我有一个屏幕应该从屏幕右侧放入,所以我使用了transform: translateX(100%)然后将其更改为transform: translateX(0%)。它工作正常我能够实现轻松的效果但是在那个屏幕上我有一个动作按钮,它具有Position: Fixed;Bottom: 0px;的css属性但这不起作用我的意思是它不会粘在屏幕的底部。

这是我的JSfiddle:https://jsfiddle.net/sureshpattu/a1seze4x/

Html:

<header>
  Heading
</header>
<div class="page__popup page__popup--ease-in-right page__action-btn--visible" style="height: 382px;">
  <div class="container">
  </div>
  <button class="js-action-btn">
    SELECT ROOMS
  </button>
</div>

Css:

header {
  background: #fff;
  height: 60px;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  z-index: 10;
  box-shadow: 2px 2px 10px #000;
}

.container {
  height: 382px;
}

.page__popup {
  position: absolute;
  top: 100vh;
  z-index: 8;
  display: block;
  overflow-y: scroll;
  max-height: 100vh;
  width: 100%;
  height: 0;
  background: #ffffff;
  .js-action-btn {
    position: relative;
    bottom: -50px;
    transition: all 0.25s ease-in-out;
  }
  //Themes
  &--ease-in-bottom {
    &.visible {
      transition: height 0.25s ease-in-out;
      top: 54px;
      right: 0;
      bottom: 0;
      left: 0;
    }
  }
  &--ease-in-right {
    transform: translateX(100%);
    height: 100vh;
    top: 60px;
    &.visible {
      transition: transform 0.25s ease-in-out;
      transform: translateX(0);
    }
  }
}

.page__action-btn--visible {
  .js-action-btn {
    background: red;
    width: 100%;
    height: 30px;
    position: fixed;
    bottom: 0;
    z-index: 10;
    box-shadow: 0 7px 4px 10px rgba(0, 0, 0, .12);
  }
}

1 个答案:

答案 0 :(得分:6)

这不是错误。

查看规范:The Transform Rendering Model

  

为'transform'属性指定'none'以外的值   在元素处建立一个新的局部坐标系   适用于。

所以根据规范:具有固定定位的元素将变为相对于具有变换的元素 - 而不是视口

作为一种解决方法,您可以:

1)使用转换(例如left属性)而不是转换(translateX

2)从使用转换的容器中删除position:fixed按钮