Jump to content
  • 0

Расположение блоков рядами


dangler
 Share

Question

Здравствуйте!

У меня такая ситуация.

Вот, нарисовал недавно дизайн сайта:

spice0.jpg

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

сам сайт:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Магазин спайса</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<link rel="stylesheet" type="text/css" href="spiceshop.css" />
</head>
<body>

<div id="centerLayer">

<div id="top">
<img src="top.jpg" height="119" width="672" alt="" title="" />
</div>

<div id="but">
<a href="page1.html"><img src="but1.jpg" alt="" title="" /></a>
</div>

<div id="but">
<a href="page2.html"><img src="but2.jpg" alt="" title="" /></a>
</div>

<div id="but">
<a href="page3.html"><img src="but3.jpg" alt="" title="" /></a>
</div>

<div id="but">
<a href="page4.html"><img src="but4.jpg" alt="" title="" /></a>
</div>

<div>
<a href="page5.html"><img src="but5.jpg" alt="" title="" /></a>
</div>

<div id="topline">

</div>


<div id="shopback">
<div id="shopframe">

<div id="goods">
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet
dolore magna aliguam erat volutpat.
</div>

<div id="goods">
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet
dolore magna aliguam erat volutpat.
</div>

<div id="goods">
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet
dolore magna aliguam erat volutpat.
</div>

<div id="goods">
2<br>text<br>text2<br>text
</div>

<div id="goods">
2<br>text<br>text2<br>text
</div>

<div id="goods">
2<br>text<br>text2<br>text
</div>


<div id="goods">
2<br>text<br>text2<br>text
</div>

<div id="goods">
2<br>text<br>text2<br>text
</div>


</div>
</div>
</div>
</body>
</html>

и цсс:

body {
background: url(sersv16_gr.jpg);
margin: 0; padding: 0;}

#centerLayer {
width: 672px; /* Ширина слоя в пикселах */
height: 100%;
margin: 0 auto; /* Отступ слева и справа */
background: #ffffff; /* Цвет фона */
padding: 0; /* Поля вокруг текста */ }

img {
margin: 0;
padding: 0;
border: 0;}

#top {
width: 100%; /* Ширина слоя в пикселах */
height: 119px;
margin: 0; /* Отступ слева и справа */
background: #ffffff; /* Цвет фона */
padding: 0; /* Поля вокруг текста */}

#topline {
width: 100%;
height: 8px;
margin: 0; /* Отступ слева и справа */
background: url(topback.gif); /* Цвет фона */
padding: 0; /* Поля вокруг текста */}

#but {
float:left;
margin: 0; /* Отступ слева и справа */
background: #ffffff; /* Цвет фона */
padding: 0; /* Поля вокруг текста */ }

#shopback {
height: 100%;
background: #c8d6b5; /* Цвет фона */
padding: 7px; /* Поля вокруг текста */ }

#shopframe {
border: 1px solid #406a20;
height: 100%;
background: #c8d6b5; /* Цвет фона */
padding: 0; /* Поля вокруг текста */ }

#goods {
float:left;
width: 130px;
border: 1px solid #a7ba8e;
height: 170px;
background: #dce4d2; /* Цвет фона */
padding: 6px; /* Поля вокруг текста */
margin: 16px 0 16px 16px;
}

но результат получился не совсем таким, как я ожидал:

spice1.jpg

то блок с фоном закрылся раньше, чем началось содержимое, хотя в коде он закрывается позже. я решил, что это из-за значения свойства float: left. я добавил в конце каждого ряда блок со значением clear:

хтмл:

<div id="edge">
2<br>text<br>text2<br>text
</div>

цсс:

#edge {
clear:left;
width: 130px;
border: 1px solid #a7ba8e;
height: 170px;
background: #dce4d2; /* Цвет фона */
padding: 6px; /* Поля вокруг текста */
margin: 16px 0 16px 16px;
}

стало получше, но все равно неправильно:

spice2-1.jpgspice2-2.jpg

то есть после каждого clear строчка пропускается, а, если в конце нет блока с clear, тогда остальные уходят за фон..

тогда я сделал все блоки просто #goods и в конце добавил блок #edge (у которого clear:left).

получилось довольно близко к тому, что нужно, но все равно не то...:

spice3.jpg

В связи с этим, у меня общий вопрос: как же сделать так, чтобы блоки располагались, как в дизайне?

Ну и, более частные: почему после clear:left происходит перенос на новую строку, но без него фоновый блок закрывается раньше времени?

И второй - почему расстояние между блоками по вертикали отличается и как-то не всегда совпадает с горизонтальным, хотя у всех блоков одинаково margin: 16px 0 16px 16px ?

Очень длинный получился вопрос.. ) Но я надеюсь, что тема интересна не только мне, поэтому был бы очень признателен знатокам за ответы!

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0
Если честно, я не вчитывался в твою тему, но по картинкам походу понял, что тебе вот это может нужно?

div#centerLayer { overflow: hidden; zoom:1; - /* для ИЕ6 */}

хм, не совсем понял.. :lol: у меня просто есть уже див centerLayer, он общий для всего, чтобы содержимое по центру выравнивалось.. ион работает нормально.. а не получается именно расположить блоки в несколько горизонтальных рядов..

или, если добавить в мой centerLayer свойство overflow: hidden; zoom:1;, то все заработает? или только в ИЕ6? хм, хм. я просто в мозиле проверяю..

Link to comment
Share on other sites

  • 0
погоди, у меня всё работает нормально, блоков даже добавил, всё норм

то есть у тебя не такая картинка:

spice3.jpg

??

то есть, один блок снизу всегда один? я, если добавляю 1 блок div id="goods" до последнего div id="edge" у меня это блок встает в новой строке, то есть, получаются снизу 2 строки и в каждой только по 1 блоку слева. если добаляю еще, то начинает заполняться эта предпоследняя строка, в последней всегда остается один блок.. и при этом расстояние по вертикали между последней строкой и предпоследней в 2 раза меньше, чем остальные (см. рисунок)

Link to comment
Share on other sites

  • 0
Не за что, беги учиться :lol:

раз уж учиться, то можно еще вопрос? ;) я вот тут прочитал:

hidden Отображается только область внутри элемента, остальное будет обрезано.

И как-то не понял совсем, как это связано с моим блоком.. а что "остальное будет обрезано"?

И вообще: "Свойство overflow управляет отображением содержания блочного элемента, если оно целиком не помещается и выходит за область заданных размеров." То есть у меня не помещалось содержимое? Но я ведь не задавал фиксированной высоты и ширины, почему же оно не помещалось? Хм..

Link to comment
Share on other sites

  • 0
раз уж учиться, то можно еще вопрос? :lol: я вот тут прочитал:

hidden Отображается только область внутри элемента, остальное будет обрезано.

И как-то не понял совсем, как это связано с моим блоком.. а что "остальное будет обрезано"?

И вообще: "Свойство overflow управляет отображением содержания блочного элемента, если оно целиком не помещается и выходит за область заданных размеров." То есть у меня не помещалось содержимое? Но я ведь не задавал фиксированной высоты и ширины, почему же оно не помещалось? Хм..

Будет обрезано, если у блока заданы фиксированные размеры. В противном случае вступает в силу другой алгоритм.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy