Bootstrap 4下拉菜单translate3d()位置不正确。

3

有多个Bootstrap 4.4.1下拉菜单,每个都在一个列中,这很好,除了计算出的位置。

HTML列示例
<div class="container">
  <div class="row">
    <div class="col">
      <div class="dropdown">
        <a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="snl-68778" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" tabindex="0"><div class="btn-txt">TEXT</div><div class="chevron-wrapper"><svg class="chevron"><use xlink:href="/img/chevron-white.svg#chevron"></use></svg></div></a>

        <div class="dropdown-menu" aria-labelledby="snl-68778" style="">
          <a class="dropdown-item" target="_blank" href="#" tabindex="0">Link 1</a>
          <a class="dropdown-item" target="_blank" href="#" tabindex="0">Link 2</a>
          <a class="dropdown-item" target="_blank" href="#" tabindex="0">Link 3</a>
          <a class="dropdown-item" target="_blank" href="#" tabindex="0">Link 4</a>
          <a class="dropdown-item" target="_blank" href="#" tabindex="0">Link 5</a>
        </div>
      </div>
    </div>
   // more columns here
  </div>
</div>

CSS:
.btn,
.dropdown-menu {
    width: 100%;
}
.btn{
  display: inline-block;
  padding: 8px 15px;
  border: none;
  background: #E5392A;
  color: #fff;
  text-align: center;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 1.5px;
  line-height: 18px;
  text-transform: uppercase;
}
.dropdown-menu{
  margin-top: 0;
  border: 0;
  padding: 0 10px;
  background-color: #211D17;
}
.chevron-wrapper {
  vertical-align: middle;
  display: inline-block;
  width: 36px;
  height: 26px;
  border-left: 1px solid #fff;
  margin-left: calc(100% - 115px);
  padding-left: 10px;
}
.dropdown.show .chevron {
  transform: rotate(90deg);
}
.chevron {
  display: inline-block;
  width: 26px;
  height: 26px;
}

我设置了5列,但我的问题是下拉菜单在第一列和最后一列的位置:

第一列:translate3d(5px,-244px,0px);

第五列:translate3d(-5px,-244px,0px);

左/右移了5像素,我不知道是什么原因导致的。如果将列数减少到4,第一列/最后一列仍然存在相同的偏移。

是否有一种方法可以强制使计算出来的translate3d(5px,-244px,0px)中的第一个数字始终为0?我尝试过transform: translateX(0),但这会覆盖整个translate3d()设置,而不仅仅是X。

您有什么想法吗?

1个回答

0

我找到了我代码中的错误。Bootstrap使用Popper调用许多CSS修改器,以确保GUI看起来很好。在我的情况下导致翻译问题的修改器是preventOverflow。我认为您应该确保您的bodyhtml元素(甚至其他父元素)都占据了所需的空间。

我将htmlbody的高度设置为100%,在移动屏幕上,它只占据视口的100%,而不是页面的实际高度,因此Popper.js认为我造成了溢出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接