绝对位置和隐藏溢出

发布于 2024-10-10 15:28:37 字数 1267 浏览 3 评论 0原文

我们有两个 DIV,一个嵌入另一个中。如果外部 DIV 不是绝对定位的,则绝对定位的内部 DIV 不遵守外部 DIV 的溢出隐藏。

#first {
    width: 200px;
    height: 200px;
    background-color: green;
    overflow: hidden;
}

#second {
    width: 50px;
    height: 50px;
    background-color: red;
    position: absolute;
    left: 250px;
    top: 250px;
}
<div id="first">
    <div id="second"></div>
    <div id="third"></div>
</div>

是否有机会使内部 DIV 服从外部 DIV 的溢出隐藏,而不将外部 DIV 设置为绝对位置(因为这会弄乱我们的完整布局)? 此外,我们的内部 DIV 的相对位置也不是一个选项,因为我们需要“扩展”表 TD。

#first {
    width: 200px;
    height: 200px;
    background-color: green;
}

#second {
    width: 50px;
    height: 400px;
    background-color: red;
    position: relative;
    left: 0px;
    top: 0px;
}
<table id="first">
    <tr>
        <td>
            <div id="second"></div>
        </td>
    </tr>
</table>

还有其他选择吗?

We have two DIVs, one embedded in the other. If the outer DIV is not positioned absolute then the inner DIV, which is positioned absolute, does not obey the overflow hidden of the outer DIV.

#first {
    width: 200px;
    height: 200px;
    background-color: green;
    overflow: hidden;
}

#second {
    width: 50px;
    height: 50px;
    background-color: red;
    position: absolute;
    left: 250px;
    top: 250px;
}
<div id="first">
    <div id="second"></div>
    <div id="third"></div>
</div>

Is there any chance to make the inner DIV obey the overflow hidden of the outer DIV without setting the outer DIV to position absolute (cause that will muck up our complete layout)?
Also position relative for our inner DIV isn't an option as we need to "grow out" of a table TD.

#first {
    width: 200px;
    height: 200px;
    background-color: green;
}

#second {
    width: 50px;
    height: 400px;
    background-color: red;
    position: relative;
    left: 0px;
    top: 0px;
}
<table id="first">
    <tr>
        <td>
            <div id="second"></div>
        </td>
    </tr>
</table>

Are there any other options?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

若能看破又如何 2024-10-17 15:28:38

你只需像这样制作 div

<div style="width:100px; height: 100px; border:1px solid; overflow:hidden; ">
    <br/>
    <div style="position:inherit; width: 200px; height:200px; background:yellow;">
        <br/>
        <div style="position:absolute; width: 500px; height:50px; background:Pink; z-index: 99;">
            <br/>
        </div>
    </div>
</div>

我希望这段代码能帮助你:)

You just make divs like this:

<div style="width:100px; height: 100px; border:1px solid; overflow:hidden; ">
    <br/>
    <div style="position:inherit; width: 200px; height:200px; background:yellow;">
        <br/>
        <div style="position:absolute; width: 500px; height:50px; background:Pink; z-index: 99;">
            <br/>
        </div>
    </div>
</div>

I hope this code will help you :)

不醒的梦 2024-10-17 15:28:37

将外部

设置为 position:relative,将内部

设置为 position:absolute。它应该适合你。

Make outer <div> to position: relative and inner <div> to position: absolute. It should work for you.

楠木可依 2024-10-17 15:28:37

外部 div 的 position:relative 怎么样?在隐藏内部的示例中。它也不会在布局中移动它,因为您没有指定顶部或左侧。

What about position: relative for the outer div? In the example that hides the inner one. It also won't move it in its layout since you don't specify a top or left.

只有一腔孤勇 2024-10-17 15:28:37

绝对定位的元素实际上是根据相对父元素或最近找到的相对父元素来定位的。因此带有 overflow:hidden 的元素应该位于 relativeabsolute 定位元素之间:

<div class="relative-parent">
  <div class="hiding-parent">
    <div class="child"></div>
  </div>
</div>

.relative-parent {
  position:relative;
}
.hiding-parent {
  overflow:hidden;
}
.child {
  position:absolute; 
}

An absolutely positioned element is actually positioned regarding a relative parent, or the nearest found relative parent. So the element with overflow: hidden should be between relative and absolute positioned elements:

<div class="relative-parent">
  <div class="hiding-parent">
    <div class="child"></div>
  </div>
</div>

.relative-parent {
  position:relative;
}
.hiding-parent {
  overflow:hidden;
}
.child {
  position:absolute; 
}
作妖 2024-10-17 15:28:37

确保。

  1. 相对父位置。
  2. 父元素手动分配宽度和高度(重要的是子元素具有绝对位置)。
  3. 子位置绝对;
.outer{
   position:relative;
   width:200px; 
   height:100px;
   overflow:hidden;
}

.inner{
   position:absolute;
   width:100px;
   height:100px;
   font-size:3rem;
}
<div class="outer">
<div class=inner>
Inner DIV to apply overflw hidden
</div>
</div>

}

Make sure.

  1. parent position relative.
  2. parent have manually assigned width and height(important as child element having absolute position).
  3. child position absolute;

.outer{
   position:relative;
   width:200px; 
   height:100px;
   overflow:hidden;
}

.inner{
   position:absolute;
   width:100px;
   height:100px;
   font-size:3rem;
}
<div class="outer">
<div class=inner>
Inner DIV to apply overflw hidden
</div>
</div>

}

旧人九事 2024-10-17 15:28:37

径向背景渐变遇到了这个问题。如果上述解决方案剪切了元素的部分内容,只需应用相对于 html 正文而不是直接父级的位置。

body {
  position: relative;
  overflow-x: hidden;
}

Ran into this issue with a radial background gradient. If the above solutions clip parts of your element, just apply the position relative to the html body instead of a direct parent.

body {
  position: relative;
  overflow-x: hidden;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文