我想将图像与 div 的 底部 对齐,并且还想让 水平居中。

这就是我想要完成的(下图),但在我的元素中,牛下方有一个巨大的缺口。牛的图片被切成两半,所以我希望底部在响应时粘在视口(viewport)的底部。

html - 如何在div的底部中心对齐图像-LMLPHP

HTML:

<div class="main">
    <div class="container">

        <div class="nav">
            <ul>
                <li><a href="index.html" >Work</a></li>
                <li><a href="about.html">About</a></li>
                <li><a href="contact.html">Contact</a></li>
            </ul>
        </div>

        <div class="main_text">
            <h1>Awh Cow! I got no <span class="yellow">Dribbble</span>.</h1>
            <p>Invite me to Dribbble maybe? Thanks.</p>
        </div>

        <a href="mailto:[email protected]" class="button">Visit Profile</a>

        <div class="cow"></div>

    </div> <!-- end container -->
</div> <!-- end main -->

CSS:
.cow {
    height: 280px; /* Change this height to change the size of the cow */
    background: url(../images/cow.png) bottom center no-repeat;
    background-size: contain;
}

最佳答案

为了使 .main 具有 100% 的高度,您需要确保为包含块计算了高度值。

一种方法是将 height: 100% 分配给 htmlbody 标签。

.cow 块元素定位在 .main 底部的一种简单方法是使用绝对定位。首先,将 position: relative 设置为 .main 以设置定位 .cow 的引用点。

position: absolute 应用于 .cow 并设置底部偏移量 bottom: 0 ,这将使 .cow 的底部边缘与 .main 的底部边缘对齐。默认情况下,绝对定位将提供缩小以适应宽度,因此设置 left: 0right: 0 以使 .cow 具有 .main 的全宽。由于添加到 .container 的任何填充或边距,这也会处理任何额外的宽度。

您可能希望为 .main 分配一个最小高度,以便为文本、按钮和图像留出足够的空间。如果您足够缩小页面,绝对定位元素可能会与您的文本重叠。

html,
body {
  height: 100%;
  margin: 0;
}
.main {
  height: 100%;
  border: 1px dotted blue;
  position: relative;
  min-height: 500px;
}
.container {
  height: 100%;
  padding: 0 20px;
}
.main_text {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.main_text h1 {
  padding-top: 10%;
  margin-top: 0px;
  font-weight: 400;
  font-size: 45px;
  margin-bottom: 0px;
}
.main_text p {
  width: 70%;
  font-size: 18px;
  font-weight: 400;
  line-height: 24px;
  margin-top: 25px;
  margin-bottom: 50px;
}
.buttons {
  display: flex;
  justify-content: center;
}
.button {
  text-align: center;
  margin: 0px 30px;
  color: #000;
  text-decoration: none;
  border: 3px solid #000;
  border-radius: 50px;
  padding: 10px 80px;
  transition: 0.3s background;
  font-size: 15px;
}
.button:hover {
  color: #fff;
  background: #000;
  transition: 0.3s background;
}
.cow {
  display: flex;
  justify-content: center;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
}
.cow img {
  align-self: flex-end;
}
<div class="main">
  <div class="container">

    <div class="main_text">
      <h1>Awh Cow! I got no <span class="yellow">Dribbble</span>.</h1>
      <p>Invite me to Dribbble maybe? Thanks.</p>
    </div>

    <div class="buttons">
      <a href="mailto:[email protected]" class="button">Visit Profile</a>
    </div>

    <div class="cow">
      <img src="http://placehold.it/300x150">
    </div>

  </div>
</div>


注意: 浏览器对 flex 的支持在某些浏览器中仍然存在问题并且不向后兼容,请参阅 http://caniuse.com/#feat=flexbox 。如果您只需要内联或内联块元素的水平居中,那么 text-align: center 就足够了。

关于html - 如何在div的底部中心对齐图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34265302/

10-15 08:54