html - 将元素定位在 div 的底部(不是父元素)- Twitter Bootstrap v3

标签 html css twitter-bootstrap

我正在尝试将一个元素(按钮)定位在 div 的底部,请检查我的代码以准确理解我想要实现的目标:

<body>
    ...
    <div class="row">
        <div class='col-md-3>
            ...
        </div>
        <div class='col-md-4 narrow'>
            <div class='row'>
                <div class='col-md-4'>
                    ...
                </div>
                <div class='col-md-4'>
                    ...
                </div>
                <div class='col-md-4'>
                    ...
                </div>
            </div>
            <div class='row'>
                <div class='col-md-12'>
                    <a href="#">
                        <button>I'M THE ELEMENT!</button>
                    </a>
                </div>
            </div>
        </div>
        <div class='col-md-5'>
            ...
        </div>
    </div>
    ...
</body>

我无法设置 position:absolute,因为这破坏了我元素的视觉风格。

看我准备的这张图:

Layout

注意: 蓝色列的高度可变...因此我想将按钮放置在这些列的底部。我怎样才能做到这一点?

最佳答案

您有几个选项,但不幸的是,在 Bootstrap 框架的限制下,这两个选项都不可行。

选项 1:Flex-box

Flex-box旨在解决与此完全相同的问题,并且是 future 在 CSS 中创建布局的方式。

我已经使用 flex-box 实现了你的图像模型:

Live example.

这是我的例子中的代码:

<section class="main">
  <div class="left"></div>
  <div class="middle">
    <div class="middle-top-container">
      <div class="middle-top-column"></div>
      <div class="middle-top-column"></div>
      <div class="middle-top-column"></div>
    </div>
    <div class="middle-bottom-container">
      <button>I'm the element!</button>
    </div>
  </div>
  <div class="right"></div>
</section>

.main {
  display: flex;
  justify-content: space-between;
  height: 600px;
}

.main .left {
  flex-grow: 3;
  border: 2px solid #f00;
}

.main .middle {
  flex-grow: 4;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.main .middle .middle-top-container {
  flex-grow: 1;
  display: flex;
  justify-content: space-between;
}

.main .middle .middle-top-container .middle-top-column {
  border: 2px solid #00f;
  flex-grow: 4;
}

.main .middle .middle-bottom-container {
  border: 2px solid gold;
  text-align: center;
}

.main .right {
  flex-grow: 5;
  border: 2px solid #0f0;
}

(请注意,您需要为 flex 相关属性添加适当的 vendor prefixes 以获得最佳浏览器支持,但我的实现按原样在 Chrome 中运行。)

这对您意味着什么:对于页面的这一部分,您需要删除 Bootstrap 布局类并使用类似于我的实现(当然您可以根据需要对页面的其他部分使用 Bootstrap 布局) .

More information about flex-box with visual examples.

选项 2:定位上下文

可以使用 position: absolute; ,但同样,您将不得不在页面的这一部分使用 Bootstrap 布局类。它需要设置 position: relative;在包含元素上,包裹最外层三列布局中心的元素(对应于我实现中的 <div class="middle">...</div>)以建立定位上下文,然后使用 position: absolute; right: 0; bottom: 0; left: 0;在包含您的按钮的元素上。

请注意,根据我的观点和经验, flex 盒方法不那么脆弱,更面向 future ,并且比这个选项更可取。

关于html - 将元素定位在 div 的底部(不是父元素)- Twitter Bootstrap v3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29134922/

相关文章:

css - VB.Net 查找埋在 DOM 中时要单击的类 ID

jQuery 放大镜不在图像之外

javascript - 如何在wysihtml5中设置文本框宽度

javascript - 自动重新加载div容器

html - 使用 SimpleForm 在 Dropdown 中有多个选项

javascript - Canvas - 淡出速度?

html - 使用 Bootstrap 流下表

html - 使一个 div 环绕另一个 div

javascript - 防止粘性表单输入的位置变化

html - 链接按钮和 Bootstrap 字形样式问题