Quantcast
Channel: Active questions tagged row - Stack Overflow
Viewing all articles
Browse latest Browse all 447

CSS to highlight "nested" rows using th and varied rowspan attributes using the :has selector

$
0
0

I have been playing around with the :has selector to see if I am able to create a pure-css solution for highlighting rows in "tree" views using HTML table. I've seen solutions using <tbody>, but that will only work for a single level of "nesting." How do we handle multiple <th> elements in the same row, and across rows that have varying rowspan values?

I came up with something that works, but requires a selector for every possible value of rowspan that could appear in the table. You can imagine if these tables are dynamically generated, this would not be a solution that could scale.

I wanted to see if anyone else has solved this problem using modern CSS, or could think of a way to iterate on this solution to not need to have a rule per rowspan value.

body {  padding: 50px;}table {  width: 100%;  border-collapse: collapse;}td,th {  padding: 20px;  border: 1px solid black;}tr:hover th,tr:hover td,tr:has(th[rowspan]):has(~ tr:hover) th[rowspan] {  background-color: aqua;}tr:has(th[rowspan="2"]):has(+ tr ~ tr:hover) th[rowspan="2"],tr:has(th[rowspan="3"]):has(+ tr + tr ~ tr:hover) th[rowspan="3"],tr:has(th[rowspan="4"]):has(+ tr + tr + tr ~ tr:hover) th[rowspan="4"],tr:has(th[rowspan="5"]):has(+ tr + tr + tr + tr ~ tr:hover) th[rowspan="5"],tr:has(th[rowspan="6"]):has(+ tr + tr + tr + tr + tr ~ tr:hover) th[rowspan="6"],tr:has(th[rowspan="7"]):has(+ tr + tr + tr + tr + tr + tr ~ tr:hover) th[rowspan="7"],tr:has(th[rowspan="8"]):has(+ tr + tr + tr + tr + tr + tr + tr ~ tr:hover) th[rowspan="8"],tr:has(th[rowspan="9"]):has(+ tr + tr + tr + tr + tr + tr + tr + tr ~ tr:hover) th[rowspan="9"] {  background-color: inherit;}
<table><tbody><tr><th rowspan="5"></th><th rowspan="2"></th><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><th rowspan="3"></th><th rowspan="2"></th><td></td><td></td></tr><tr><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><th rowspan="9"></th><th rowspan="4"></th><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><th rowspan="2"></th><td></td><td></td></tr><tr><td></td><td></td></tr><tr><th rowspan="5"></th><td></td><td></td><td></td></tr><tr><th rowspan="3"></th><td></td><td></td></tr><tr><td></td><td></td></tr><tr><td></td><td></td></tr><tr><td></td><td></td><td></td></tr></tbody></table>

Viewing all articles
Browse latest Browse all 447

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>