【问题标题】:2 blocks the same height in different parent columns [duplicate]2个块在不同的父列中具有相同的高度[重复]
【发布时间】:2018-05-11 03:39:42
【问题描述】:

我正在尝试创建一个并排有 2 列的布局。 1 包含背景图像上的文本,另一个包含顶部的宽图像和下面的文本块。这是模型中的一个快速草图(不确定链接到任何图像的最佳方式):

所以,我遇到的问题是,如何将左列文本与右侧的文本对齐?显然它们在 2 个单独的 div 中,因此彼此之间并没有太多的联系。所以这是个棘手的问题。

这是一个 CodePen: https://codepen.io/moy/pen/wPEdjo

所以我使用flexbox 来设置 div,使它们具有相同的高度,我不确定这是否是最好的方法?目前文本是垂直居中的。我考虑过将文本与底部对齐,但那也行不通,因为文本应该居中以彼此内联,就像草图一样。

我唯一能想到的就是添加一个与左侧图像具有相同纵横比的间隔图像。但是再一次,文本可能不会按照我需要的方式居中?我想我可以使用:before 元素代替分隔符来获得与百分比高度/宽度相同的效果。

所以基本上我被卡住了!有任何想法吗? flexbox 是最好/唯一的解决方案吗?

【问题讨论】:

  • 是的,我认为 before 元素可以解决问题
  • 由于它们(2个文本元素)不能互相看到,你要么需要模仿图像,要么使用脚本......无论是否使用 Flexbox,这都是必需的
  • 是的,我就是这么想的,它们没有任何关系,所以如果没有 JS 什么的,它们是不可能匹配的。我曾想过将 2 个(底部)文本容器排成一行,并将图像 + 空白空间放在一个单独的行中,但这会使完全出血的左侧图像变得尴尬。当然是一个棘手的问题!
  • 您已经使用了标签jquery 或者这里是一个简单的解决方案。 matchHeight 插件github.com/liabru/jquery-match-height 我不是告诉你它是最好的解决方案,但它很简单
  • 当您将其标记为jQuery 时,在骗子的回答中,您会发现它与 CSS 一起工作所需的内容和 2 个脚本解决方案。此外,通过一个小的标记更改,您可以使您的示例与 Flexbox 一起工作:codepen.io/anon/pen/WXgaVE

标签: jquery html css flexbox


【解决方案1】:

我的方法如下,使用纯 css,使用 flexbox。显然,确切的实现取决于几件事,例如您将如何显示图像(例如<img> 标签或background),但这只是为了分享主要思想。

/* basic reset */
* {
    box-sizing: border-box;
}
body {
    position: relative;
    margin: 0;
    padding: 0;
}

/* layout */
#background {
    position: absolute;
    width: 50%;
    height: 100%;
    background-color: LightGrey;
    z-index: -1;
}
#content {
    display: flex;
    flex-direction: column;
}

.row {
    flex: 1;
    display: flex;
}

.col {
    flex: 0 0 50%;
    padding: 50px;
}

#wide-image {
    overflow: hidden;
    padding: 0;
    background-color: GhostWhite;
}
<div id="background"></div>

<div id="content">
    <div class="row">
        <div class="col"></div>
        <div id="wide-image" class="col">
            <img src="http://via.placeholder.com/720x318" />
        </div>
    </div>

    <div class="row">
        <div class="col">
            <h1>Some text here</h1>
            <p>Lorem ipsum dolor sit amet</p>
        </div>
        <div class="col">
            <p>Lorem ipsum dolor sit amet</p>
            <p>Lorem ipsum dolor sit amet</p>
            <p>Lorem ipsum dolor sit amet</p>
            <p>Lorem ipsum dolor sit amet</p>
        </div>
    </div>
</div>

【讨论】:

    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2018-04-15
    • 2018-10-02
    • 2021-04-30
    • 2020-08-05
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多