Абсолютная позиция и переполнение: скрыто - PullRequest
58 голосов
/ 01 апреля 2011
<div id="parent" style="overflow:hidden; position:relative;">
  <div id="child" style="position:absolute;">
  </div>
</div>

Мне нужно показать дочерний элемент, который больше, чем его родительский элемент, но без устранения переполнения: hidden;Это возможно?родительский элемент имеет position:relative; дочерний элемент удаляется, как только он выходит за пределы родительских границ.

(для элементов определены дополнительные css, я просто поместил атрибуты стиля для ясности)

Ответы [ 7 ]

45 голосов
/ 01 апреля 2011

Совершенно невозможно сделать то, что вы хотите, с overflow: hidden и position: relative на родительском div .. вместо этого вы можете ввести дополнительного ребенка div и переместить overflow: hidden к этому.

См .: http://jsfiddle.net/thirtydot/TFTnU/

HTML:

<div id="parent">
    <div id="hideOverflow">
        <div style="width:1000px;background:#ccc">sdfsd</div>
    </div>
  <div id="child">overflow "visible"</div>
</div>

CSS:

#parent {
    position:relative;
    background:red;
    width:100px;
    height:100px
}
#child {
    position:absolute;
    background:#f0f;
    width:300px;
    bottom: 0;
    left: 0
}
#hideOverflow {
    overflow: hidden
}
4 голосов
/ 08 августа 2014

Код ниже работает как шарм.

<div id="grandparent" style="position:relative;">
    <div id="parent" style="overflow:hidden;">
        <div id="child" style="position:absolute;">
        </div>
    </div>
</div>
1 голос
/ 09 августа 2011

Я обычно использую переполнение: скрыто как clearfix.В этом случае я сдаюсь и просто добавляю дополнительный div.

<div id="parent" style="position:relative;">
  <!-- floating divs here -->
  <div id="child" style="position:absolute;"></div>
  <div style="clear:both"></div>
</div>
0 голосов
/ 08 февраля 2019

Я сделал это очень простым способом

<div class="rootparent">
  <div class="parent">
    <div class="child"></div>
  </div>
</div>

.rootparent {
  position:relative;
  border:1px solid #ccc;
  width:150px;
  height:150px;
}
.parent {
  overflow:hidden;
}
.child {
   position: absolute;
   top: -10px;
   right: -15px;
   width: 30px;
   height: 30px;
   border: 1px solid red;
}

Вот ссылка jsfiddle

0 голосов
/ 11 сентября 2018

Я полагаю, что каждый разработчик интерфейса сталкивался с такой ситуацией, по крайней мере, один раз. Допустим, вам нужно абсолютное положение чего-то ... И затем вы пытаетесь переместить это в каком-то направлении, и бум исчезает ... Вы забыли, что родительский объект был настроен на переполнение: скрытый, и теперь ваш элемент теряется в скрытом бесконечном вакууме. css трюк, чтобы сделать это. Пожалуйста, найдите демонстрационный пример ниже для этого ...

<br><br><br>
<div class="grand-parent">
  <div class="parent">P
    <div class="child">child</div>
  </div>
</div>
css code:


.grand-parent {
  width:50px;
  height:50px;
  position:relative;
  background-color: grey;
}
.parent {
  width:10px;
  height:30px;
  overflow:hidden;
  background-color: blue;
}
.child {
  position:absolute; 
  width:50px;
  height:20px;
  background-color: red;
  top:-10px; 
  left:5px;
}
0 голосов
/ 25 мая 2015

Решение тридцати точек на самом деле хорошая идея.

Вот более понятный пример: http://jsfiddle.net/y9dtL68d/

HTML

<div id="grandparent">
    <div id="parent">
        <p>this has a lot of content which ...</p>
        <p>this has a lot of content which ...</p>
        <p>this has a lot of content which ...</p>
        <p>this has a lot of content which ...</p>
        <p>this has a lot of content which ...</p>
        <p>this has a lot of content which ...</p>
        <p>this has a lot of content which ...</p>
    </div>
    <div id="child">
        dudes
    </div>    
</div>

CSS

#grandparent {
    position: relative;
    width: 150px;
    height: 150px;
    margin: 20px;
    background: #d0d0d0;
}
#parent {
    width: 150px;
    height: 150px;
    overflow:hidden;
}
#child {
    position: absolute;
    background: red;
    color: white;
    left: 100%;
    top: 0;
}
0 голосов
/ 01 апреля 2011

Использовать css ...

* {margin: 0; padding: 0;}

#parent {width: auto; overflow: hidden;}

#child {position: absolute; width: auto;}

При автоматической ширине всегда добавляется наименьший возможный размер;и с перезагрузкой это поможет поддерживать естественный поток.

Но если ребенок больше, чем родитель, то это будет невозможно.Но с этим CSS я думаю, что вы достигнете того, что вы хотите, максимально возможного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...