таблица на дивах

flash-vkv

Новичок
таблица на дивах

в обшем пытаюсь сделать сетку (те grid) на дивах. Пока делаю ячейкам float: left; но обратил внимание на другой способ. На http://www.activewidgets.com/ видел эту реализацию.

схема html проста, а что за махинации в css пока не понял
Код:
<div class="row">
    <div class="cell">bla bla</div>
    <div class="cell">bla bla</div>
    <div class="cell">bla bla</div>
</div>
Под FF разобрал что в css написать, а вот под IE немогу понять, крутил так и так вроде делал все также как и там да тока так и не заработало. Поиск к путному пока так-же не привел.
 

Vladson

Сильнобухер
denver
Вопрос видимо не в том что использовать, а как сделать именно это... (то есть на упрощенном примере понять как оно работает)
 

dimagolov

Новичок
Автор оригинала: denver
Молодой человек, а чем <table> плох?
ну хотябы тем что на div-ах можно сделать таблицу которая бы скролироваласть, то есть была бы больше чем поле ее отображения.
 

flash-vkv

Новичок
есть свое приимущество , прокрутка не к этому числу. Первое это число вложений , аналог на таблицах выгледил бы так
Код:
<table><tbody><tr><td><div>
а блоками
Код:
<div class="grid"><div class="body"><div class="row"><div class="cell">
. Выигрыш всеже в один элемент а производительность увеличивается в разы. Потом можно делать вложения
Код:
<div class="grid"><div class="body"><div class="l1"><div class="l2">...итд <div class="row"><div class="cell">
таблицами такое не сделаеш. Также можно вставлять между строками другие конструкции .
Выгода есть потому именно так надо. Мож кому что скажет для мозилы они используют display: -moz-inline-box; для ячеек и display: -moz-box; для строк но для ие это естественно не работает. В IE вобше не понять как, вроде пробую все один к одному но максимум что выходит это ширина ячейке равна его содержимому те display: inline; а не width:200px; .

-~{}~ 06.03.07 11:25:

в общем получилось но всеже не все
Мож кто знает как сделать чтоб все выглядело именно как в IE было-бы здорово
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.rows {
	display: block;
	background: #FFCCFF;
	white-space:nowrap;
	display:inline-table;
	width:100%;
	margin-top: 1px;
	border: 1px solid #003399;
}
.rows {
	display: -mox-box;
}
.rows .cell{
	display:inline;
}
.rows > .cell{
	display: -moz-inline-box;
	display:inline-block;
	display: expression("inline");
}

.cell {
	display:inline-block;
	height:30px;
	line-height:17px;
	overflow:hidden;
	vertical-align:top;
	width:300px;
	background: #FFFFFF;
	border: 1px solid #999999;
	margin: 0px;
	padding:0px;
	position: relative;
}
.info {
	background: #00FF99;
	margin-top: 5px;
	margin-left: 4px;
}
.infoabs {
	background: #99CCCC;
	margin-top: 5px;
	margin-left: 4px;
	position: absolute;
	top: 0px;
	right: 0px;
}

-->
</style>
</head>

<body>
<div class="rows"><span class="cell"><div class="info">info info</div><div class="infoabs">info info</div></span><span class="cell">bla bla</span><span class="cell">bla bla</span></div>

<div class="rows"><div class="cell"><div class="info">info info</div><div class="infoabs">info info</div></div><div class="cell">bla bla</div><div class="cell">bla bla</div></div>

</body>
</html>
 

zerkms

TDD infected
Команда форума
ну хотябы тем что на div-ах можно сделать таблицу которая бы скролироваласть, то есть была бы больше чем поле ее отображения.
поместить таблицу в див с прокрутками и выводить наконец табличные данные предназначенными для этого средствами
 

flash-vkv

Новичок
zerkms про скрол это конечно глупость была сказана. Но таблицы не всегда себя оправдывают. В данном случии прорисовка подобных таблиц в разы бысрее чем тоже самое предназначенными для этого средствами.

вопрос остается в силе. Если под ИЕ получилось как раз то что и требовалось, то под FF и Оперой желанного результата не получается сделать
 

denver

