【问题标题】:Resizing an using CSS is not working调整使用 CSS 的大小不起作用
【发布时间】:2017-03-29 18:42:53
【问题描述】:

您好,我正在努力实现理想的外观:

How it should look

但是,当文本变长或调整屏幕大小时,可能会导致:

How it looks with more text

任何帮助都将不胜感激,因为我已经花了几个小时试图让它工作......响应很容易,因为它会出现在文本下方而不是并排显示,但桌面预览简直让我丧命!

HTML:

<div class="container-combo white">
        <div class="row-2col-equal-ignore image-combo">
                <div class="column">
                <div class="content">
                <h2>Located at the heart of our community to serve our community</h2>
                <img src="images/bkg-swirl.png" alt="swirl divider" class="swirl">
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
                <p>quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
                </div>
                </div>
                <div class="column">
                <img src="images/bedroom-combo.jpg" class="combo-img">
                </div>
        </div>
</div>

SCSS/CSS:

.image-combo {

.column {
margin-bottom: -5px;

    .content {
        margin: 0 auto;
        text-align: center;
        max-width: 705px;
        padding-top: 61px;
        padding: 61px 10px 10px;

        h2 {
            color: $dark-grey;
            font-size: 34px;
            font-family: $minion;
            line-height: 40px;
            font-weight: normal;
            text-transform: none;
            padding-bottom: 32px;
        }

        p {
            font-size: 15px;
            line-height: 24px;
            text-align: left;
            padding-bottom: 32px;
        }

        .swirl {
            float: none;
            max-width: 456px;
            width: 100%;
            min-width: 1px;
        }
    }

    .flip {
        padding-right: 120px;
        padding-left: 40px;
    }

    .combo-img {
        width: 100%;
        min-height: 426px;
        height: 100%;
    }
}

【问题讨论】:

  • 如果您想保持图像比例,没有简单的解决方案来解决将文本与图像并排的问题并涵盖所有可能的情况。如果它占用的空间超过预期,则在图像下方放置文本是一种选择吗?如果是这样,您必须将图像向右浮动。
  • 我之前的回答可能重复:stackoverflow.com/questions/42993595/…
  • 我会将其设置为设置为cover 的背景图像,然后在响应开始时将这些元素折叠到彼此下方的位置恢复为标准img
  • 在查看了建议并尝试了一些事情之后,我已经达到了以下...最初链接的示例图像需要能够更改为许多不同的图像,因此作为一个更容易img 标签而不是背景。这就是说我正在考虑使用较早的断点来交换文本下的图像以避免间隙会是一种更容易和可能更正确的方法来实现这一点?
  • 我无法想象这会更容易 - 但公平地说,我不知道您的预期方法,所以也许在您的用例中是这样。在我看来,简单地更新 background-image 属性应该比通过 javascript 或挂钩到 @media queries 的样式切换嵌入的 img 标签要容易得多,因此在页面中插入多个图像标签会增加加载时间和服务器请求,并且可能会不必要地膨胀代码。不管怎样,希望你能找到合适的解决方案。

标签: javascript jquery html css sass


【解决方案1】:

如果您像这样使用background-imagebackground-size: cover,它将起作用

.image-combo {
  display: flex;
}

.column {
  margin-bottom: -5px;
}

.content {
  margin: 0 auto;
  text-align: center;
  max-width: 705px;
  padding-top: 61px;
  padding: 61px 10px 10px;
}

h2 {
  color: $dark-grey;
  font-size: 34px;
  font-family: $minion;
  line-height: 40px;
  font-weight: normal;
  text-transform: none;
  padding-bottom: 32px;
}

p {
  font-size: 15px;
  line-height: 24px;
  text-align: left;
  padding-bottom: 32px;
}

.swirl {
  float: none;
  max-width: 456px;
  width: 100%;
  min-width: 1px;
}

.flip {
  padding-right: 120px;
  padding-left: 40px;
}
.column {
  flex: 1;
  width: 50%;
}
.column.img {
  background-image: url(http://lorempixel.com/500/500/people/10/);
  background-size: cover;
}
<div class="container-combo white">
  <div class="row-2col-equal-ignore image-combo">
    <div class="column">
      <div class="content">
        <h2>Located at the heart of our community to serve our community</h2>
        <img src="http://placehold.it/200x20" alt="swirl divider" class="swirl">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
          dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
        <p>quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
      </div>
    </div>
    <div class="column img">
    </div>
  </div>
</div>

【讨论】:

  • 虽然这可行,但浮动现在没有影响,因此我无法在不更改 HTML 的情况下更改图像的位置。然而,它以一种固定的方式在 HTML 中编码,因此在移动设备上,图像位于文本下方。
  • @DanielVickers 您可以从我的答案中删除flexbox 代码。我只用它来使文​​本/图像并排放置。我的代码展示了它是如何完成的,您只需要确保右列高度等于左列高度。这可能很棘手,您可能希望将其全部更改为 flexbox。使用完整代码发布指向小提琴(或 codepen)的链接,我会看看
  • 我通过在图像中添加宽度:自动和最大高度来回答这个问题。然后我将溢出隐藏添加到容器中,并将使用 srcset 来选择图像的一部分。我已经接受了您的回答,因为如果您不需要浮动对象,这是这样做的方法。
猜你喜欢
  • 2018-05-30
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-03
  • 2021-10-25
  • 2014-04-28
相关资源
最近更新 更多