2014-11-16 3 views
0

Это может быть супер-тривиальный ответ, но я не могу показаться, что его вокруг.Позиционирование переменного числа пролетов внутри div

У меня есть объект div, который содержит до n элементов span (число является переменной и может быть между 1 и, например, 3). Я хотел бы, чтобы промежутки располагались в нижнем левом углу левого плавающего div (part1). Пролеты должны располагаться горизонтально, с переменной шириной.

<div class="card"> 
<span class="meta-data"> 
    <span class="tag">Something </span> 
    <span class="tag">Something else </span> 
    <span class="tag">Something else else</span>  
</span> 
<div class="part1"></div> 
<div class="part2"></div> 

Вот JS Fiddle простой пример кода (обратите внимание что позиционирование это набросать правильно.): http://jsfiddle.net/fritschs/h5n04gzo/

Я думал об использовании селектора п-й детский однако, в css и позиции абсолютного каждого диапазона, как бы я подходил к этому с переменным числом пролетов?

Спасибо за любой вход

+0

стека по горизонтали? или стек вертикально? –

+1

Вы хотите, чтобы теги располагались относительно div.part1, а не их родителей? Было бы проще, если бы промежутки были внутри div.part1 – roman

+0

Извините за стек вертикально :) – serena

ответ

1

Check JsFiddle снова ... Я просто добавил эти строки:

.card{position:relative;} 
.card .meta-data{position:absolute; bottom:0; left:0;} 
.card .meta-data span{ float:left; margin-right:10px;} 
1

Там 3 вещи, чтобы сделать здесь.

  1. Установите карту position:relative, так что вы можете контролировать абсолютное позиционирование meta-data - see this page.

  2. Установите meta-data на номер bottom:0, чтобы переместить его в нижнюю часть card.

  3. Установите tag на номер float:left;, чтобы уложить их по горизонтали. Вы также можете добавить margin:right, чтобы оставить их немного, если хотите.

.card { 
 
    width: 400px; 
 
    height: 200px; 
 
    position:relative; 
 
} 
 
.part1 { 
 
    float:left; 
 
    height: 100%; 
 
    width: 50%; 
 
    background-color: blue;  
 
} 
 
.part2 { 
 
    float:right; 
 
    height: 100%; 
 
    width: 50%; 
 
    background-color:red;  
 
} 
 

 
.meta-data { 
 
    position: absolute; 
 
    bottom:0; 
 
} 
 

 
.tag { 
 
    display: block; 
 
    float:left; 
 
    margin-right:2px; 
 
    background-color: grey; 
 
    font-size: 0.625rem; 
 
}
<div class="card"> 
 
    <span class="meta-data"> 
 
     <span class="tag">Something </span> 
 
     <span class="tag">Something else </span> 
 
     <span class="tag">Something else else</span>  
 
    </span>  
 
    <div class="part1"> 
 
    </div> 
 
    <div class="part2"></div> 
 
</div>

+0

Спасибо за мельницу. Это работает. Один крошечный вопрос, почему все ширины пролета, см. Мою обновленную скрипту js: http://jsfiddle.net/fritschs/h5n04gzo/ – serena

+0

Это потому, что они установлены как 'display: block', поэтому они принимают полная ширина родительского элемента ('meta-data'). И поскольку 'meta-data' является' position: absolute', его ширина такая же, как и у самого широкого. – Rhumborl

+0

Спасибо Rhumborl. – serena

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