Просмотр полной версии : Помогите пожалуйста с нестандартной задачей css
Alexei91
13.09.2013, 17:33
Требуется расположить блоки таким образом как на кртинке. При этом нельзя использовать никакие отступы слева и справа.Надеюсь понятно объяснил:)
danik.js
13.09.2013, 21:41
Надеюсь понятно объяснил
Нет.
При этом нельзя использовать никакие отступы слева и справа
Это как?
Если с отступами, то можно так:
<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
Можно ведь заменить пиксели на проценты.
Наверно всё-таки напишу, что задание глупое, не возьмут на работу так и хрен с ними.
Лучше предложи несколько вариантов, хоть каких нибудь. Это лучше чем сказать что они дураки )
Яростный Меч
15.09.2013, 19:39
нельзя использовать margin и padding слева и справа для самиих блоков
а border можно? :)
Alexei91
15.09.2013, 20:41
Я тоже думал про border. Задачу решает. Только глупо это как-то.
notsobad
25.09.2013, 02:13
Как вариант в блоках указать position:relative создать с помощью div:before div:after создать
div:after {
content: ' ';
display: block;
background: #fff;
position: absolute;
и указать необходимую ширину и высоту, а также координаты absolute
}
Двумя элементами достичь отступы левоправо верхниз
Я тоже думал про border. Задачу решает. Только глупо это как-то.
У буржуев достаточно часто используется, и в частности в бордер нередко вставляют border-image
danik.js
25.09.2013, 03:14
Deff, а чем их margin/padding не устраивает?
Alexei91
25.09.2013, 15:54
вот самому интересно, отослал с разными вариантами,которые предложили на форуме, ответа пока нет, но я попросил прокомментировать некоторые пункты задания, очень интересно что напишут.
vBulletin® v3.6.7, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot