首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保持绝对定位图像之后的内容流?

如何保持绝对定位图像之后的内容流?
EN

Stack Overflow用户
提问于 2015-06-21 18:18:19
回答 2查看 60关注 0票数 1

奇怪的是,当我搜索这个问题时,我什么也找不到。

我有一堆图片堆叠在一起(不是垂直的),使用position: absolute

所以HTML基本上如下所示:

代码语言:javascript
复制
<div class="image-gallery">
  <img src="whatever.jpg">
  <img src="whatever2.jpg" class="hidden">
  <img src="whatever3.jpg" class="hidden">
</div>

而CSS则使它们既堆栈又响应,但保持其纵横比:

代码语言:javascript
复制
.image-gallery {
    width: 100%;
    height: auto;
    margin: 0 auto;
    position: relative;
}

.image-gallery img {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: auto;
}

这一切都很好,但问题是这个画廊后面的内容。它就在上面,因为就HTML而言,图像不会占用任何空间。

是否有一个简单的CSS修复以保留内容流,或者我是否必须使用height调整大小函数将包含的div的width设置为width的一部分?

JSFiddle这里: http://jsfiddle.net/01xoet16/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-21 18:43:36

除了Quentin给出的很好的解释之外,我还提出了一个解决办法。所以看起来你可以把其中一幅图像保留下来,所以空间总是保留下来的,如果有必要的话,还可以和z-index玩。

只有当所有图像大小相同时,该解决方案才能工作。

http://jsfiddle.net/01xoet16/3/

代码语言:javascript
复制
.image-gallery img {
    width: 100%;
    height: auto;
}
.image-gallery img.hidden {
    position: absolute;
    left: 0;
    top: 0;
}

使用z-index的额外控制。

http://jsfiddle.net/01xoet16/4/

代码语言:javascript
复制
.image-gallery img:not(.hidden) {
    width: 100%;
    height: auto;
    position: relative;
    z-index: 1;
}
.image-gallery img.hidden {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: auto;
}
票数 1
EN

Stack Overflow用户

发布于 2015-06-21 18:28:30

是否有简单的CSS修复以保留内容流?

不是的。绝对定位从正常流中删除内容。这样的内容不能影响其他(非后代)元素的位置。

还是必须使用JavaScript调整大小函数将包含div的高度设置为宽度的一小部分?

这或知道你的图像将是什么维度在第一。

或者,考虑通过切换图像的display属性来隐藏它们(这会使它们在可见时处于正常流中),而不是绝对地定位它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30967810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档