100%宽度导致div在容器中溢出屏幕

7

我在使用Bootstrap时遇到了一些问题,无法将我的div与容器对齐。

我想要的效果是让div在容器内部完全展开。

它可以在容器的左侧正常工作,但右侧却不能。它会超出屏幕范围。

HTML代码:

<!-- Image With Action Section -->
    <section class="special_section">
        <div class="container-fluid" style="max-height: 25%">
            <div class="row">
                <div class="col-sm-12">
                    <div class="caption-2">
                        <img src="background-image-url" class="img-full-width img-responsive" alt="" />
                        <div class="container">
                            <div class="action-footer">
                                <div class="col-sm-10">
                                    <h4 class="caption-text">Title</h4>
                                </div>
                                <div class="col-sm-2">
                                    Link
                                </div>
                            </div>
                            <div class="caption">
                                <h4>Title</h4>
                                <p>Content</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

CSS:

.caption-2 .action-footer {
    margin: -1px 0 0 0;
    padding: 10px;
    font-size: 15px;
}
@media (min-width:500px) {
    .caption-2 .action-footer {
        margin:0;
        position: absolute;
        bottom: 0;
        height: 10%;
        width: 100%;
    }
}

.action-footer .col-md-12 {
    margin-top: -10px;
}

.action-footer div是我需要在父容器内100%宽度的元素。但实际上它得到了太多的宽度。

3个回答

13

您需要应用CSS属性 box-sizing: border-box;

.action-footer {
    box-sizing: border-box;
}

Bootstrap会自动将其应用于所有元素。很遗憾,那样做不起作用。 - Chris
这是我的问题。我将此样式应用于所有元素,我的元素不再使用 width: 100% 超出页面。我想知道为什么会出现这种情况... - dimiguel

3
你的主要问题实际上在这里:
@media (min-width:500px) {
    .caption-2 .action-footer {
        margin:0;
        position: absolute;
        bottom: 0;
        height: 10%;
        width: 100%;
    }
}

将其更改为:position: relative;。考虑到您正在为移动设备构建此内容,这应该能够胜任。每当使用container-fluid时,大多数元素都具有relative位置,以便它们可以重新对齐屏幕宽度。

没错,这实际上使它成为了正确的宽度,现在唯一的问题是div移动到了图像下方而不是覆盖在上面,但这是正确的解决方案。谢谢! - Chris
@Chris 我认为这是一个全新的问题。尝试重新排列你的代码或使用 z-index 来定位一个元素在另一个元素之上。 - ZombieChowder

0

只需交换containeraction-footer的顺序即可获得所需的结果,同时将action-footerleft:0px添加到代码中,以便它始终从页面左侧开始。

@media (min-width:500px) {
  .caption-2 .action-footer {
    margin: 0;
    position: absolute;
    bottom: 0;
    height: 10%;
    width: 100%;
    left:0px;
  }
}

这是可用的代码:

.caption-2 .action-footer {
  margin: -1px 0 0 0;
  padding: 10px;
  font-size: 15px;
}

@media (min-width:500px) {
  .caption-2 .action-footer {
    margin: 0;
    position: absolute;
    bottom: 0;
    height: 10%;
    width: 100%;
    left:0px;
  }
}

.action-footer .col-md-12 {
  margin-top: -10px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="special_section">
  <div class="container-fluid" style="max-height: 25%">
    <div class="row">
      <div class="col-sm-12">
        <div class="caption-2">
          <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" class="img-full-width img-responsive" alt="" />
          <div class="action-footer">
            <div class="container">
              <div class="col-sm-10">
                <h4 class="caption-text">Title</h4>
              </div>
              <div class="col-sm-2">
                Link
              </div>
            </div>
            <div class="container">
            <div class="caption">
              <h4>Title</h4>
              <p>Content</p>
            </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>


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