当前位置: 首页 > 知识库问答 >
问题:

位置:绝对和父身高?

訾雅畅
2023-03-14

我有一些容器,它们的子容器仅处于绝对/相对位置。如何设置容器的高度,使其孩子在容器内?

代码如下:

HTML

<section id="foo">
    <header>Foo</header>
    <article>
        <div class="one"></div>
        <div class="two"></div>
    </article>
</section>    

<div style="clear:both">Clear won't do.</div>
<!-- I want to have a gap between sections here -->

<section id="bar">
    <header>bar</header>
    <article>
        <div class="one"></div><div></div>
        <div class="two"></div>
    </article>
</section>  

CSS

article {
    position: relative;
}

.one {
    position: absolute;
    top: 10px;
    left: 10px;
    background: red;
    width: 30px;
    height: 30px;
}

.two {
    position: absolute;
    top: 10px;
    right: 10px;
    background: blue;
    width: 30px;
    height: 30px;
}

这里有一个jsfiddle。我希望“栏”文本出现在4个方格之间,而不是它们后面。

http://jsfiddle.net/Ht9Qy/

有简单的解决办法吗?

请注意,我不知道这些孩子的身高,也不能为容器设置身高:xxx。

共有3个答案

南宫凡
2023-03-14

这是一个迟来的答案,但是通过查看源代码,我注意到当视频全屏时,“mejs-容器-全屏”类被添加到“mejs-容器”元素中。因此,可以根据此类更改样式。

.mejs-container.mejs-container-fullscreen {
    // This rule applies only to the container when in fullscreen
    padding-top: 57%;
}

此外,如果您希望使用CSS使MediaElement视频流畅,下面是Chris Coyier的一个绝妙技巧:http://css-tricks.com/rundown-of-handling-flexible-media/

只需将此添加到您的CSS:

.mejs-container {
    width: 100% !important;
    height: auto !important;
    padding-top: 57%;
}
.mejs-overlay, .mejs-poster {
    width: 100% !important;
    height: 100% !important;
}
.mejs-mediaelement video {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    width: 100% !important;
    height: 100% !important;
}

我希望有帮助。

樊俊悟
2023-03-14

这是我的解决方法,
在您的示例中,您可以添加具有相同样式的. one的第三个元素

HTML

<article>
   <div class="one"></div>
   <div class="two"></div>
   <div class="three"></div>
</article>

CSS

.three{
    height: 30px;
    z-index: -1;
    visibility: hidden;
    width:0!important; /* if you got unnecessary horizontal scroll*/
}
秋博容
2023-03-14

如果我理解你试图正确地做什么,那么我不认为CSS在保持孩子绝对定位的同时是可能的。

绝对定位的元素完全从文档流中删除,因此它们的维度不能改变其父元素的维度。

如果您真的必须在保持子元素为位置:绝对的同时实现这种影响,您可以通过JavaScript找到绝对定位的子元素渲染后的高度,并使用该高度来设置父元素的高度。

或者,只需使用float:left/float:right和边距即可获得相同的定位效果,同时将子项保留在文档流中,然后可以在父项上使用overflow:hidden(或任何其他clearfix技术)使其高度扩展到其子项的高度。

article {
    position: relative;
    overflow: hidden;
}

.one {
    position: relative;
    float: left;
    margin-top: 10px;
    margin-left: 10px;
    background: red;
    width: 30px;
    height: 30px;
}

.two {
    position: relative;
    float: right;
    margin-top: 10px;
    margin-right: 10px;
    background: blue;
    width: 30px;
    height: 30px;
}
 类似资料:
  • 问题内容: 我有一些容器,他们的孩子只是绝对的/相对的。如何设置容器的高度,以便他们的孩子进入其中? 这是代码: HTML CSS 这是一个jsfiddle。我希望“栏”文本出现在4个正方形之间,而不是在它们后面。 有简单的解决方法吗? 请注意,我不知道这些子项的高度,也无法为容器设置高度:xxx。 问题答案: 如果我了解您要正确执行的操作,那么我认为使用CSS保持孩子的绝对位置是不可能的。 绝对

  • 问题内容: 我在另一个div内有两个div,我想使用css将一个子div放在父div的右上角,另一个子div放在父div的底下。即,我想对两个子div使用绝对定位,但是将它们相对于父div而不是页面定位。我怎样才能做到这一点? 范例html: 问题答案: 这工作,因为手段类似“使用,,,来定位自己相对于谁拥有最近的祖先或”。 因此,我们使have 和子代都有,然后使用和定位子代。

  • 我有一个与我的CSS有关的div位置的问题。 我的父div设置为,子div设置为 但由于某些原因,子div显示在父div的边界下方和外部。。。 这是我的CSS: 超文本标记语言: 我提供了一个JSFiddle来向您展示它的实际操作: http://jsfiddle.net/j6VLc/1/ 在使用时,如何修复它以使子div位于父div内?

  • 问题内容: 我有3个要素。 第一个更大(包装)并具有 第2个相对于第1个相对位置绝对定位(并包含在第1个中) 第3个包含在第2个中,并且也具有绝对定位。 为什么第3个位置相对于第2个绝对位置(这也是第1个位置的绝对位置)而不是相对位置的第一个位置? 因为3rd 是绝对定位到2nd的绝对定位。 问题答案: 因为就像重置孩子的相对位置一样。 这是无法解决的-如果您希望第三个相对于第一个绝对定位,则必须

  • 我在另一个div中有两个div,我想使用CSS将一个子div放置在父div的右上方,另一个子div放置在父div的底部。例如,我想对两个子div使用绝对定位,但是相对于父div而不是页面定位它们。我怎么能这么做? HTML示例:

  • 问题内容: 和CSS 和有什么不一样?那你什么时候应该使用呢? 问题答案: CSS绝对定位 绝对定位是最容易理解的。您从CSS 属性开始: 这告诉浏览器应将要定位的所有内容从文档的正常流程中删除,并将其放置在页面上的确切位置。它不会影响HTML中它之前或之后的元素在网页上的放置方式,但是除非您重写它,否则 它将 取决于其父级的位置。 如果你想一个元素从文档窗口的顶部10个像素的位置,你会使用偏移与