javascript - 使用 transform :scale on parent, 时,子元素的下拉列表位于另一行下方

标签 javascript css bootstrap-4

所以问题是,当我尝试在鼠标悬停时缩放我的行时,如果我的下拉菜单打开,我有下拉菜单,它会进入下一行。

如何让它保持在顶部?

我试过 z-index,但没有帮助。在使用比例方面,我可能有些不明白。

.row {
  background: #f8f9fa;
  margin-top: 5px;
}

.col {
  border: solid 1px #6c757d;
  padding: 10px;
}

.myScale1:hover {
  transform: scale(1.05);
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<!-- 
  Bootstrap docs: https://getbootstrap.com/docs
-->

<div class="container">
  <div class="row myScale1">
    <div class="col ">
      1 of 2
    </div>
    <div class="col">
      <div class="dropdown">
        <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown button
        </button>
        <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </div>
    </div>
  </div>
  <div class="row">
    <div class="col">
      1 of 2
    </div>
    <div class="col">
      2 of 2
    </div>
  </div>
  <div class="row">
    <div class="col">
      1 of 2
    </div>
    <div class="col">
      2 of 2
    </div>
  </div>
</div>

最佳答案

使用 transform 将创建一个堆叠上下文,使下拉菜单位于其中,因此所有行(堆叠上下文)都将被绘画顺序后的下一行隐藏。

为避免这种情况,只需增加缩放行的 z-index:

.row {
  background: #f8f9fa;
  margin-top: 5px;
}

.col {
  border: solid 1px #6c757d;
  padding: 10px;
}

.myScale1:hover {
  transform: scale(1.05);
  position:relative;
  z-index:1;
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<!-- 
  Bootstrap docs: https://getbootstrap.com/docs
-->

<div class="container">
  <div class="row myScale1">
    <div class="col ">
      1 of 2
    </div>
    <div class="col">
      <div class="dropdown">
        <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown button
        </button>
        <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </div>
    </div>
  </div>
  <div class="row">
    <div class="col">
      1 of 2
    </div>
    <div class="col">
      2 of 2
    </div>
  </div>
  <div class="row">
    <div class="col">
      1 of 2
    </div>
    <div class="col">
      2 of 2
    </div>
  </div>
</div>

有关绘画顺序和堆叠上下文的更多详细信息的相关问题:

Why can't an element with a z-index value cover its child?

关于javascript - 使用 transform :scale on parent, 时,子元素的下拉列表位于另一行下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57937960/

相关文章:

javascript - JavaScript中如何获取URL参数?

javascript - 并排放置动态创建的 Plotly 表

html - 将一些元素粘贴到左侧,将其他元素粘贴到右侧,同时保持它们在同一行上对齐

twitter-bootstrap - 在 Bootstrap 4 中,如何根据断点更改内部 $grid-gutter-width?

javascript - 根据不同环境可配置 HTML 文件中的外部 URL

javascript - 选择所有三态复选框时出现问题

css - Bootstrap 容器在中型设备和小型设备上全屏显示,但在大型设备上显示一半

java - Bootstrap 的导航栏模板显示不正确的布局

javascript - 类型错误:generateKeyPairSync 不是函数

javascript - 滚动到事件标签