首页 > 解决方案 > 将文本框放置在图像上

问题描述

我需要制作一个如下图所示的横幅,并且可以对齐右侧的框:

在此处输入图像描述

我到目前为止所做的演示示例可以在这里看到

我试图尽我所能,但我的知识显然到此为止。我无法使带有文本的覆盖框在左侧对齐 - 仅在底部。那么如何使文本覆盖框在左侧和右侧对齐。

当 viewport 为< 768px时,banner 会变成 Bootstrap 卡片。我希望保持这种状态。

我已经删除了很多与问题无关的 HTML,但留下了我所有的 CSS,所以这些建议不会覆盖任何现有的 CSS。Bootstrap 版本是 3.3.7:

  /* Card and Button */
body {
  background-color: #f5f5f5;
}
div {
  background-color: #fff;
}
.index-content a:hover {
  color: black;
  text-decoration: none;
}
.index-content .row {
  margin-top: 20px;
}
.index-content a {
  color: black;
}
.index-content .card {
  background-color: #FFFFFF;
  padding: 0;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
}
.index-content .card:hover {
  box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3);
  color: black;
}
.index-content .card img {
  width: 100%;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
  height: 350px;
}
.index-content .card h4 {
  margin: 20px;
}
.index-content .card p {
  margin: 20px;
  opacity: 0.65;
}
.index-content .blue-button {
  width: 100px;
  -webkit-transition: background-color 1s, color 1s;
  /* For Safari 3.1 to 6.0 */
  transition: background-color 0.5s, color 0.5s;
  min-height: 20px;
  background-color: #4CAF50;
  color: #ffffff;
  border-radius: 4px;
  text-align: center;
  font-weight: lighter;
  margin: 0px 20px 15px 20px;
  padding: 5px 0px;
  display: inline-block;
}
.index-content .blue-button:hover {
  background-color: #dadada;
  color: #002E5B;
}
/* Set width between block elements */
    .small-padding.top {
       padding-top:10px;
    }

    .small-padding.bottom {
        padding-bottom:10px;
    } 
    .small-padding.left {
        padding-left:5px;
    }

    .small-padding.right {
        padding-right:5px;
    }

    .row [class*="col-"] {
      padding-left: 5px;
      padding-right: 5px;
    }

/* Set full width on columns */
@media (max-width: 768px) {
    .img-responsive {
    width: 100%;
    }
}

/* GRID ELEMENTS MEDIA QUERIES */
@media (min-width: 768px) {
  .card {
    position: relative;
  }
  .card-content {
    position: absolute;
    bottom: 0;
    width: 100%;
    background: rgba(0, 0, 0, 0.5);
  }
  .card-content h4,
  .card-content p {
    color: white;
    width: 100%;
    float: left;
    margin: 0 0 5px;
  }
  .card-content a {
    float: right;
  }
  .index-content .card h4,
  .index-content .card p {
    padding: 15px 20px;
    margin: 0;
  }
  .index-content .card p {
    padding: 0 20px 15px;
    margin: 0;
  }
}
.margin_bottom {
  margin-bottom: 10px;
}
.row [class*="col-"] {
  padding-right: 5px;
  padding-left: 5px;
}
.row {
  margin-left: -5px;
  margin-right: -5px;
}
.card-img-bottom {
  color: #fff;
  height: 20rem;
  background: url(images/img1.jpg) center no-repeat;
  background-size: cover;
}
.img-responsive { 
    height: 100%;
}
<!DOCTYPE html>
<html lang="en">
<head>
  <title>BMW TEMPLATE</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

</head>
<body>

<div class="container">
    <!-- Full width Banner -->
    <div class="row">
      <a href="#">
        <div class="col-md-12 small-padding top bottom">
            <div class="index-content">
                <div class="card">
                    <img src="http://placehold.it/1200x500"></img>
                    <div class="card-content">
                        <h4>BMW & Summer 2018</h4>
                        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
                        <a href="#" class="blue-button">Læs Mere</a>
                    </div>
                </div>
            </div>
        </div>
      </a>
    </div>
</div>
</body>
</html>

