Форум программистов, компьютерный форум, киберфорум
HTML, CSS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3

Распределение элементов в 2 колонки по ширине

21.03.2013, 01:11. Показов 4206. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток уважаемые.

Помогите пожалуйста с решением следующего вопроса: необходимо расположить N-элементов типа DIV в 2 колонки, что бы эти элементы были выровнены по ширине. Для примера, есть вот такой код:
HTML5
1
2
3
4
<div style="float: left; width: 40%; height: 150px; border: 1px solid red; margin: 0 10px;">1</div>
<div style="float: left; width: 40%; height: 100px; border: 1px solid red; margin: 0 10px;">2</div>
<div style="float: left; width: 40%; height: 100px; border: 1px solid red; margin: 0 10px;">3</div>
<div style="float: left; width: 40%; height: 50px; border: 1px solid red; margin: 0 10px;">4</div>
Результат прикреплен к посту (картинкой). Как мы видим, 4-ый слой выравнивается по нижней границе 3-го, при этом между слоем 1 и 4 имеется пустое пространство.

Скажите пожалуйста, если ли какое-либо свойство CSS или какой-то способ выровнивать элементы по нижней границе выше стоящего (в нашем случае, слой 1), а не последнего элемента?
Миниатюры
Распределение элементов в 2 колонки по ширине  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.03.2013, 01:11
Ответы с готовыми решениями:

Распределение элементов по ширине блока
Здравствуйте! Необходимо выровнять элементы на всю ширину родительского блока, чтобы от левого и правого края родителя не было...

Распределение картинок по ширине
Всем доброго времени суток! Нужен способ распределить три картинки равномерно по ширине, как показано на рисунке: ...

Колонки по всей ширине datagridview
Всем доброго здравия господа! Подскажите пожалуйста как решить данную задачку. Если в гриде один столбец, то все равно делаем его по всей...

12
Почетный модератор
12274 / 5340 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
21.03.2013, 11:39
CSS. Позиционирование блоков
1
 Аватар для IncSW
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 13
21.03.2013, 12:14
display: table/table-*
0
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
21.03.2013, 13:33  [ТС]
Цитата Сообщение от IncSW Посмотреть сообщение
display: table/table-*
Добавлял всем слоям свойство: display: table, table-row, table-cell и т.д. - не помогло, по крайней мере в FF-19 (дальше проверять не стал).

Taatshi, спасибо большое за ссылку! Если я правильно понял, есдинтвенный разумный вариант - это JavaScript?
0
Почетный модератор
12274 / 5340 / 268
Регистрация: 05.04.2011
Сообщений: 14,086
Записей в блоге: 2
21.03.2013, 14:04
wolfalone, точно)

Хотя есть нюансы. Если высота всех блоков фиксированная и навсегда, то можно поднять вверх отрицательным маргином. Если же высота блоков неизвестна заранее - то только скрипт.
1
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
21.03.2013, 14:49  [ТС]
Taatshi, ещё раз благодарю. Высоту блоков заранее, чисто теоретически можно конечно рассчитать, так как она по сути будет зависеть от кол-ва пунктов <LI>, но что-то я не горю желанием генерировать динамический CSS на стороне сервера, для выравнивания блока... Странно конечно, что в HTML5/CSS не предусмотрено подобного... Но, в любом случае спасибо за совет, вопрос решен.
0
 Аватар для IncSW
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 13
21.03.2013, 15:32
Цитата Сообщение от wolfalone Посмотреть сообщение
Добавлял всем слоям свойство: display: table, table-row, table-cell и т.д. - не помогло, по крайней мере в FF-19 (дальше проверять не стал).

Taatshi, спасибо большое за ссылку! Если я правильно понял, есдинтвенный разумный вариант - это JavaScript?
Значит криво сверстали. Жс для такого не шибко разумно использовать.
0
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
21.03.2013, 15:43  [ТС]
Цитата Сообщение от IncSW Посмотреть сообщение
Значит криво сверстали.
Приведите пожалуйста пример "прямой" верстки.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
21.03.2013, 15:46
Таблицы или дивы?
0
 Аватар для IncSW
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 13
21.03.2013, 15:52
Цитата Сообщение от wolfalone Посмотреть сообщение
Приведите пожалуйста пример "прямой" верстки.
Увы с сотки особо не поверстаешь. Вечером мб.
0
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
21.03.2013, 16:27  [ТС]
Vovan-VE, материал безусловно весьма полезный, но всё-таки, установка свойства display в значение inline-block; даёт не совсем ожидаемый результат. Сколько бы я не пытался поменять выше обозначенные слои местами, результат, не достиг ожидаемого.
Миниатюры
Распределение элементов в 2 колонки по ширине  
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
21.03.2013, 16:57
vertical-align: top; для красных.

Вообще, Вам что именно нужно? Вам по строкам надо или по столбцам? Есть в CSS3 колонки, но их поддержка браузерами пока хромает: http://www.quirksmode.org/css/columns/
0
 Аватар для IncSW
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 13
22.03.2013, 13:09
2 wolfalone

Каюсь похоже был не прав.

Накидал на коленке

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="test">
    <div class="test_item" style="height: 50px;">4</div>
    <div class="test_item" style="height: 150px;">1</div>
    <div class="test_item" style="height: 100px;">2</div>
    <div class="test_item" style="height: 100px;">3</div>
    <div class="test_item" style="height: 50px;">4</div>
    <div class="test_item" style="height: 150px;">1</div>
    <div class="test_item" style="height: 100px;">2</div>
    <div class="test_item" style="height: 100px;">3</div>
    <div class="test_item" style="height: 50px;">4</div>
    <div class="test_item" style="height: 150px;">1</div>
    <div class="test_item" style="height: 100px;">2</div>
    <div class="test_item" style="height: 100px;">3</div>
    <div class="test_item" style="height: 50px;">4</div>
    <div class="test_item" style="height: 150px;">1</div>
</div>
CSS
1
2
3
4
5
6
7
8
9
10
.test {
    width: 1000px; 
    margin: 0 auto; 
    height: 100%;
}
 
.test_item {
    display: inline-block;
    box-shadow: 0 0 0 1px red;
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
window.onload = function() {
    var container = document.querySelector('.test');
    var elements = container.querySelectorAll('.test_item');
    var columns = {
        elements: [],
        margin: 20,
        elementWidth: container.clientWidth / 2 - 10,
        left: {
            height: container.offsetTop,
            position: container.offsetLeft,
            length: 0,
        },
        right: {
            height: container.offsetTop,
            position: container.offsetLeft + container.clientWidth / 2 + 10,
            length: 0
        },
        setElement: function(type, element) {
            var self = this[type];
            if (typeof(self) != 'object') {
                return;
            }
            this.elements.push(element);
            element.style.top = self.height + 'px';
            element.style.left = self.position + 'px';
            element.style.width = this.elementWidth + 'px';
            self.height += element.clientHeight + this.margin;
            self.length++;
        },
        prepare: function(element) {
            for (var i = 0, count = this.elements.length; i < count; i++) {
                elements[i].style.display = 'block';
                elements[i].style.position = 'absolute';
                elements[i].style.margin = '0';
            }
        }
    }
    for (var i = 0, count = elements.length; i < count; i++) {
        columns.setElement(columns.left.height < columns.right.height ? 'left' : 'right', elements[i]);
    }
    columns.prepare();
}

Демо: http://incsw.in/test.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2013, 13:09
Помогаю со студенческими работами здесь

Распределение по ширине двух вложенных блоков в блок
У меня есть DIV блок &quot;Header&quot;, в котором содержатся 2 блока &quot;LeftHead&quot; и &quot;RightHead&quot;. Как сделать чтоб по ширине блок &quot;LeftHead&quot;...

Равномерное распределение блоков по ширине при сжатом коде
Здравствуйте! распределяю равномерно по ширине блоки, задав родителю text-align:justify, но при сжатом коде между элементами нет...

Как сделать высоту равной ширине при ширине 100%?
как можно сделать элемент(например таблицу) квадратным, т.е. высота равна ширине(ширина 100%)

Растягивание по ширине у подчиненных элементов
Приветствую, ребята! Подскажите где косячу :) Т.е. есть шаблон данных, помещенный в список, далее в этом списке хочу выводить данные, но...

Растягивание элементов горизонтального StackPanel по ширине
&lt;StackPanel&gt; &lt;Label Content=&quot;Выбрать папку с картинками&quot;/&gt; &lt;StackPanel Orientation=&quot;Horizontal&quot;&gt; &lt;TextBox...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru