【问题标题】:Image inside div that pushes content + content the same height of the image (with CSS Flexbox)div内的图像将内容+内容推送到图像的相同高度(使用CSS Flexbox)
【发布时间】:2016-05-22 21:56:21
【问题描述】:

我目前正在尝试为基于 wordpress 的网站制作(而不是开发...)模板。

我有一个文章页面,其中有一个position: fixed 页眉/菜单、一个position: fixed 图片、一些必须出现在图片之后的内容,以及一个动态页脚。

为了获得动态页脚,我在页面上使用了flexbox

我打算做的如下:

图像没有固定大小。它适合宽度的屏幕。

heights 可能不等于屏幕的height

如果小于屏幕的height,没关系。但是如果它更长,那么如果图像周围的 div 有一个 overflow: hidden 会很好(直到知道它不起作用,可能是因为 flexbox)。

内容出现在图片(position: fixed)之后,因此用户可以向下滚动,内容会覆盖图片。

但有时内容的height 比图像的height 小,所以我需要将内容设置为min-heigh: window's height - footer's height,这是我用Javascript 完成的。

但由于图像的高度被内容 div 推高(图像要高得多),因此效果不佳。实际上,内容的底部就像固定在底部一样,而 div 的顶部阻止了图像的增长。

我可能不清楚(抱歉,英语不是我的主要语言),请随时提问。

我在线更新了我的模板,以便您可以看到当前版本:http://extatic.net

【问题讨论】:

  • 我创建了一个 JSFiddle 让您查看/修改。 JSFiddle

标签: jquery css image height flexbox


【解决方案1】:

我会使用 flexbox 选择 Paulie_D 的答案。

如果你想用 JS 来做,你需要在你的代码中设置高度,像这样:(CSS 仅用于演示)

$(function() {
  var h = $(window).innerHeight(),
    f = $('footer').innerHeight();

  $('main').height(h - f);
});

完整演示:https://jsfiddle.net/397d92g0/

【讨论】:

  • 谢谢流浪者,这几乎是我所需要的!最后要考虑的是我需要为最小高度设置值。我试图重写你的一些代码,但是 minHeight 参数不起作用(可能是因为 flexbox?)var h = $(window).height(); var f = $('footer').height(); var r = (h - f); $('#postContent').css('min-height', r +'px'); 但是现在,内容并没有完全被图像向下推。内容 div 的末尾位于屏幕底部,防止图像完全显示。我更新了网站,你可以看到。
  • 似乎对我有用:fiddle。你能发布一个你的 CSS 的小提琴,这样我们就可以看到冲突是什么?
  • 抱歉耽搁了,我的第一个JSFiddle(youhou):JSFiddle
【解决方案2】:

您不需要 javascript。 Flexbox 可以原生地做到这一点。

html,
body {
  height: 100%;
}
body {
  min-height: 100%;
  display: flex;
  flex-direction: column;
  margin: 0;
}
main {
  flex: 1;
  background: plum;
}
footer {
  height: 75px;
  background: #f00;
}
<main></main>
<footer></footer>

【讨论】:

  • 您好 Paulie,感谢您的回复。我已经在使用 flexbox,这不是这里关心的问题。我有一个position: fixed 图像和一个在该图像上滚动的内容。我想将内容的高度设置为至少图像的高度,这样它就会被可滚动的内容完全覆盖。您可以在这里看到问题:blog 只需向下滚动:带有粉红色文本的白色 div 必须至少是背景图像的高度(此处未绘制)。
  • 那么您需要在问题中阐明要求及其原因/代码。
【解决方案3】:

可能是这样的:

var height = $("#footerID").height();// for height
var width = $("#footerId").width();// for width
var width = $("footer").width();

【讨论】:

  • 嗨,菲尼克斯,我只是在寻找高度。但正如我所提到的,我正在寻找一种使用非常 html 标记 &lt;footer&gt; 的方法。我发现了一些使用&lt;div&gt; 的脚本,它们可以工作。但是对于&lt;footer&gt;,我无法让事情正常进行,我也不知道为什么。谢谢。
  • 好的。我的错。 .height 之后我忘记了 () -- var f = $('footer').innerHeight(); 正在工作!感谢您的回答!
猜你喜欢
  • 2014-05-08
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 2018-01-30
  • 2019-03-24
  • 1970-01-01
相关资源
最近更新 更多