Searched for this while I was trying to make this exact thing work. Turns out, it is possible to do with only CSS (contrary to the other answer). It works quite well too. I tested on my mac and it works in Chrome, Firefox, Safari, Edge (win 10), but not on IE11 (win 10).
.grid {
display: flex;
}
.grid:hover .card {
filter: blur(5px);
}
.card {
padding: 10px;
transition: all 0.2s ease-in-out;
}
.grid .card:hover {
filter: blur(0);
}
<div class="grid">
<div class="card">
<img src="http://placekitten.com/200/150" alt="kitten 1">
</div>
<div class="card">
<img src="http://placekitten.com/200/150" alt="kitten 2">
</div>
<div class="card">
<img src="http://placekitten.com/200/150" alt="kitten 3">
</div>
</div>
Or, just add this to your CSS (see it in your example codepen).
.container:hover .card {
filter: blur(5px);
}
.container .card:hover {
filter: blur(0);
}