Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Помогите пожалуйста с нестандартной задачей css (https://javascript.ru/forum/xhtml-html-css/41439-pomogite-pozhalujjsta-s-nestandartnojj-zadachejj-css.html)

Alexei91 13.09.2013 17:33

Помогите пожалуйста с нестандартной задачей css
 
Вложений: 1
Требуется расположить блоки таким образом как на кртинке. При этом нельзя использовать никакие отступы слева и справа.Надеюсь понятно объяснил:)

danik.js 13.09.2013 21:41

Цитата:

Сообщение от Alexei91
Надеюсь понятно объяснил

Нет.
Цитата:

Сообщение от Alexei91
При этом нельзя использовать никакие отступы слева и справа

Это как?

Если с отступами, то можно так:
<style>
.container{
    width: 600px;
    outline: 1px solid red;
}
.grid{
    margin: 0 0 0 -30px;
    overflow: hidden;
}
.grid .item{
    width: 180px;
    height: 200px;
    margin:  0 0 30px 30px;
    float: left;
    background: blue;
}
</style>

<div class="container">
<div class="grid">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
</div>
</div>


Если блоки разной высоты, то display:inline-block

Alexei91 14.09.2013 01:23

именно в этом и загвоздка, нельзя использовать margin и padding слева и справа для самиих блоков (для общего контейнера можно). Это вообще сложно объяснить:(

danik.js 14.09.2013 03:58

А чем обусловлено такое странное требование?
Тогда только css3 flexbox (с ним еще не разбирался).
Или може быть через display:inline-block, а расстояние между блоками определить через указание ширины пробелов.

Alexei91 14.09.2013 14:42

Это тестовое задание на джуниора, я думаю решили поиздеваться походу-3 день сижу на форумах и штудирую интернет, попробую flexbox.Спасибо за подсказку.

Яростный Меч 14.09.2013 17:18

Может, сделать таблицу, cellspacing и т.д.?

danik.js 14.09.2013 17:44

Но тогда придется разибвать на строки.
Чтобы угодить заданию, можно место отступов можно тупо оборачивать блоки в контейнеры с шириной, немного большей, таким образом получим отступы.
<style>
.container{
    width: 600px;
    outline: 1px solid red;
}
.grid{
    display: table;
    width: 100%;
    border-spacing: 30px;
    margin: 0 -30px;
    table-layout: fixed;
}
.grid .row{
    display: table-row;
}
.grid .item{
    width: 180px;
    height: 200px;
    display: table-cell;
    vertical-align: top;
    background: blue;
}
</style>
 
<div class="container">
<div class="grid">
    <div class="row">
        <div class="item"></div>
        <div class="item"></div>
    <div class="item"></div>
    </div>
    <div class="row">
        <div class="item"></div>
        <div class="item"></div>
    </div>
</div>
</div>

Alexei91 15.09.2013 13:26

Эти все варианты хороши, но в резиновом шаблоне не смый лучший вариант.Спасибо за идеи.Наверно всё-таки напишу, что задание глупое, не возьмут на работу так и хрен с ними.

danik.js 15.09.2013 14:59

Можно ведь заменить пиксели на проценты.
Цитата:

Сообщение от Alexei91
Наверно всё-таки напишу, что задание глупое, не возьмут на работу так и хрен с ними.

Лучше предложи несколько вариантов, хоть каких нибудь. Это лучше чем сказать что они дураки )

Яростный Меч 15.09.2013 19:39

Цитата:

Сообщение от Alexei91
нельзя использовать margin и padding слева и справа для самиих блоков

а border можно? :)


Часовой пояс GMT +3, время: 05:08.