2012-01-10 2 views
3

Я использую сетку 960.gs для дизайна. Каков наилучший способ добавить тонкую разделительную вертикальную линию между двумя ящиками? Ширина и цвет должны быть регулируемыми.Как добавить вертикальную линию между двумя блоками 960.gs?

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

+3

Любая простая ссылка на код http://jsfiddle.net/? Или изображение для чего вы хотите? – Giberno

+2

Я второй запрос на jsfiddle этого, облегчил бы его понять и решить. – Jassi

ответ

7

Вы можете реализовать границу, используя псевдоселектор :after и абсолютное позиционирование, например:

.line:after { 
    border-right: 1px solid #000000; 
    content: ""; 
    display: block; 
    margin: 1px; 
    position: absolute; 
    right: -11px; 
    top: 0; 
    bottom: 0; 
} 

.grid_1, .grid_2, .grid_3, .grid_4, .grid_5, .grid_6, .grid_7, .grid_8, .grid_9, .grid_10, .grid_11, .grid_12, .grid_13, .grid_14, .grid_15, .grid_16 { 
    position:relative; 
} 

Вот демо http://jsfiddle.net/andresilich/ZTyf4/show/

Редактировать здесь http://jsfiddle.net/andresilich/ZTyf4/

+0

+1 - Я не понял, что элемент блока абсолютно позиционирован по умолчанию до 100% высоты. –

3

Если вы не хотите, чтобы разделительная линия меняла положение следующей строки DIV, я думаю, что абсолютное позиционирование - ваш лучший выбор. То, что вы можете сделать, это использовать абсолютно позиционированное: после того, как селектор позиционирует что-то относительно нижней части окна, все же не влияет на макет. Это работает для меня, чтобы расположить линию между коробками, не затрагивая макет, просто изменить значение последних четырех свойств, необходимо:

#topbox:after { 
    content: ""; 
    display: block; 
    position: absolute; 
    margin-top: 25px; 
    height: 5px; 
    width: 400px; 
    background-color: #999; 
} 
0

не может понять вашу проблему. Я бы, вероятно, просто использовал правую или левую границу на одном из столбцов и отрегулировал прокладку, чтобы убедиться, что она центрирована между 2.

+0

Между ними есть пространство, и они могут иметь разную высоту. – Andreas

2

Я думаю, что это выполнимо без JQuery. Основной проблемой является учет переменной высоты элементов.

ссылка здесь: http://jsfiddle.net/uqZgt/1/

HTML:

<div class="container"> 
    <div class="box-1"> 
     This box has alot of content. This box has alot of content. This box has alot of content. 
    </div> 

    <div class="box-2"> 
     This box has a little bit of content. This box has a little bit of content. This box has a little bit of content. This box has alot of content. This box has alot of content. This box has alot of content. 
    </div> 
</div> 

CSS:

.container { 
    width: 242px; 
} 

.container div { 
    width: 100px; 
    background: #ff0000; 
    float: left; 
    padding: 10px; 
    border-right: 2px solid #000 
} 

.box-1 + .box-2 { 
    border-right: none; 
    border-left: 2px solid #000 
} 

.box-1 ~ .box-2 { 
    margin-left: -2px 
} 

в этом примере, все дивы в .container DIV имеют 2px твердую черную кайму-вправо. Однако элемент с классом box-2, который непосредственно передает элемент с .box-1, будет иметь черный 2px border-left и no border-right. Пока это создает границу 3px между двумя элементами.

Теперь .box-1 ~ .box-2 выбирает любой .box-1, который непосредственно предшествует .box-2, и устанавливает его по левому краю на -2px. Это перетаскивает его брата из двух пикселей влево, что фактически перекрывает границы обоих элементов.

.container DIV имеет ширину, равную сумме ширины двух элементов (200px), плюс дополнения (10px справа и слева = 20px) плюс ширина одного границ (2px). 242px, поэтому два элемента идеально подходят.

Независимо от того, какой div имеет больше контента, граница будет отображаться в высоту div с наибольшим количеством контента.

+0

Это CSS3? Я раньше не видел '' '. – Andreas

+0

@Andreas Это то, что они называют селектором [General Sibling] (http://www.quirksmode.org/css/contents.html#t30), и это было вокруг с CSS 2.1. Очень умный подход, +1. –

Смежные вопросы