首页 > 解决方案 > 溢出的意外行为

问题描述


代码很多,但是问题的关键很简单。当 table 的容器有`overflow-x: visible; 溢出-y:可见;`,我的弹出框工作正常。但是当表的容器有`overflow-x: auto; 溢出-y:可见;`,容器裁剪我的弹出框。我认为当我有溢出-y 可见时,容器不应该裁剪我的 Y-accis 内容。但确实如此。而且我不知道为什么以及该怎么做。

这里有小示范

.Popover {
    display: inline-block;
    position: relative;
    cursor: help;
}

.Popover__children * {
    cursor: help;
}

.Popover__actually {
    position: absolute;
    background-color: #fff;
    padding: 16px;
    border-radius: 2px;
    color: #333;
    max-width: 260px;
    width: max-content;
    font-size: 13px;
    word-break: break-all;
    white-space: pre-wrap;
    box-shadow: 0 2px 30px rgb(0 0 0 / 20%);
}
.Popover__actually::after {
    content: '';
    position: absolute;
}

.Popover__actually--above {
    bottom: calc(100% + 12px);
    left: 50%;
    transform: translateX(-50%);
}
.Popover__actually--above::after {
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-left: 12px solid transparent;
    border-right: 12px solid transparent;
    border-top: 12px solid #fff;
}

.Popover__actually--below {
    top: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%);
}
.Popover__actually--below::after {
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border-left: 12px solid transparent;
    border-right: 12px solid transparent;
    border-bottom: 12px solid #fff;
}

.Popover__actually--left {
    top: 50%;
    transform: translateY(-50%);
    right: calc(100% + 12px);
}
.Popover__actually--left::after {
    top: 50%;
    left: 100%;
    transform: translateY(-50%);
    border-top: 12px solid transparent;
    border-left: 12px solid #fff;
    border-bottom: 12px solid transparent;
}

.Popover__actually--right {
    top: 50%;
    transform: translateY(-50%);
    left: calc(100% + 12px);
}
.Popover__actually--right::after {
    top: 50%;
    right: 100%;
    transform: translateY(-50%);
    border-top: 12px solid transparent;
    border-right: 12px solid #fff;
    border-bottom: 12px solid transparent;
}

.Popover__title {
    font-size: 12px;
    font-weight: 500;
    margin: 0 0 15px;
    text-transform: uppercase;
}