?>Скриптер
flash-vkv
1. Таблицы "медленнее" чем дивы из-за того что у них есть преимущество которого дивами не сделаешь. А именно подгонка ширины под самую широкую/узкую колонку. Отключается это с table-layout:fixed И работает далее "быстрее" (это если мы говорим об Intel 486 каком-нибудь)

2. Экономим на тэгах ценой классов? class="row" class="row" class="row"? ну ну.

3. <tbody> обязателен только в одном случае (и то только для IE), но тут уверен не тот случай. Да и потом этот тэг порой полезен - чтобы отделить ячейки <thead> и <tfoot> от остальных. Но если не надо - не пользуй.

-~{}~ 06.03.07 11:24:

есть TR (table, td) с уже прописанными нужным display:table-row на уровне любого браузера. Нет, надо выдумать <div class="row"> с таким CSS, чтобы див вел себя точь-в-точь как <tr>. То же самое с остальными table-cell и т.п. И что дальше? На чем экономия-то? Эффект тот же, кода больше, времени ушло больше :) То что средствами CSS из <span> можно сделать <h1> бесспорно, но зачем???
 

flash-vkv

Новичок
<tbody> - он всегда присутствует в DOM структуре документа
классы - так или иначе придется вставлять, тяги голыми редко получается оставить
а я говорю медлинее и это не просто с потолка. К примеру частенько в td помешают div в этом диве есть элементы с float: right; такую конструкцию я делал и тестил нагрузка в 2-3 раза.
table-layout:fixed; тоже смотрел как грузит если в FF и Opere вроде как приимущество совсем небольшое, то уже в IE его совсем нет.
Потом спозиционируйте элемент с position: absolute; относительно ячейки таблицы чтоб было top:0px;right:0px; , естественно этот элемент внутри ячейки расположен. без еше одного вложения не обойтись.

зачем - Скорость. Баузер это не феррари летает но ненастока быстро как хотелось-бы. И я говорю не про 8086, а про реальные современные маши, в добавок с включиным сглаживанием шрифтов.
В общем просто хотел сделать как на том сайте. Не получить добиться тех-же возможности что и при использования float:left; и в итоге получил чтота вроде table-layout:fixed; В итоге получилось след. Сам не пойму как это работает :) но что странно работает именно только так.
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.body {
	background: #FFFF99;
	overflow: auto;
	position: relative;
	height: 300px;
	width: 100%;
	border: 1px solid #003366;
}

.rows {
	background: #FFFFFF;
	white-space:nowrap;
	display:inline-table;
	margin-top: 1px;
	left:0px;
	border-top: 1px solid #003399;
	border-bottom: 1px solid #003399;
	left:0px;
	right:0px;
	min-width:100%;
	width:100%;
	min-width: expression("auto");
	width: expression("auto");
}
.rows:not(html) {width:auto;}

.rows {
display:-moz-box;	
}

.rows .cell{
	display:inline;
}
.rows > .cell{
	display:inline-block;
	display: expression("inline");
	display: -moz-inline-box;
}
.cell {
	display:inline-block;
	height:20px;
	line-height:17px;
	overflow:hidden;
	vertical-align:top;
	width:200px;
	margin: 0px;
	position: relative;
	padding-left: 1ex;
	border-right-width: 1px;
	border-right-style: solid;
	border-right-color: #999999;
}
.column-0 {
	background: #DDDDDD;
	width:50px;
	text-align: right;
	padding-right: 1ex;
	padding-left: 0ex;
}
.cell.column-1 {
	width:350px;
}
.cell.column-2 {
	width:150px;
}

-->
</style>
</head>

<body>
<div class="body">
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
		<div class="rows"><div class="cell column-0">info info</div><div class="cell column-1">bla bla</div><div class="cell column-2">bla bla</div></div>
</div>
</body>
</html>
 

flash-vkv

Новичок
это примерно из тойже оперы. Метод с использованием display:inline-... несовсем себя оправдывает. Приемушеств перед таблицей практически нет кроме разве что вложения можно использовать для создания treelist. Но приэтом кросбраузерность добиться очь сложно. В общем на float: left; единственный который себя оправдывает, хоть и хлопотный.
 
Сверху