У меня есть дочерний div, который должен быть дочерним элементом родительского div с шириной 1190px, и все же дочерний div должен растянуть окно браузера. Я использую position: absolute; left: 0; right: 0;
position: absolute; left: 0; right: 0;
для достижения этой цели.
Теперь проблема в том, что контент ниже моего div перекрывается под моим абсолютно позиционированным div, так как он больше не находится в коробке. Я мог бы использовать край дна на абс. позиционированный div, но он должен быть динамическим в том смысле, что текст внутри него должен быть способен увеличиваться и уменьшаться без меня, чтобы изменить любые поля.
Я прочел, что placeholder-div
может решить эту проблему. Я не знаю, как это сделать. Я попробовал пустой div поверх абсолютно позиционированного div с "position: relative", но ничего не сделал.
HTML:
<div class="bonus-box">
<div class="container">
<span class="ribbon1"></span>
<h3>Bonus Scoring System</h3>
<div class="list1">
<h4>Royalities for Back Hands</h4>
<ul>
<li><span>12 points for a Royal Flush</span></li>
<li><span>7 points or Straight Flush</span></li>
<li><span>4 points for Quads</span></li>
</ul>
</div>
<div class="list2">
<h4>Royalities for Middle Hands</h4>
<ul>
<li><span>24 points for a Royal Flush</span></li>
<li><span>14 points or Straight Flush</span></li>
<li><span>8 points for Quads</span></li>
<li><span>2 points for Full House</span></li>
</ul>
</div>
<div class="list3">
<h4>Royalities for Front Hands</h4>
<ul>
<li><span>3 point for a Three of a Kind</span></li>
</ul>
</div>
</div>
</div>
<!-- end bonus-box -->
<div class="placeholder-div"></div>
<h2>Special Conditions</h2>
<ul class="special-conditions">
<li>
<strong>1. Straights:</strong> You need to have straight in the back hand - middle hand and have your top front hand in sequence.
<ol class="a-list">
<li>Instant win and player wins 3 from everyone and voids all other hands.</li>
</ol>
</li>
<li>
<strong>2. Flushes:</strong> You need to have flushes in the back hand - middle hand and have your top front hand in the same suit.
<ol class="a-list">
<li>Instant win and player wins 3 from everyone and voids all other hands.</li>
</ol>
</li>
<li>
<strong>3. Six & Half Pairs:</strong> You need to have six pairs in your hand. The last card can make three of a kind.
<ol class="a-list">
<li>Instant win and player wins 3 from everyone and voids all other hands.</li>
</ol>
</li>
<li>
<strong>4. 13 card wonder:</strong>If you have no pairs in your hand which means you have all cards from A - 2 you get a special bonus.
<ol class="a-list">
<li>Instant win and player wins 3 from everyone and voids all other hands.</li>
</ol>
</li>
</ul>
</div><!-- end content -->
CSS:
.bonus-box {
background: #3f3f3f;
overflow: hidden;
width: 100%;
position:absolute;
left:0;
right:0;
}
Я решил, что лучший способ сделать это - использовать немного jQuery. Теперь, хотя чистый метод CSS был бы лучшим в идеальном мире, в реальном мире самый простой и эффективный метод - лучший из них.
Чтобы сделать дочерний div внутри родительского div определенной ширины, ширина, которая больше родительской (в этом случае растягивается до полной ширины окна браузера), я использовал "position: absolute; left: 0; справа: 0 'на дочернем div. У меня также есть div внутри дочернего div, называемого контейнером, который центрирует div с margin: 0 auto.
Теперь основная часть этого заключается в том, что у моего div-div (бонус-бокс) есть подстановщик-div, мне нужно было сделать высоту placeholder-div равной высоте div div бокса. Я использовал немного jQuery для этого, что можно увидеть ниже:
$ ( "Заполнитель-дела. ") CSS ({ 'Высота': ($() высота() + 'точка')" бонус-бокс.".});.
$ ( "Заполнитель-дела. ") Высота ($() высота()" бонус-бокс.".).
var maximumCol = Math.max($ ('. placeholder-div'). height(), $ ('. bonus-box'). height());
$ ( 'Заполнитель-ДИВ') высота (highestCol).
Это прекрасно работает, и теперь абсолютно позиционированный div может иметь как можно больше контента, не затрагивая позиционирование других элементов страницы.
Заполнитель div
будет работать только если у вас статический height
на .bonus-box
контейнере, который также может быть установлен на заполнителе. Поскольку вы говорите, что вам нужно, чтобы он автоматически увеличивал и уменьшал свой размер на основе контента, это не сработает, так как div
заполнителя не знает динамический размер вашего .bonus-box
(если вы не используете JavaScript, но это может определенно обрабатываться чистым способом CSS).
Теперь самым простым решением было бы установить .bonus-box
и .placeholder-div
на одну и ту же высоту и сделать с ним. Кроме того, необходимо будет поместить <div class="placeholder-div"></div>
после .bonus-box
div
; в противном случае, бонус окно будет отображаться под заполнителем div
так, что, где ее последний известный статическое положение в потоке страницы.
Для этого вам нужно будет изменить оба свойства height
чтобы он содержал контент плотно, всякий раз, когда текст был добавлен или удален из бокса box div
.
Но если вы хотите сделать это более сложным, но более простым в обслуживании способом, то, что вы, вероятно, захотите сделать, это структурировать его так, чтобы родительский контейнер имел min-width
1190px
. Прямые дети этого контейнера тогда будут определять их width
как 1190px
. Однако бонус-бокс (теперь он стал одним из этих прямых детей) установил бы его width
на 100%
.
HTML:
<div id="wrapper-main">
<div class="content-main">
<p>Sed ut est augue. Etiam ullamcorper, leo a tincidunt commodo, felis justo posuere diam, non tempus libero purus a mauris. Integer suscipit et lectus sollicitudin convallis. Nullam mattis lorem a dui mattis, vel molestie justo mollis. Duis leo felis, cursus vitae ornare condimentum, sagittis non odio. Cras pulvinar ultrices ante, id tincidunt sem volutpat quis. Curabitur mollis ultricies nunc nec aliquam. Aliquam eleifend laoreet lacus, sit amet viverra lorem.</p>
</div>
<div class="wrapper-bonus">
<div class="content-main">
<p>Cras euismod tristique nibh non semper. Sed iaculis mi sit amet aliquam ultricies. Donec eros eros, auctor et sem vitae, fringilla condimentum nisi. Donec volutpat mauris sit amet convallis accumsan. Nam nec porttitor nulla, placerat suscipit leo. Nam tincidunt, urna a sagittis pulvinar, libero metus iaculis justo, quis fermentum dolor magna vel dui. Vestibulum consectetur mattis neque, at lacinia augue convallis nec. Fusce orci mi, auctor pretium gravida sit amet, feugiat et purus.</p>
</div>
</div>
<div class="content-main">
<p>Vivamus mollis quis lacus sed auctor. Integer ornare venenatis ultrices. Cras faucibus orci tincidunt enim sollicitudin ornare. Pellentesque dapibus iaculis ante, non imperdiet eros varius venenatis. Nulla facilisi. Cras iaculis tincidunt eros quis aliquam. Etiam mattis leo leo, ut varius tellus gravida non. Aenean id urna hendrerit, gravida leo sed, molestie nibh. Proin accumsan ultricies nulla, adipiscing ultricies urna posuere in. Vestibulum id eros leo. Etiam erat metus, vulputate sit amet lorem sed, adipiscing tempus enim. Nulla et massa sit amet nibh pharetra auctor. Curabitur odio odio, gravida eget nulla sit amet, placerat porta mi.</p>
</div>
</div>
CSS:
#wrapper-main {
min-width: 1190px;
}
.content-main {
margin: 0 auto;
width: 1190px;
}
.wrapper-bonus {
width: 100%;
background-color: #f80;
}
Конечно, делать это таким образом потребовалось бы немного реструктуризации в вашем коде... что может или не возможно по какой-либо причине.