.Popover__body {
    color: #5E5E5E;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>My awesome document</title>
</head>

<body>
  <h2>Table with overflow-x: auto and overflow-y: visible;</h2>
  <div class="row">
    <div class="col-xs-12 col-md-12">
      <div class="card-body card-padding">
        <div class="table-responsive" style="overflow-x: auto;overflow-y: visible;">
          <table id="data-table-basic" class="table table-condensed dataTable" role="grid">
            <thead>
              <tr role="row" class="not-selected">
                <th class="cursor-pointer custom_sorting " style="padding-left: 0px; width: 7%;">Domain<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 7%;">Complaince<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 4%;">SPF Complaince<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 4%;">DKIM Complaince<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 7%;">Authorized<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 4%;">DMARC<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 4%;">SPF<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 10%;">Volume<span class="sorting_arrows"></span></th>
              </tr>
            </thead>
            <tbody style="overflow: visible;">
              <tr>
                <td style="padding-left: 0px;">
                  <div style="display: flex;">
                    <span class="m-t-5">ipsum.lorem</span>
                  </div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-green">100%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-green">99.95%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-orange">68.38%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><label class="label text-capitalize bgm-green-new"><i class="zmdi zmdi-check"></i></label></div>
                </td>
                <td>
                  <div class="p-l-10">
                    <div class="Popover "><span class="Popover__children"><label class="label text-capitalize bgm-green-new">OK</label></span></div>
                  </div>
                </td>
                <td>
                  <div class="p-l-10">
                    <div class="Popover "><span class="Popover__children"><label class="label text-capitalize bgm-green-new">OK</label></span></div>
                  </div>
                </td>
                <td>
                  <div class="p-l-10">15754</div>
                </td>
              </tr>
              <tr>
                <td style="padding-left: 0px;">
                  <div style="display: flex;">
                    <span class="m-t-5">lorem.ipsum</span>
                  </div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-orange">38.71%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-orange">38.25%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-orange">39.89%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><label class="label text-capitalize bgm-green-new"><i class="zmdi zmdi-check"></i></label></div>
                </td>
                <td>
                  <div class="p-l-10">
                    <div class="Popover "><span class="Popover__children"><label class="label text-capitalize bgm-green-new">OK</label></span></div>
                  </div>
                </td>
                <td>
                  <div class="p-l-10">
                    <div class="Popover ">
                      <div class="Popover__actually Popover__actually--above appears">
                        <h6 class="Popover__title">SPF record</h6>
                        <span class="Popover__body">v=spf1 lorem ipsum sit dolor</span>
                      </div>
                      <span class="Popover__children"><label class="label text-capitalize bgm-green-new">OK</label></span>
                    </div>
                  </div>
                </td>
                <td>
                  <div class="p-l-10">8249</div>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </div>
  </div>

  <hr style="height: 100px; opacity: 0">
  <h2>Table with overflow-x: visible and overflow-y: visible;</h2>
  <hr style="height: 100px; opacity: 0">
  
  <div class="row">
    <div class="col-xs-12 col-md-12">
      <div class="card-body card-padding">
        <div class="table-responsive" style="overflow-x: visible;overflow-y: visible;">
          <table id="data-table-basic" class="table table-condensed dataTable" role="grid">
            <thead>
              <tr role="row" class="not-selected">
                <th class="cursor-pointer custom_sorting " style="padding-left: 0px; width: 7%;">Domain<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 7%;">Complaince<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 4%;">SPF Complaince<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 4%;">DKIM Complaince<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 7%;">Authorized<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 4%;">DMARC<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 4%;">SPF<span class="sorting_arrows"></span></th>
                <th class="cursor-pointer custom_sorting " style="width: 10%;">Volume<span class="sorting_arrows"></span></th>
              </tr>
            </thead>
            <tbody style="overflow: visible;">
              <tr>
                <td style="padding-left: 0px;">
                  <div style="display: flex;">
                    <span class="m-t-5">ipsum.lorem</span>
                  </div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-green">100%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-green">99.95%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-orange">68.38%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><label class="label text-capitalize bgm-green-new"><i class="zmdi zmdi-check"></i></label></div>
                </td>
                <td>
                  <div class="p-l-10">
                    <div class="Popover "><span class="Popover__children"><label class="label text-capitalize bgm-green-new">OK</label></span></div>
                  </div>
                </td>
                <td>
                  <div class="p-l-10">
                    <div class="Popover "><span class="Popover__children"><label class="label text-capitalize bgm-green-new">OK</label></span></div>
                  </div>
                </td>
                <td>
                  <div class="p-l-10">15754</div>
                </td>
              </tr>
              <tr>
                <td style="padding-left: 0px;">
                  <div style="display: flex;">
                    <span class="m-t-5">lorem.ipsum</span>
                  </div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-orange">38.71%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-orange">38.25%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><span class="c-orange">39.89%</span></div>
                </td>
                <td>
                  <div class="p-l-10"><label class="label text-capitalize bgm-green-new"><i class="zmdi zmdi-check"></i></label></div>
                </td>
                <td>
                  <div class="p-l-10">
                    <div class="Popover "><span class="Popover__children"><label class="label text-capitalize bgm-green-new">OK</label></span></div>
                  </div>
                </td>
                <td>
                  <div class="p-l-10">
                    <div class="Popover ">
                      <div class="Popover__actually Popover__actually--above appears">
                        <h6 class="Popover__title">SPF record</h6>
                        <span class="Popover__body">v=spf1 lorem ipsum sit dolor</span>
                      </div>
                      <span class="Popover__children"><label class="label text-capitalize bgm-green-new">OK</label></span>
                    </div>
                  </div>
                </td>
                <td>
                  <div class="p-l-10">8249</div>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </div>
  </div>
</body>

</html>

谁知道如何解决这个问题?(我需要我的表格在小屏幕上自动滚动,我需要我的弹出框看起来不错)

标签: htmlcssoverflow

解决方案


推荐阅读