标签: htmlcsstwitter-bootstrap

解决方案


这是我的解决方案,以全屏模式打开代码段

将此添加到您的.card contentCSS

position: absolute;
right: 10px; /*change this to left for left alignment*/
width: 230px;
background: rgba(0, 0, 0, 0.5);
top: 10px;
bottom: 10px;

将此添加到您的媒体查询 ( @media (min-width: 768px) {) 以将按钮放置在底部

.blue-button {
    position: absolute;
    bottom: 15px;
    left: 50%;
    transform: translateX(-50%);
    display: block;
    margin: 0!important;
  }

/* Card and Button */

body {
  background-color: #f5f5f5;
}

div {
  background-color: #fff;
}

.index-content a:hover {
  color: black;
  text-decoration: none;
}

.index-content .row {
  margin-top: 20px;
}

.index-content a {
  color: black;
}

.index-content .card {
  background-color: #FFFFFF;
  padding: 0;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
}

.index-content .card:hover {
  box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3);
  color: black;
}

.index-content .card img {
  width: 100%;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
  height: 350px;
}

.index-content .card h4 {
  margin: 20px;
}

.index-content .card p {
  margin: 20px;
  opacity: 0.65;
}

.index-content .blue-button {
  width: 100px;
  -webkit-transition: background-color 1s, color 1s;
  /* For Safari 3.1 to 6.0 */
  transition: background-color 0.5s, color 0.5s;
  min-height: 20px;
  background-color: #4CAF50;
  color: #ffffff;
  border-radius: 4px;
  text-align: center;
  font-weight: lighter;
  margin: 0px 20px 15px 20px;
  padding: 5px 0px;
  display: inline-block;
}

.index-content .blue-button:hover {
  background-color: #dadada;
  color: #002E5B;
}


/* Set width between block elements */

.small-padding.top {
  padding-top: 10px;
}

.small-padding.bottom {
  padding-bottom: 10px;
}

.small-padding.left {
  padding-left: 5px;
}

.small-padding.right {
  padding-right: 5px;
}

.row [class*="col-"] {
  padding-left: 5px;
  padding-right: 5px;
}


/* Set full width on columns */

@media (max-width: 768px) {
  .img-responsive {
    width: 100%;
  }
}


/* GRID ELEMENTS MEDIA QUERIES */

@media (min-width: 768px) {
  .card {
    position: relative;
  }
  .card-content {
    position: absolute;
    right: 10px;
    width: 230px;
    background: rgba(0, 0, 0, 0.5);
    top: 10px;
    bottom: 10px;
  }
  .card-content h4,
  .card-content p {
    color: white;
    width: 100%;
    float: left;
    margin: 0 0 5px;
  }
  .card-content a {
    float: right;
  }
  .index-content .card h4,
  .index-content .card p {
    padding: 15px 20px;
    margin: 0;
  }
  .index-content .card p {
    padding: 0 20px 15px;
    margin: 0;
  }
  .blue-button {
    position: absolute;
    bottom: 15px;
    left: 50%;
    transform: translateX(-50%);
    display: block;
    margin: 0!important;
  }
}

.margin_bottom {
  margin-bottom: 10px;
}

.row [class*="col-"] {
  padding-right: 5px;
  padding-left: 5px;
}

.row {
  margin-left: -5px;
  margin-right: -5px;
}

.card-img-bottom {
  color: #fff;
  height: 20rem;
  background: url(images/img1.jpg) center no-repeat;
  background-size: cover;
}

.img-responsive {
  height: 100%;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <title>BMW TEMPLATE</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

</head>

<body>

  <div class="container">
    <!-- Full width Banner -->
    <div class="row">
      <a href="#">
        <div class="col-md-12 small-padding top bottom">
          <div class="index-content">
            <div class="card">
              <img src="http://placehold.it/1200x500"></img>
              <div class="card-content">
                <h4>BMW Summer 2018</h4>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
                <a href="#" class="blue-button">Læs Mere</a>
              </div>
            </div>
          </div>
        </div>
      </a>
    </div>
  </div>
</body>

</html>


推荐阅读