Предотвратить перемещение div-ов из упаковки в новую строку

Я видел, как это несколько раз спрашивали о SO, и даются те же ответы, которые не работают на моем конце в Chrome или Firefox.

Я хочу, чтобы набор левых плавающих divs был выключен, горизонтально - родительский div с горизонтальной полосой прокрутки.

Я могу продемонстрировать, что я хочу сделать с этим crappy inline css здесь: http://jsfiddle.net/ajkochanowicz/tSpLx/3/

Однако из ответов, приведенных на SO *, это должно работать, но не на моем конце. http://jsfiddle.net/ajkochanowicz/tSpLx/2/

Есть ли способ сделать это без определения абсолютного позиционирования для каждого элемента?

* например. Предотвращение переноса плавающих divs в следующую строку

Ответ 1

Это должно быть все, что вам нужно.

    .float-wrap {
      /* 816 = <number of floats> * (<float width> + 2 * <float border width>) */
      width: 816px;
      border: 1px solid;
      /* causes .float-wrap height to match its child divs */
      overflow: auto;
    }
    .left-floater {
      width: 100px;
      height: 100px;
      border: 1px solid;
      float: left;
    }
    .outer {
      overflow-x: scroll;
    }
<div class="outer">
  <div class="float-wrap">
    <div class="left-floater">
      One
    </div>
    <div class="left-floater">
      Two
    </div>
    <div class="left-floater">
      Three
    </div>
    <div class="left-floater">
      I should be to the <s>left</s> right of "Three"
    </div>
    <div class="left-floater">
      I float.
    </div>
    <div class="left-floater">
      I float.
    </div>
    <div class="left-floater">
      I float.
    </div>
    <div class="left-floater">
      I float.
    </div>
  </div>
</div>

Ответ 2

Используйте вторую обертку вокруг элементов с абсолютным позиционированием. Затем вы можете просто поместить отдельные элементы.

<style type="text/css">
    #outter {
        position: relative;
        width: 500px;
        height: 200px;
        overflow: scroll;
    }
    #inner {
        position: absolute;
        top: 0;
        left: 0;
        width: 1000px;
        height: 200px;
    }
    #inner .item {
        float: left;
        display: inline;
    }    
</style>

<div id="outter">
    <div id="inner">
        <div class="item">Item #1</div>
        <div class="item">Item #2</div>
        <div class="item">Item #3</div>
    </div>
</div>

Вам нужно будет отрегулировать ширину #inner на основе количества элементов, которые у вас будут внутри. Это можно сделать при загрузке, если вы знаете количество элементов или с javascript после загрузки страницы.

Ответ 3

в html добавлены дополнительные ситлы... который устанавливает поля.

также вы должны быть осторожны с полями, установленными в вашем css, потому что.. высота, вероятно, может повлиять на нее, потому что она установлена ​​на определенные пиксели и больше не эластична...

вы можете попробовать создать divs в divs... просто разделите верхний div и средний div и нижний div. упрощает стилизацию для каждого раздела. Надеюсь, это помогло...:) приветствия