Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Несколько таблиц с плавающей шапкой на странице (https://javascript.ru/forum/dom-window/46257-neskolko-tablic-s-plavayushhejj-shapkojj-na-stranice.html)

Hurray 03.04.2014 12:47

Несколько таблиц с плавающей шапкой на странице
 
На странице есть несколько таблиц одна под другой. Нужно чтобы верхняя строчка каждой таблицы ездила вверх-вниз в пределах данной страницы вслед за вертикальной перемоткой окна браузера. Можно это сделать только с помощью css или надо на JS?

nice_try 03.04.2014 12:52

js нужен, не уверен, что это реализуемо для таблиц сверстанных через теги table tr td

Hurray 03.04.2014 14:43

Цитата:

Сообщение от nice_try (Сообщение 305811)
js нужен, не уверен, что это реализуемо для таблиц сверстанных через теги table tr td

А если я каждой шапке таблицы добавлю двойника с position: fixed, который будет отображаться или нет в зависимости от положения окна браузера?
<table>
	<tbody>
		<tr class="t_head" id="1">
			<th style="width: 70px;">Период</th>
			<th style="width: 15px;"></th>
			<th>DBL</th>
			<th>SGL</th>
			<th>Реб. 03-11</th>
		</tr>
...

if($(".t_head#1").length>0) {
	$(".t_head#1").clone().insertAfter(".t_head#1").addClass("t_head_fixed");
}

Осталось только сделать проверку того, что верхняя граница окна пересекает таблицу. И ещё у каждой шапки свой id. Код я привёл для шапки с id=1. Как сделать, чтобы клон создавался для каждой шапки по её id?

рони 03.04.2014 19:23

Hurray,

Hurray 03.04.2014 19:43

Цитата:

Сообщение от рони (Сообщение 305912)
Hurray,

Да, именно это мне и надо! Можно код?

рони 03.04.2014 20:00

Hurray,
в инете полно плагинов типа http://www.novasoftware.com/Download...ixedTable.aspx
если вам понравился мой код - меняю на тугрики - предложения в личку :thanks:

Hurray 04.04.2014 11:23

Когда делаю
$(".t_head#1").clone().insertAfter(".t_head#1").addClass("t_head_fixed");
, то как сделать, чтобы все ячейки плавающей строки были по ширине как в исходной строке?

рони 04.04.2014 11:31

Цитата:

Сообщение от Hurray
, то как сделать, чтобы все ячейки плавающей строки были по ширине как в исходной строке?

1 через css задать ширину ячейкам
2 обойти все ячейки 1 строки таблицы и ширину присвоить каждой ячейке клона соотвественно

Hurray 04.04.2014 12:09

Можно ли получить разом все css свойства элемента и передать их другому элементу?

Hurray 04.04.2014 12:22

как растянуть теги <th> на всю ширину родительского <tr>? а то они все прижались к левому краю внутри него.

рони 04.04.2014 12:22

Цитата:

Сообщение от Hurray
Можно ли получить разом все css свойства элемента и передать их другому элементу?

а зачем? кроме ширины остальное через таблицу стилей

рони 04.04.2014 12:28

Hurray,
может без th ? на одних td

Hurray 04.04.2014 13:02

Цитата:

Сообщение от рони (Сообщение 306005)
1 через css задать ширину ячейкам
2 обойти все ячейки 1 строки таблицы и ширину присвоить каждой ячейке клона соотвественно

Этим скриптом ширина каждой ячейки копируется из стандартной строки в фиксированную:
i2 = 1;
	$("table#" + i + " .t_head th").each(function (){
		arw[i2] = $(this).width();
		i2 ++;
	})
	i2 = 1;
	$("table#" + i + " .t_head.t_head_fixed th").each(function (){
		$(this).width(arw[i2]);
		i2 ++;
	})

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

Hurray 04.04.2014 13:10

Цитата:

Сообщение от рони (Сообщение 306019)
Hurray,
может без th ? на одних td

Как можно поменять все th на td с сохранением атрибутов и содержимого?

рони 04.04.2014 13:37

Hurray,
можно и с th )))
добавил th в первую таблицу

Hurray 04.04.2014 16:11

Объясните мне, почему при таком коде ширина столбцов не совпадает?
В строке, которая не fixed, фактическая ширина совсем не та, которая указана в атрибуте style. Проверял в firebug. В стилях одна ширина, в макете - другая.
<tr class="t_head" style="width: 801px;">
	<th style="width: 72px;">Период</th>
	<th style="width: 16px;"></th>
	<th style="width: 45px;">DBL</th>
	<th style="width: 73px;">3 человека</th>
	<th style="width: 73px;">4 человека</th>
	<th style="width: 65px;">5 человек</th>
	<th style="width: 65px;">6 человек</th>
	<th style="width: 65px;">7 человек</th>
	<th style="width: 65px;">8 человек</th>
</tr>
<tr class="t_head t_head_fixed" style="width: 801px;">
	<th style="width: 72px;">Период</th>
	<th style="width: 16px;"></th>
	<th style="width: 45px;">DBL</th>
	<th style="width: 73px;">3 человека</th>
	<th style="width: 73px;">4 человека</th>
	<th style="width: 65px;">5 человек</th>
	<th style="width: 65px;">6 человек</th>
	<th style="width: 65px;">7 человек</th>
	<th style="width: 65px;">8 человек</th>
</tr>

рони 04.04.2014 16:24

Hurray,
содержимое растягивает

Hurray 04.04.2014 16:31

width ставится скриптом
while ($("table#" + i).length) {
		var i2 = 1;
		$("table#" + i + " .t_head th").each(function (){
			if(i2 > 2){
				$(this).css('width', $(this).width());
			}
			i2 ++;
		})
}
Как сделать, чтобы ширина измерялась с учетом этого растягивания?

рони 04.04.2014 16:34

Hurray,
напишите полноценный макет с html здесь или в песочнице http://learn.javascript.ru/play

рони 04.04.2014 16:36

Hurray,
$(this).css('width', $(this).width()); -- это типа установить ширину не ширее прежнего

Hurray 04.04.2014 16:53

вот пример: http://lucky-brand.ru/hotels/seychel...ia_Resort.html

рони 04.04.2014 17:07

Hurray,
по ссылке фиксируется div

Hurray 04.04.2014 17:13

Цитата:

Сообщение от рони (Сообщение 306099)
Hurray,
по ссылке фиксируется div

Не понял, поясни

рони 04.04.2014 17:20

Hurray,
а что нужно увидеть по вашей ссылке?

Hurray 04.04.2014 17:24

таблицы на вкладке "цены".

рони 04.04.2014 17:38

Hurray,
ок видел -- берёте нужные ячейки клона и нужные ячейки таблицы -- и делаите ширину одинаковой -- в чём проблемато ?

рони 04.04.2014 19:03

Hurray,
:write: добавил border ячейкам для наглядности

Hurray 06.04.2014 09:48

Цитата:

Сообщение от рони (Сообщение 306133)
Hurray,
:write: добавил border ячейкам для наглядности

а чего вкладки стали такие большие в высоту?

рони 06.04.2014 10:22

Цитата:

Сообщение от Hurray
а чего вкладки стали такие большие в высоту?

так кроме Google Chrome есть и другие браузеры :)


Часовой пояс GMT +3, время: 10:01.