Как правильно использовать стиль float?
На экране необходимо расположить прямоугольники (для простоты все одинакового размера) таким образом, чтобы они заполняли доступное пространство окна браузера. Если применить к прямоугольникам (DIV_ам) стиль float:left, то всё понятно и красиво. Вот код:
<html> <body style="overflow:hidden"> <script> var m = document.createElement('DIV'); m.style.cssText = 'height:300px; width:100%; background-color:#CCCCFF; overflow:hidden'; document.body.appendChild(m); function one(i) { var d = document.createElement('DIV'); d.style.cssText = 'height:20pх; width:100px; margin:5px; text-align:center; background-color:#FFAAAA; float:left'; d.innerHTML = i; m.appendChild(d); }; function test() { for (var i=1; i <= 100; i++) one(i); }; test(); </script> </body> </html> В данном случае прямоугольники выстраиваются слева направо по горизонтали и при достижении правого края экрана построение идет вниз. А мне надо, чтобы прямоугольники выстраивались сверху вниз и при достижении нижнего края экрана построение продолжалось слева направо. Скроллера не должно быть. Использование float:top естественно дает другой эффект. Что-то не соображу, как сделать? |
добавьте стили для разбивки текста на несколько колонок для первого DIV
<html> <style> body > div { -moz-column-width:110px; -webkit-column-width:110px; column-width:110px; } </style> <body style="overflow:hidden"> <script> var m = document.createElement('DIV'); m.style.cssText = 'height:300px; width:100%; background-color:#CCCCFF; overflow:hidden;'; document.body.appendChild(m); function one(i) { var d = document.createElement('DIV'); d.style.cssText = 'height:20pх; width:100px; margin:5px; text-align:center; background-color:#FFAAAA; float:left;'; d.innerHTML = i; m.appendChild(d); }; function test() { for (var i=1; i <= 100; i++) one(i); }; test(); </script> </body> </html> а для IE<10 http://www.xiper.net/collect/js-plug...ti-column.html |
Pavel M.,
да, спасибо, вот только что делать с IE8? А еще, как ни странно, в Opera этот пример тоже не работает. Хотя многоколоночность в Опере я раньше проверял - работало. P.S. нашел js-хак "css3-multi-column.js" для IE (делает многоколоночность ) - жуть. 979 строк... :( |
Цитата:
|
Цитата:
вместо float: left сделайте, например display: inline-block; |
Да, спасибо. Но Вы знаете, я последнее время всё больше отказываюсь от стиля float, да и от всяких inline в верстке, несмотря на то, что использовать тег <table> считается устаревшей технологией. Приходится опять использовать <table>. Почему? -Народ жалуется, что при копировании с сайта таблиц (через clipboard) в MS Excel или в MS Word получается каша (на float:...). А при использовании <table> - всё нормально.
Вот возьмите, например отсюда http://www.missfit.ru/diet/table-calory/ скопируйте таблицу в Excel - тут будет нормально. Поэтому я подумываю о следующем механизме своей же задачи: При размещении прямоугольников сверху вниз - слева направо не используем ни многоколоночность, ни флоат, ни инлайн, а сначала получаем высоту и ширину внешнего DIV_а и делаем расчет количество столбцов и строк в таблице; строим <table><tr><td>... Конечно, при onresize придется удалять таблицу и строить ее заново. Но при этом избавляемся от проблем в IE и проблем с копированием. |
Часовой пояс GMT +3, время: 15:13. |