25 Січ 2009
8 відгуків
Коментувати!
trackback

Порада для програмерів-верстальників. Як позбутися проблеми з перескакуванням при різновисоких колонках у div.верстці...
При верстці таблицями цієї проблеми не виникало:

1
2
3
4
5
6
7
8
9
10
11
12
13
<table border="0">
<tbody>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody></table>

Цей код давав нам змогу мати те, що ми намагаємося добитися div'ами.

divproblem1 489x194 div vs table: проблема з колонками

При цьому при збільшенні висоти однієї з чарунок при розширенні її змісту, межа між двома колонками, кожна з яких містить по три чарунки, однаково опускалася вниз...

div'и дозволяють це зробити шляхом створення однакових за шириною блоків:

1
2
3
4
5
6
<div style="float:left;"></div>
<div style="float:left;"></div>
<div style="float:left;"></div>
<div style="float:left;"></div>
<div style="float:left;"></div>
<div style="float:left;"></div>

Але!!! Якщо один з блоків має задовгий текст, то станеться отаке:

1
2
3
4
5
6
<div style="float:left;"></div>
<div style="float:left;"></div>
<div style="float:left;"></div>
<div style="float:left; clear:both;"></div>
<div style="float:left;"></div>
<div style="float:left;"></div>

divproblem2 489x283 div vs table: проблема з колонками

Донедавна я не міг вирішити проблему. Навіть головна сторінка мого сайту має мала таку ваду... Коли текст завеликий, то він вилазив за межі блоку. Бо я, остерігаючись, що блок не перескочив, примусово йому присвоїв певну висоту. Це незручно, бо не можна довший текст додати до вступу...

Сьогодні знайшов вирішення.

divproblem3 489x281 div vs table: проблема з колонками

Все дуже просто... Для того, щоб четвертий блок починався з нового рядка не зважаючи ні на що, ми обрубуємо обтікання третього останнього блоку і примусово вказуємо четвертому початися з нового рядка:

Ніби все правильно. Якщо не так — підправте.

P.S. Дехто висловлював зауваження, що css-властивості прописані прямо в коді. Зразу зауважу, що приклад наведений для наочності і через те все прописане прямо в рядку. Хоча, з теперішніми вимогами до верстки, треба чітко розділяти сам код і css, тому рядків на зразок style="" мати не бажано.


Ключові слова: , ,


Останні дописи

Раджу відвідати в теНЕТах

Плин активності

Останні коментарі

Обмін кнопками
Український національний інтернет-портал «Аратта. Вікно в Україну» «Рукотвори - скарбниця майстрів» Мазепа-фест Мокша ДІЖКА - СВІТ УКРАЇНСЬКОГО КІНО! каталог сайтів Спас! Бойовий звичай Український стиль Я на Блогдозері
UA TOP Bloggers

моя кнопка
bohdan.com.ua - Розробка веб-сторінок українською :: сайти українською мовою
8 відгуків
  1. class="left"

    css

    .left{

    float:left;

    }

    Не використовуй inline стилі — пожалкуєш.

    А можна стовпці взяти в свої div і тоді взагалі не буде зв'язку при зміні висоти. Аналогічно до газетної верстки. КОнтроль висоти можна робити через min-height max-height, а текст

  2. Богдан Гдаль

    @ podarok:

    Про стилі я знаю.. То для простоти розписав.. я пишу все в .css

    Про стовпці можна, але коли ти хочеш, шоб рядки починалися на одному рівні, то шо робити.. Взагалі ідеально було би найти шлях, щоби алгоритм стилю був для всіх однаковий. Щодо min-height та max-height, я це використовував, але ця річ так само не дає відповіді на потреби, коли тобі не тре мати блоки однакової висоти, або ти не можеш спрогнозувати їхню висоу взагалі...

  3. Лисичка

    Навіть не намагаюся це зрозуміти, хіба за півтора метри підглянути в монітор:-)

  4. Вам пощастило, що clear:both допоміг :)

    На тему колонок з float-ами є безліч постів, в яких описують як побороти цю проблему.

    В основному використовують таке рішення:

    .clearfix:after {

    content: ". ";

    display: block;

    clear: both;

    visibility: hidden;

    line-height: 0;

    height: 0;

    }

    .clearfix {

    display: inline-block;

    }

    html [xmlns].clearfix {

    display: block;

    }

    * html .clearfix {

    height: 1%;

    }

  5. Богдан Гдаль

    @ zolotoy:

    Дякую за додаткові поради

  6. Богдан Гдаль

    Ваше рішення не стосується ситуації, яка викладена у мене. Бо у вас li-блоки сталої висоти. У мене приклад протилежний. Тому Ваше «робоче рішення» цю проблему не вирішує.

  7. Богдан Гдаль

    До речі, до юзера zolotoy. clearfix нажаль гірше себе поводить в цій ситуації..

Посилання на цей допис

Напиши відгук

Spam protection by WP Captcha-Free

Сайт ґрунтується на WORDPRESS; Первинна тема: The Unstandard від Derek Punsalan