Ответ сильно зависит от того, какой поток вы хотите внутри блока #A.
Поддержание потока
Самое простое, что можно сделать, это вытащить блок #B наружу с отрицательным запасом.
Для этого вам не следует использовать миксин grid-span()
. Вместо этого используйте свойства CSS width
и margin
. Значения этих свойств можно вычислить с помощью вспомогательных функций column-span()
и gutter-span()
.
Эти вспомогательные функции принимают аргумент $grid
, который обозначает контекст сетки. Вы должны предоставить контекст сетки блока #A, который на один столбец меньше, чем основная сетка.
$grids: 6
$gutters: .1
$gutter-styles: 'split'
$a-columns-width: 5
#a
+grid-span($a-columns-width,2)
overflow: visible
#b
width: column-span(2, 1, $grid: $a-columns-width)
margin-left: - column-span(1, 1, $grid: $a-columns-width) - gutter-span($grid: $a-columns-width)
Пожалуйста, посмотрите демо: http://sassbin.com/gist/6676220/
Удаление #B из потока
Но блок #B не выводится из потока. Он по-прежнему занимает всю ширину блока #A, поэтому справа от #B ничего нельзя поместить.
Если вам нужно поместить какой-либо текст и прочее справа от #B, вам следует рассмотреть возможность использования другого подхода. Мне приходит на ум абсолютное позиционирование.
Решение будет сложнее. Если вы хотите, чтобы я придумал один, пожалуйста, объясните вашу задачу более подробно. Предоставьте графический шаблон, возможно.
Вам также придется использовать некоторые хитрости, чтобы содержимое #A не покрывалось #B.
Плоская структура HTML упрощает работу
Кроме того, зачем вообще нужна вложенная структура (#B внутри #A)? Если вы сделаете структуру плоской, расположение блоков станет простым:
#a
+grid-span(5,2)
#b
+grid-span(2,1)
margin-top: 4em
Демонстрация: http://sassbin.com/gist/6676193/
Тем не менее, контент #A, появляющийся под #B, по-прежнему является проблемой.
PS Если вас не устраивает ответ, поясните задачу подробнее и предоставьте графическую иллюстрацию нужной страницы со всем содержимым #A.
person
Andrey Mikhaylov - lolmaus
schedule
23.09.2013