Reputation: 41
I want to change the background color of all the td before a particular td on hover on that particular td.
So that when I hover over the icon all the icons and text before it in that particular row change their background.
Can anyone please suggest how to achieve it.
Here is my HTML
<div class="table-responsive">
<table class="table table-condensed">
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
</div>
and Style
<style type="text/css">
.table {
width: 310px;
}
td:nth-child(1) {
width: 200px;
}
.table-responsive {
border: 1px solid;
width: 340px;
padding: 20px 30px 10px 10px;
border-radius: 5px;
}
td:nth-child(2),
td:nth-child(3),
td:nth-child(4) {
width: 30px;
}
tr:active {
color: orange;
}
td:hover {
background-color: #00BD9A;
}
</style>
Upvotes: 0
Views: 969
Reputation: 21
Greetings,
I found a way to do this through javascript (JQuery) you also need to add a class to each td under the tr
HTML
<div class="table-responsive">
<table class="MyTable">
<tr>
<td class="C1">Lorem ipsum dolor sit amet,</td>
<td class="C2"><i class="fa fa-gift">1</i></td>
<td class="C3"><i class="fa fa-gift">2</i></td>
<td class="C4"><i class="fa fa-gift">3</i></td>
<td class="C5"><i class="fa fa-gift">4</i></td>
</tr>
<tr>
<td class="C1">Lorem ipsum dolor sit amet,</td>
<td class="C2"><i class="fa fa-gift">1</i></td>
<td class="C3"><i class="fa fa-gift">2</i></td>
<td class="C4"><i class="fa fa-gift">3</i></td>
<td class="C5"><i class="fa fa-gift">4</i></td>
</tr>
</table>
CSS
.MyTable td{
width: 30px;
}
.MyTable td:nth-child(1) {
width: 200px;
}
.table-responsive {
border: 1px solid;
width: 340px;
padding: 20px 30px 10px 10px;
border-radius: 5px;
}
tr:active {
color: orange;
}
Javascript (You Should include JQuery Library)
$('*[class*="C"]').hover(function(){
var cls = $(this).attr("class");
$(this).parents("tr");
var j = cls.substr(cls.indexOf("C")+1,1);
for(var i=1;i<=j;i++){
var Col = ".C"+i;
$(this).parents("tr").find(Col).css("background-color","#00BD9A");
}
},function(){
var cls = $(this).attr("class");
$(this).parents("tr");
var j = cls.substr(cls.indexOf("C")+1,1);
for(var i=1;i<=j;i++){
var Col = ".C"+i;
$(this).parents("tr").find(Col).css("background-color","#fff");
}
});
Explanation :
Using .hover Jquery function to style each col i use a loop to style starting from first col to the col where the mouse is hovered at also on hover removing i used exact same code but to style background back to white (you may change the background color to inherit or for your own )
Regards
Upvotes: 2
Reputation: 87191
You can use a script, or like this, using a pseudo element
.table {
width: 310px;
overflow: hidden; /* added */
}
td:nth-child(1) {
width: 200px;
}
.table-responsive {
border: 1px solid;
width: 340px;
padding: 20px 30px 10px 10px;
border-radius: 5px;
}
td:nth-child(2),
td:nth-child(3),
td:nth-child(4) {
width: 30px;
}
tr:active {
color: orange;
}
td {
position: relative; /* added */
}
td:hover::before { /* added */
content: '';
position: absolute;
top: 0;
right: 0;
height: 100%;
width: 100vw;
background-color: #00BD9A;
z-index: -1;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<div class="table-responsive">
<table class="table table-condensed">
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
</table>
</div>
Upvotes: 1
Reputation: 191976
You can insert the cells in a reverse order, and then change the order visually by rotating the table, and rotating each cell. Now you can use the sibling selector ~
.
.table {
width: 310px;
}
td:nth-child(1) {
width: 200px;
}
.table-responsive {
border: 1px solid;
width: 340px;
padding: 20px 10px 10px 30px;
border-radius: 5px;
transform: rotateY(180deg);
}
td:nth-child(1),
td:nth-child(2),
td:nth-child(3),
td:nth-child(4) {
width: 30px;
}
td {
transform: rotateY(180deg);
white-space: nowrap;
}
tr:active {
color: orange;
}
td:hover, td:hover ~ td {
background-color: #00BD9A;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<div class="table-responsive">
<table class="table table-condensed">
<tr>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td>Lorem ipsum dolor sit amet,</td>
</tr>
<tr>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td>Lorem ipsum dolor sit amet,</td>
</tr>
<tr>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td>Lorem ipsum dolor sit amet,</td>
</tr>
<tr>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td>Lorem ipsum dolor sit amet,</td>
</tr>
</div>
Upvotes: 0
Reputation: 15786
Validate tr:hover and than reverse the color for the td's that follow the hovered one.
.table {
width: 310px;
}
td:nth-child(1) {
width: 200px;
}
.table-responsive {
border: 1px solid;
width: 340px;
padding: 20px 30px 10px 10px;
border-radius: 5px;
}
td:nth-child(2),
td:nth-child(3),
td:nth-child(4) {
width: 30px;
}
tr:active {
color: orange;
}
tr:hover {
background-color: #00BD9A;
}
td:hover ~ td {
background-color: white;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<div class="table-responsive">
<table class="table table-condensed">
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
<tr>
<td>Lorem ipsum dolor sit amet,</td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
<td><i class="fa fa-gift"></i></td>
</tr>
</table>
</div>
Upvotes: 2