自动设置绝对子级的父div的高度

时间:2014-10-05 20:39:45

标签: javascript jquery html css css3

我有一种情况,我有一些绝对位置的div(用于3D翻转效果)。 因此,父div的高度非常小,绝对内容在较低内容之上溢出。由于回应原因,无法真正设置固定高度。

我打算给孩子div相对位置,然后在jquery的帮助下收集高度,并根据它设置高度。但是确实有很多元素和vars用于响应。有没有其他更优雅的方式让孩子适合父母?

http://jsfiddle.net/xyjrLa2p/

html

<div class="parent">
<div class="title">Title</div>
<div class="absolute">
    <p>Absolute</p>
    <p>Absolute</p>
    <p>Absolute</p>
</div>
<div class="clearboth"></div>
</div>

css

.parent {
position:relative;
background-color:yellow;
}
.absolute {
position:absolute;
}
.absolute p {
padding:5px;
}
.clearboth {
clear:both;
}

2 个答案:

答案 0 :(得分:0)

如果您不介意.absolute位置,请尝试将其设为relative

.absolute {
    position:relative;
}

工作示例 - http://jsfiddle.net/xyjrLa2p/3/

答案 1 :(得分:0)

好的,正如我所料,这是另外一个&#34; 99个100个答案&#34;。根据经验,请记住,如果您正在考虑响应式设计,使用绝对位置的可能性非常小,接近0,因为它&#39 ;与响应性完全相反,除非您计划处理大量媒体查询。

所以,在你的案例和你的样本中,你有:

body {
    background: #ccc;
}
.flip {
    -webkit-perspective: 800;
    width: 20vw;
    height: 20vh;
    position: relative;
    margin: 50px auto;
    display:inline-block;
}
.flip .card.flipped {
    -webkit-transform: rotatex(-180deg);
}
.flip .card {
    width: 100%;
    height: 100%;
    -webkit-transform-style: preserve-3d;
    -webkit-transition: 0.5s;
}
.flip .card .face {
    width: 100%;
    height: 100%;
    position: absolute;
    -webkit-backface-visibility: hidden;
    z-index: 2;
    font-family: Georgia;
    font-size: 3em;
    text-align: center;
    line-height: 200px;
}
.flip .card .front {
    position: absolute;
    z-index: 1;
    background: black;
    color: white;
    cursor: pointer;
}
.flip .card .back {
    -webkit-transform: rotatex(-180deg);
    background: blue;
    background: white;
    color: black;
    cursor: pointer;
}

您可以添加一些min-widthmax-width(以像素为单位)或添加media-query来更改某些时候的vh/vw行为,但是你去了,完全响应行为(显然)没有绝对的立场。

永远记住:如果你想使用position:absolute,它应该在position:relative的容器中。虽然有例外,但它是一个简单的规则,可以在定位元素时为您省去很多麻烦。

See fiddle here