【问题标题】:CSS take height of absolutely positioned childCSS采用绝对定位子的高度
【发布时间】:2011-10-16 10:32:24
【问题描述】:

我有一个设置为max-width:780px 的容器,并且高度未声明。在容器内,有一个图像幻灯片。页面上的所有内容都是响应式的,因此当宽度减小时,图像(宽度设置为 100%)会调整高度容器。

幻灯片将图像更改为 display:static;position:absolute;,它们不再“保持打开”容器,因为它不被视为容器的内容

是否有任何创造性的解决方案来获取绝对定位的子元素的高度?

下面的示例在主容器上没有声明任何高度.. 没有任何东西让它保持打开状态。 http://dhut.ch/test/santos/

谢谢!

【问题讨论】:

标签: css image fluid responsive-design


【解决方案1】:

删除绝对位置。我也会避免使用内联样式。

【讨论】:

  • 我听到你的声音了,这让我很头疼。内联样式是由 jquery 幻灯片生成的,所以没有办法避免。
【解决方案2】:

我认为你最好改变你的方法。对于滑块,最好的做法是浮动容器的子元素,并使用一种已知的技术来防止父元素的大崩溃。所以,我建议你从图像中删除position: absolute CSS 规则并将它们浮动到你的<div id='main'> 中,然后使用这些方法中的任何一种来强制它包含它的孩子:

  1. div#main {overflow: hidden;}
  2. div#main:after {content: ''; display: block; clear: both; visibility: hidden;}
  3. <div style='clear: both;'> 添加到主 div 容器的末尾。

【讨论】:

  • Naemati - 我很想将它们漂浮起来......但要让它们逐渐淡入另一个,它们需要绝对放置在彼此之上。
【解决方案3】:

图片的尺寸都是一样的吗?如果是,您可以在包含图像的元素上使用百分比padding-top

因此,如果您的图片都是 760 像素宽 x 500 像素高,那就是 500/760 = .65789

百分比将转化为:

#main { 
    position: relative; 
    max-width: 760px;
    padding-top: 65.789%;  
}

之所以有效,是因为padding 如果设置了百分比,则计算为宽度的百分比。随着元素的宽度缩小,高度将按比例缩小,并且盒子将保持相同的宽高比。绝对定位的图像不会增加框的高度。

只要您的图片都具有相同的宽高比并且您不希望该比例发生变化,这将起作用。如果您将使用大量随机图像,那么这不适合您。

【讨论】:

  • 太棒了,真是个好主意!谢谢!
【解决方案4】:

我最近遇到了一个类似的图像问题,我需要将其绝对定位在 Zurb Foundation 模板页面的顶部,以便将其拉出流程并重置其尺寸(图像必须拉伸到包装器的边缘,而是由其父 .row 填充包围)。然而,当然,这意味着它下方的所有流体响应元素都会在图像顶部弹出。设置 margin-top 或将同级元素定位在下方意味着不会随着浏览器宽度调整大小的刚性顶部空间。

为了解决这个问题,我在绝对定位图像之后放置了图像的副本并设置了它的visibility: hidden; 我不得不添加一点额外的边距底部以弥补高度的差异,但最后结果是页面上的所有内容都精确地流动到正在使用的图像的高度。

我还使用了上面 unexplainedBacn 描述的填充技巧,这也是一个很棒的技巧。这需要一点数学,但我投票赞成这个答案。很好的解决方案。

【讨论】:

  • +1 表示将复制的图像放在绝对定位的图像之后。一直在寻找这个容器高度的工作,绝对定位的元素有一段时间了,这很奏效!谢谢
  • 正是我正在寻找的解决方案!
  • @GraySpectrum 真的吗?我认为 unexplainedBacn 的解决方案比我的要好——一定要尝试 padding-top 解决方案,因为它在页面中写入的 html 更少,而且非常优雅。并按比例调整大小。
  • 在我的情况下,绝对定位图像的纵横比从一个断点到另一个断点是流动的,因此顶部填充的固定百分比并没有削减它。通过在主容器中放置一个相同的图像,将其可见性设置为隐藏,然后将其纵横比设置为与可见的、绝对定位的图像完全相同的扩展和收缩,我的容器现在在可见图像周围保持干净的 1px 边框正是我需要的。我可能需要为带宽中的额外图像付费(不确定将 vis 设置为隐藏),但获得我正在寻找的效果是值得的。
猜你喜欢
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多