Вход

Просмотр полной версии : Выделить строку в таблице через input и label


Bab
24.01.2018, 23:57
Доброго времени суток!
Если кто может - помогите пожалуйста.
При клике на строку должен нажиматься соответствующий input, а строка - выделяться другим цветом. Нужно сделать именно через css, без js.

Таков был план:
(Пробовал увеличить z-index для label и понизить для содержимого - срабатывает, если внутри button, но не tr td)

<style>
label {
color:green;
background-color:white;
}
input:checked + label {
color:white;
background-color:green;
}
</style>
<table>
<input type='radio' id = '1'><label for='1'><tr><td>текст</td><td>таблицы</td></tr></label>
</table>

Близко к истине, но не могу выделить цветом все label, только первый. И не разобрался, как подставить аналог /\d+/ в id.

<style>
label {
color:green;
background-color:white;
}
input[id='2']:checked ~ label[for='2'] {
color:white;
background-color:green;
}
input[id='3']:checked label[for='3'] {
color:white;
background-color:green;
}
</style>
<table>
<tr><td><input type='radio' id = '2' name='name'><label for='2'>текст</label></td><td><label for='2'>таблицы</label></td></tr>
<tr><td><input type='radio' id = '3' name='name'><label for='3'>текст</label></td><td><label for='3'>таблицы</label></td></tr>
</table>

По отдельности эти селекторы работают, вместе - нет.

<style>
label[for='2'] {
color:white;
background-color:green;
}
input[id='3']:checked {
display: none;
}
</style>
<table>
<tr><td><input type='radio' id = '2' name='name'><label for='2'>текст</label></td><td><label for='2'>таблицы</label></td></tr>
<tr><td><input type='radio' id = '3' name='name'><label for='3'>текст</label></td><td><label for='3'>таблицы</label></td></tr>
</table>

рони
25.01.2018, 00:42
Bab,
<!DOCTYPE html>

<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
input:checked + table {
color:white;
background-color:green;
}
label table {
display: inline-block;
}
</style>

</head>

<body>
<table >

<tbody>
<tr>
<td><label ><input type='radio' name="test"><table><tr><td>текст</td><td>таблицы</td></tr></table></label></td>
</tr>
<tr>
<td><label ><input type='radio' name="test"><table><tr><td>текст</td><td>таблицы</td></tr></table></label></td>
</tr>
<tr>
<td><label ><input type='radio' name="test"><table><tr><td>текст</td><td>таблицы</td></tr></table></label></td>
</tr>
</tbody>
</table>
</body>
</html>

Bab
25.01.2018, 11:44
Но так теряется весь смысл от таблицы:(
Может все-таки можно связать эти два селектора?
По отдельности они же срабатывают:

<style>
input[id='1']:checked {
display: none;
}
label[for='2'] {
color:white;
background-color:green;
}
input[id='3']:checked label[for='3'] {
color:white;
background-color:green;
}
</style>
<table>
<tr><td><input type='radio' id = '1' name='name'><label for='1'>текст</label></td><td><label for='1'>таблицы</label></td></tr>
<tr><td><input type='radio' id = '2' name='name'><label for='2'>текст</label></td><td><label for='2'>таблицы</label></td></tr>
<tr><td><input type='radio' id = '3' name='name'><label for='3'>текст</label></td><td><label for='3'>таблицы</label></td></tr>
</table>

Эта таблица из одной из шаблонных страниц сайта, данные из базы, количество столбцов при выводе разное, некоторые надо объединять, если характеристика одинаковая. Выравнивать через блоки очень муторно + с таблицей уже все готово.
В общем-то главный вопрос в том, почему
<label><button></label>, <label><div> - работает, а
<label><td></label> - нет.