Сделайте так, чтобы дочерний div внутри родительского div определенной ширины имел полную ширину окна браузера

0

У меня есть дочерний 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 &amp; 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;
}
Теги:

2 ответа

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 может иметь как можно больше контента, не затрагивая позиционирование других элементов страницы.

1

Заполнитель div будет работать только если у вас статический height на .bonus-box контейнере, который также может быть установлен на заполнителе. Поскольку вы говорите, что вам нужно, чтобы он автоматически увеличивал и уменьшал свой размер на основе контента, это не сработает, так как div заполнителя не знает динамический размер вашего .bonus-box (если вы не используете JavaScript, но это может определенно обрабатываться чистым способом CSS).


Теперь самым простым решением было бы установить .bonus-box и .placeholder-div на одну и ту же высоту и сделать с ним. Кроме того, необходимо будет поместить <div class="placeholder-div"></div> после .bonus-box div; в противном случае, бонус окно будет отображаться под заполнителем div так, что, где ее последний известный статическое положение в потоке страницы.

Пример JSFiddle здесь.

Для этого вам нужно будет изменить оба свойства 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;
        }

JSFiddle здесь.

Конечно, делать это таким образом потребовалось бы немного реструктуризации в вашем коде... что может или не возможно по какой-либо причине.

  • 0
    Я хочу центрировать div, используя margin: auto на родительском div. Я не думаю, что минимальная ширина позволяет вам это сделать. Спасибо, что объяснили div-заполнитель.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню