Расположите элементы горизонтально или вертикально, заключенные в div

#css

#css

Вопрос:

Я пытаюсь написать общие селекторы css, которые будут упорядочивать любые элементы, обернутые внутри div, по вертикали или горизонтали. У меня нет контроля над элементами, которые будут размещены внутри внешнего div.

Например: В приведенном ниже фрагменте div (id = один), div (id = два) и button (id = три) должны отображаться в виде горизонтально расположенного списка элементов.

 <div class="arrange-horizontally">
  <div id="one"></div>
  <div id="two"></div>
  <button id="three"></button>
</div>
  

Аналогично, мне нужно написать другой CSS-селектор для упорядочивания элементов по вертикали.

 <div class="arrange-vertically">
  <div id="one"></div>
  <div id="two"></div>
  <button id="three"></button>
</div>
  

Я попробовал с помощью display:table-row (отображает эти элементы по горизонтали).
отображение: таблица-ячейка не упорядочивает элементы по вертикали.
На самом деле; сначала я ищу лучший подход, а затем решение.

Это CSS, который я использую для получения желаемого эффекта. Еще одно изменение, я удостоверяюсь, что любой из вертикальных или горизонтальных стилей div заключен в div with .приведенная ниже таблица — лишь один из примеров, и таких комбинаций может быть больше.

 <div class="table>
    <div class="arrange-vertically">
       <div>
             <button>1stverticallyPlacedElement</button>
   </div>
       <div class="arrange-horizontally">
             <div>some comp1</div>
             <div>some comp1</div>
             <div>some comp2</div>
       </div>

      <button id="three">This is 3rd element in vertical block</button>
    </div>
</div>


    .table {
        display: table;
     }

     .arrange-horizontally {
         overflow-x:scroll;
     }

     .arrange-horizontally > * {
         display:table-cell;

     }

     .arrange-vertically {
     }

     .arrange-vertically > * {
         display:table-row; 
     }
  

Проблемы с этим —

  • Полосы прокрутки не появляются, когда я пытаюсь вставить много элементов в div в горизонтальном / вертикальном стиле.

  • Из приведенного выше примера кода ширина элемента «some comp1» изменяется в соответствии с шириной элемента «1stverticallyPlacedElement». Это определенно проблема.

Ответ №1:

Попробуйте это:

 .arrange-horizontally > * {
    display: inline-block;
    text-align: center;
}
.arrange-vertically > * {
    display: block;
}
  

Комментарии:

1. Это работает и для вложенных блоков. jsfiddle.net/eX35D Я попробую еще несколько вариантов использования.

2. как бы мы получили полосы прокрутки? Теперь, когда мы пытаемся переместить множество элементов в div с помощью arrange-horizontally, это перемещает элементы в следующую строку. JSFiddle : jsfiddle.net/eX35D/4

3. Если вы не хотите, чтобы горизонтальная полоса разбивалась на новые строки, вы можете использовать пробел: nowrap. jsfiddle.net/eX35D/5

4. Кстати: не уверен, что я правильно вас понял. Если вы намерены создать полосы прокрутки внизу страницы, то jsfiddle, который я опубликовал, будет достаточно. Если вы хотите удалить содержимое только блока упорядочивания по горизонтали, тогда все, что вам нужно сделать, это добавить «overflow: auto;» прямо под объявлением о пробелах.

5. да, мое намерение состояло в том, чтобы получить горизонтальную прокрутку только для div (блок упорядочивания по горизонтали), и overflow: auto сработал.

Ответ №2:

Используйте inline-block для отображения элементов div по горизонтали. Пример по вертикали смотрите в скрипке, это очень просто.

http://jsfiddle.net/Qu66W/6/

HTML:

 <div id="horizontal">
    <div>First one</div>
    <div>Second one</div>
    <div>Third one</div>
</div>
  

CSS:

 .horizontal{
    float: left;
    border: 1px solid green
}

.horizontal  *{

    display: inline-block;
    margin-left: 10px;
}

.vertical {
    float: left;
    width: 100%;
    border: 1px solid blue
}

.vertical  > *{
    display :block;
    width: 100%;
}
  

Ответ №3:

Вы пробовали использовать float? Все они выравниваются по горизонтали с помощью float. Или попробуйте поискать Встроенный дисплей. Для вертикального использования
используйте теги, а затем выровняйте по горизонтали сверху.