【问题标题】:Balancing the height of an element in two different containers using CSS使用 CSS 平衡两个不同容器中元素的高度
【发布时间】:2013-08-31 09:44:08
【问题描述】:

我有几个连续的节元素,每个节元素都包含一个标题标签。是否可以仅使用 CSS 强制浏览器以完全相同的高度呈现这些标题标签(使浏览器使用最大的计算值而不实际指定确切的值)。下面的代码片段应该让您更清楚地了解我所拥有的内容以及我希望浏览器使用最大计算的高度值呈现哪些部分。

<section>
   <h2>Heading One</h2>
   <img src = ''>
   <p>Some Text</p>
</section>
<section>
   <h2>Heading Two</h2>
   <img src = ''>
   <p>Some Text</p>
</section>
<section>
   <h2>Heading Three</h2>
   <img src = ''>
   <p>Some Text</p>
</section>

由于此结构中的某些标题可能包含跨越几行的文本,从而导致标题的高度不同,我想知道一个使用 CSS 的解决方案,如果存在的话,它可以强制浏览器使用所有三个标签的三个标题标签的最大高度值。

注意事项:

  1. 此方案中的所有三个部分都将在水平方向上并排放置,这需要平衡主要标题元素的高度。
  2. 不允许使用 Javascript。
  3. 虽然标题元素可以从节元素中取出,但我想保留语义。

基于上述,如果可以找到解决方案,我将非常感谢您的意见。

【问题讨论】:

  • 老实说,我不这么认为。您可能应该使用 JavaScript 来实现这一点。
  • 这可能不是理想的解决方案,但你能把sectionheight分成一个百分比值吗?
  • 仅靠 CSS 是无法做到的。 CSS 不能扫描整个页面,然后计算高度值,然后相应地重新绘制页面。 JavaScript/jQuery 是要走的路。简短的回答是:不!
  • 谢谢你们。我有一种感觉,我在 CSS 上遇到了死胡同,但我只是想从那些每天使用该语言的人那里得到反馈。再次感谢。

标签: html css semantics semantic-markup


【解决方案1】:

我今天早上确实发了一篇关于这个问题的帖子,请看:Set height of 3 elements, taking largest value, across multiple rows

我认为不使用 javascript/JQuery 是不可能的

使用 JQuery:

var $sections = $('section');

$sections.filter(':nth-child(3n-2)').each(function () {
    var $this = $(this),
        $els = $this.nextAll(':lt(2)').addBack();

    var sectionheight = new Array();
    $els.each(function () {
        var value = $(this).height();
        sectionheight.push(value);
    });
    var newsectionheight = Math.max.apply(Math, sectionheight);
    $els.height(newsectionheight);
})

Arun P Johny 的小提琴:http://jsfiddle.net/arunpjohny/6JqB2/

【讨论】:

  • 感谢 Simon 的回复,但我很想知道是否可以在不使用 JavaScript 的情况下实现所需的结果。不过,感谢您抽出宝贵时间。
  • 没问题,抱歉没能提供更多帮助
猜你喜欢
  • 2012-07-16
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
相关资源
最近更新 更多