Reputation: 3414
Consider the following code below, with list items and a delete link next to each. I want to have it so only the hovered link item shows the delete button, not all of them. See below for a demonstration of the issue:
.todo-list {
list-style-type: square;
}
.todo-list__delete {
display: none;
}
.todo-list:hover .todo-list__delete {
display: inline-block;
}
<ul class="todo-list">
<li>
Item 1
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 2
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 3
<a class="todo-list__delete" href="#">Delete</a>
</li>
</ul>
Seems like a simple issue but what would be the best way to target the active hovered element in CSS?
Upvotes: 0
Views: 61
Reputation: 2048
I want to have it so only the hovered link item shows the delete button
You kinda answered it yourself. Simply specify the item with :hover
.todo-list {
list-style-type: square;
}
.todo-list__delete {
display: none;
}
.todo-list li:hover .todo-list__delete { /* < here */
display: inline-block;
}
<ul class="todo-list">
<li>
Item 1
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 2
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 3
<a class="todo-list__delete" href="#">Delete</a>
</li>
</ul>
Upvotes: 1
Reputation: 2499
Limit your :hover
selector to list elements.
.todo-list {
list-style-type: square;
}
.todo-list__delete {
display: none;
}
.todo-list li:hover .todo-list__delete {
display: inline-block;
}
<ul class="todo-list">
<li>
Item 1
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 2
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 3
<a class="todo-list__delete" href="#">Delete</a>
</li>
</ul>
Upvotes: 1
Reputation: 189
This way ?
.todo-list {
list-style-type: square;
}
.todo-list__delete {
display: none;
}
li:hover .todo-list__delete {
display: inline-block;
}
<ul class="todo-list">
<li>
Item 1
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 2
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 3
<a class="todo-list__delete" href="#">Delete</a>
</li>
</ul>
Upvotes: 4
Reputation: 18099
Try adding hover on li element:
.todo-list {
list-style-type: square;
}
.todo-list__delete {
display: none;
}
.todo-list li:hover .todo-list__delete {
display: inline-block;
}
Demo: http://jsfiddle.net/GCu2D/2205/
Upvotes: 1
Reputation: 2676
Instead of setting your :hover
on .todo-list
, set it on the li
element.
.todo-list {
list-style-type: square;
}
.todo-list__delete {
display: none;
}
li:hover .todo-list__delete {
display: inline-block;
}
<ul class="todo-list">
<li>
Item 1
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 2
<a class="todo-list__delete" href="#">Delete</a>
</li>
<li>
Item 3
<a class="todo-list__delete" href="#">Delete</a>
</li>
</ul>
Upvotes: 1