2014-09-01 2 views
0

У меня есть некоторые divs, которые не ведут себя так, как я хочу.Поведение divs рядом с eachother

<div class="list-product-with-border"> 
    <div style="width:80px; display:inline-block;">img</div> 
    <div style="display:inline-block;"><b>Productname</b></div> 
    <div style="float:right; width:80px;"> 
     <div> 
      <button id="editBtn">Edit</button> 
     </div> 
     <div> 
      <button id="removeBtn">Remove</button> 
     </div> 
    </div> 
</div> 

JSFiddle link

две проблемы здесь:

  1. окаймленной дивы не достаточно высока: 'удалить' кнопка не визуально окаймленной DIV
  2. Когда «название продукта '- longer, кнопки отображаются под именем div. Если это произойдет, я хочу, чтобы имя продукта было несколько строк. Три div всегда должны быть рядом друг с другом.

Первый и последний DIV имеет фиксированную ширину, средний DIV (название продукта) должен растягиваться с размером окаймленной DIV

+0

для 2 вы можете использовать 'перенос слов: брейк-слово,' вы должны дать Див ширину, но это будет сделать перерыв, когда длина Достигнут div, [ПРИМЕР] (http://jsfiddle.net/ognfy7kq/) –

+0

@ Déjàvu 'средний div (название продукта) должен растягиваться' – Fortega

+0

Да, извините, я просто прочитал последнюю часть вашего вопроса. Nevermind мое решение тогда :) –

ответ

1

Лично я бы использовать таблицу для этого. Каждая строка таблицы является элементом, и у вас есть столбец изображений, столбец имен и столбец действий. Разве это не отличается от таблиц, используемых для счетов-фактур?

Я не могу получить эффект, который вы хотите, но могут быть сделаны улучшения: плавающий элемент должен прибыть до элементов, которые нужно обойти - так в этом случае это должно быть первое, что внутри контейнер list-product-with-border. Кроме того, вы должны либо иметь элемент с clear:both в конце контейнера, либо установить для контейнера overflow:hidden, чтобы заставить плавающий элемент находиться внутри.

+0

Использование нескольких таблиц, это работает ... Спасибо за другие советы, кстати. http://jsfiddle.net/ps8s3h3s/1/ – Fortega

+0

@Fortega Это работает, но это не совсем ... идеально. Вы должны попробовать иметь одну таблицу, каждая из которых является элементом. Может быть сложно получить границы правильно, но это будет иметь большее значение семантически. –

+0

Я знаю, но было бы много добавленных html и css для одного и того же результата: добавление границ (сверху, снизу, иногда слева, иногда справа) td, нижнее поле для trs и divs с margin внутри tds (потому что tds с дополнением сделает «прерванную» границу. Поэтому я, вероятно, оставлю ее так, как сейчас :-) – Fortega

0

Вы хотите, чтобы это было так?

Вот Fiddle

<style> 
.list-product-with-border { 
    padding:3px; 
    width:60%; 
    border:1px solid black; 
    overflow: hidden; 
    height: auto; 
} 
</style> 

И теперь HTML

<div class="list-product-with-border"> 
    <div style="width:80px; display:inline-block;">img</div> 
    <div style="display:inline-block; overflow:hidden; height: auto;"><b>Productname Is the right choice baby, as you can see its just done</b></div> 
    <div style="float:right; width:180px;margin-top: 10px;"> 
     <div style="float: left;"> 
      <button id="editBtn">Edit</button> 
     </div> 
     <div style="float: left;"> 
      <button id="removeBtn">Remove</button> 
     </div> 
    </div> 
</div> 
</div> 
+0

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

+0

См. Отредактированный ответ – Saswat

+0

По-прежнему та же проблема, @Saswat. Возможно, ваш экран намного больше, чем мой ... http://jsfiddle.net/qrvwz0n8/11/ -> имя продукта div отображается под img div, а не рядом с ним – Fortega

0

Вы должны использовать дисплей: настольный ячейки вместо отображения: таблица-столбец и удалить поплавок: левый для .divCell ,

И добавить этот стиль:

.headRow{ 
    display:table-row; 
} 
Смежные вопросы