Просмотр полной версии : Вопрос из 90x по таблице <table>
Всем привет!
Есть самая обычная ужасная таблица.
Как выделить единой рамкой все строки, относящиеся к конкретному пользователю?
Таблица динамическая. Количество строк у каждого разное. И пользователей разное количество.
Нужно добиться такого результата.
Казалось бы простая задачка, а решить не могу ))
https://cdn1.savepice.ru/uploads/2020/1/9/fc3bc5acdbbeb277cf698ff7c678a1e7-full.png
<table>
<tr>
<td>Маша</td>
<td>Карандаш</td>
<td>1</td>
</tr>
<tr>
<td></td>
<td>Ручка</td>
<td>3</td>
</tr>
<tr>
<td></td>
<td>Блокнот</td>
<td>4</td>
</tr>
<tr>
<td></td>
<td>Прищепка</td>
<td>4</td>
</tr>
<tr>
<td>Саша</td>
<td>Шышка</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>Мышка</td>
<td>1</td>
</tr>
<tr>
<td></td>
<td>Батарейка</td>
<td>6</td>
</tr>
<tr>
<td>Коля</td>
<td>Баян</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>Гармонь</td>
<td>1</td>
</tr>
<tr>
<td></td>
<td>Балалайка</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>Гитара</td>
<td>1</td>
</tr>
<tr>
<td>Валя</td>
<td>Скотч</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>Флешка</td>
<td>1</td>
</tr>
<tr>
<td>Ира</td>
<td>Спички</td>
<td>3</td>
</tr>
<tr>
<td></td>
<td>Бычки</td>
<td>9</td>
</tr>
<tr>
<td></td>
<td>Штучки</td>
<td>5</td>
</tr>
</table>
tp-20,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
table table:nth-child(2n + 1){
border : #FF0000 3px solid;
}
table table:nth-child(2n){
border : #0000FF 3px solid;
}
table table{
width: 100%;
margin: 1px;
}
</style>
</head>
<body>
<table>
<tr>
<td>Маша</td>
<td>Карандаш</td>
<td>1</td>
</tr>
<tr>
<td></td>
<td>Ручка</td>
<td>3</td>
</tr>
<tr>
<td></td>
<td>Блокнот</td>
<td>4</td>
</tr>
<tr>
<td></td>
<td>Прищепка</td>
<td>4</td>
</tr>
<tr>
<td>Саша</td>
<td>Шышка</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td>Мышка</td>
<td>1</td>
</tr>
<tr>
<td></td>
<td>Батарейка</td>
<td>6</td>
</tr>
<tr>
<td>Коля</td>
<td>Баян</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>Гармонь</td>
<td>1</td>
</tr>
<tr>
<td></td>
<td>Балалайка</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>Гитара</td>
<td>1</td>
</tr>
<tr>
<td>Валя</td>
<td>Скотч</td>
<td>2</td>
</tr>
<tr>
<td></td>
<td>Флешка</td>
<td>1</td>
</tr>
<tr>
<td>Ира</td>
<td>Спички</td>
<td>3</td>
</tr>
<tr>
<td></td>
<td>Бычки</td>
<td>9</td>
</tr>
<tr>
<td></td>
<td>Штучки</td>
<td>5</td>
</tr>
</table>
<script>
let table;
document.querySelectorAll("tr").forEach(tr => {
const name = tr.querySelector("td").textContent.trim();
if(name) {
table = document.createElement("table");
tr.parentNode.replaceChild(table, tr)
}
if(table) table.append(tr)
})
</script>
</body>
</html>
tp-20, если таблица генерировалась (или писалась руками) с учётом <tbody> и rowspan бы, то таких проблем не было бы!
<style>
table {
border-collapse: collapse;
}
td, th {
border: 1px solid rgba(128, 128, 128, 0.25);
padding: 0.5em;
}
tbody:nth-child(odd) {
box-shadow: inset 0 0 0 3px red;
}
tbody:nth-child(even) {
box-shadow: inset 0 0 0 3px blue;
}
</style>
<table>
<tbody>
<tr>
<td rowspan="4">Маша</td>
<td>Карандаш</td>
<td>1</td>
</tr>
<tr>
<td>Ручка</td>
<td>3</td>
</tr>
<tr>
<td>Блокнот</td>
<td>4</td>
</tr>
<tr>
<td>Прищепка</td>
<td>4</td>
</tr>
</tbody>
<tbody>
<tr>
<td rowspan="3">Саша</td>
<td>Шишка</td>
<td>5</td>
</tr>
<tr>
<td>Мышка</td>
<td>1</td>
</tr>
<tr>
<td>Батарейка</td>
<td>6</td>
</tr>
</tbody>
<tbody>
<tr>
<td rowspan="4">Коля</td>
<td>Баян</td>
<td>2</td>
</tr>
<tr>
<td>Гармонь</td>
<td>1</td>
</tr>
<tr>
<td>Балалайка</td>
<td>2</td>
</tr>
<tr>
<td>Гитара</td>
<td>1</td>
</tr>
</tbody>
<tbody>
<tr>
<td rowspan="2">Валя</td>
<td>Скотч</td>
<td>2</td>
</tr>
<tr>
<td>Флешка</td>
<td>1</td>
</tr>
</tbody>
<tbody>
<tr>
<td rowspan="3">Ира</td>
<td>Спички</td>
<td>3</td>
</tr>
<tr>
<td>Бычки</td>
<td>9</td>
</tr>
<tr>
<td>Штучки</td>
<td>5</td>
</tr>
</tbody>
</table>
Слово «шишка» начинается на «ши»!
Malleys,
спасибо, всё получилось.
теперь возник ещё вопрос
как добиться того, чтобы при наведении курсора (hover) стили css не касались заголовка в таблице th?
В данном случае - нужно чтобы при наведении на заголовок не было красной рамки, а только на строках с именами
https://cdn1.savepice.ru/uploads/2020/1/27/4406af239a37e822ae273041fbeeb321-full.jpg
https://cdn1.savepice.ru/uploads/2020/1/27/6075dfa2b5095aa44168eb55ee478a99-full.png
https://cdn1.savepice.ru/uploads/2020/1/27/b2860879c741bcc5ad4ba07c94a280ec-full.png
<style>
table {border-collapse: collapse;}
td, th {
border: 1px solid rgba(128, 128, 128, 0.25);
padding: 0.5em;
}
table > tbody > tr:first-child {background-color: #999;}
table tbody:nth-child(odd):hover {box-shadow: 0 0 0 2px red inset;}
table tbody:nth-child(even):hover {box-shadow: 0 0 0 2px blue inset;}
</style>
<table>
<tbody>
<th>
<td>Имя</td>
<td>Предмет</td>
<td>Кол-во</td>
</th>
<tr>
<td rowspan="4">Маша</td>
<td>Карандаш</td>
<td>1</td>
</tr>
<tr>
<td>Ручка</td>
<td>3</td>
</tr>
<tr>
<td>Блокнот</td>
<td>4</td>
</tr>
<tr>
<td>Прищепка</td>
<td>4</td>
</tr>
</tbody>
<tbody>
<tr>
<td rowspan="3">Саша</td>
<td>Шишка</td>
<td>5</td>
</tr>
<tr>
<td>Мышка</td>
<td>1</td>
</tr>
<tr>
<td>Батарейка</td>
<td>6</td>
</tr>
</tbody>
</table>
tp-20,
формируйте таблицу по "человечески" и будет вам счастье. :)
<style>
table {border-collapse: collapse;}
td, th {
border: 1px solid rgba(128, 128, 128, 0.25);
padding: 0.5em;
}
table > thead > tr:first-child {background-color: #999;}
table tbody:nth-child(odd):hover {box-shadow: 0 0 0 2px red inset;}
table tbody:nth-child(even):hover {box-shadow: 0 0 0 2px blue inset;}
</style>
<table>
<thead>
<tr>
<th>Имя</th>
<th>Предмет</th>
<th>Кол-во</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="4">Маша</td>
<td>Карандаш</td>
<td>1</td>
</tr>
<tr>
<td>Ручка</td>
<td>3</td>
</tr>
<tr>
<td>Блокнот</td>
<td>4</td>
</tr>
<tr>
<td>Прищепка</td>
<td>4</td>
</tr>
</tbody>
<tbody>
<tr>
<td rowspan="3">Саша</td>
<td>Шишка</td>
<td>5</td>
</tr>
<tr>
<td>Мышка</td>
<td>1</td>
</tr>
<tr>
<td>Батарейка</td>
<td>6</td>
</tr>
</tbody>
</table>
рони, спасибо! правда, как в 90е вернулся))
как в 90е вернулся
Таблицы и сейчас работают, их никто не отменял...
Добрый день! Продолжение темы.
Здесь при адаптивной вёрстке мне нужно уменьшить шрифт некоторых колонок, т.к. текст не помещается.
Но при выборке ячеек нумерация TD сбивается.
Можно ли как-то решить это?
table > tbody > tr > td:nth-child(2) {
outline: 1px solid red;
font: 12px Arial;
color: blue;
}
https://cdn1.savepice.ru/uploads/2020/2/5/579152745c95419cd284fe9985989626-full.png
tp-20, в данном случае можно так... table > tbody > tr > td:nth-last-of-type(2) {
outline: 1px solid red;
font: 12px Arial;
color: blue;
}
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot