2014-11-19 2 views
0

У меня возникли проблемы с созданием (несколько странным) макетом, и я не могу найти пример где-либо точно, что я пытаюсь сделать.CSS несколько относительных divs с абсолютно позиционированными дочерними элементами

Я хотел бы макет несколько блоков, которые выглядят следующим образом:

<div class="rel"> 
    <div class="item">--- a</div> 
    <div class="item">- b</div> 
    <div class="item">c</div> 
</div> 

, где все элементы .item находятся на вершине друг друга, но .rel элементы макета обычно так все они видны. Важно отметить, что все элементы .item внутри .rel будут иметь одинаковую длину, но они могут быть любой длины, поэтому они могут быть перенесены на новую строку. Вот образ того, что я пытаюсь сделать:

enter image description here

Я создал this CodePen.

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

РЕШЕНИЕ

В случае, если кто-то считает себя нуждаясь это действительно странное расположение: CodePen

+0

Я должен задаться вопросом о прецеденте здесь. –

+0

Я не знаю, чего вы пытаетесь достичь. – Turnip

ответ

0

Я являюсь не совсем уверен, что вы пытаетесь достичь, но это, кажется, что вы хотите <div class="item"> для отображения встроенного. вы можете использовать float=left или display=inline-block вместо абсолютного позиционирования. теперь ваши divs находятся на вершине друг друга. Что-то похожее на это

<div class="container"> 
    <div class="rel clearfix"> 
    <div class="item">a</div> 
    <div class="item">b</div> 
    <div class="item">c</div> 
    </div> 
</div> 

и

.container { 
    width: 200px; 
} 
.rel { 
    width: 100%; 
    background: steelblue; 
    margin: 1em; 
    padding: 1em; 
    position: relative; 
} 
.item { 
    color: white; 
    background: gray; 
    margin: .1em; 
    float:left; 
} 
.clearfix:after { 
    visibility: hidden; 
    display: block; 
    font-size: 0; 
    content: " "; 
    clear: both; 
    height: 0; 
    } 
.clearfix { display: inline-block; } 

.rel-2 { 
    width: 100%; 
    background: steelblue; 
    margin: .2em; 
    position: relative; 
} 

проверить его здесь http://codepen.io/anon/pen/vEExvM

+0

Я внес изменения в этот пример и смог добиться того, чего хотел. В примере отображаются элементы .item _next_ друг к другу, и я хотел, чтобы они были на одном уровне (это странно, я знаю). Поэтому я просто изменил .item {float: left} на .item {position: absolute} и работает по желанию.Большое спасибо! – bmyers

0

Используйте это по пункту

display: table-cell; 

и это на отн

display: inline-block; 

Посмотрите на эту скрипку. http://jsfiddle.net/h8rzw65p/

Итого Код:

.container { 
    width: 200px; 
} 

.item { 
    color: white; 
    background: gray; 
    margin: .1em; 
    top: 0px; 
    left: 0px; 
    display: table-cell; 
}  

.rel-2 { 
    top: 0px; 
    left: 0px; 
    width: 100%; 
    background: steelblue; 
    margin: .2em; 
    display: inline-block; 
} 

Или вместо настольного ячейки вы можете сделать это по пункту:

float: left; 
+0

Это близко, но поскольку .item является табличной ячейкой, .item (s) отображались рядом друг с другом, а не друг с другом, как я пытался для достижения. Это было близко, хотя так спасибо! – bmyers

+0

Это потому, что ваш пример показывал их рядом с eachother, так как это было похоже на то, что вы хотели. – FirstLegion

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