Une méthode pour y parvenir consiste à ajouter :
pointer-events: none;
à l'élément pour lequel vous souhaitez désactiver le survol.
(Note : ceci désactive également les événements javascript sur cet élément, les événements de clic tomberont en fait sur l'élément situé derrière).
Support des navigateurs ( 98,12 % au 1er janvier 2021 )
Cela semble beaucoup plus propre
/**
* This allows you to disable hover events for any elements
*/
.disabled {
pointer-events: none; /* <----------- */
opacity: 0.2;
}
.button {
border-radius: 30px;
padding: 10px 15px;
border: 2px solid #000;
color: #FFF;
background: #2D2D2D;
text-shadow: 1px 1px 0px #000;
cursor: pointer;
display: inline-block;
margin: 10px;
}
.button-red:hover {
background: red;
}
.button-green:hover {
background:green;
}
<div class="button button-red">I'm a red button hover over me</div>
<br />
<div class="button button-green">I'm a green button hover over me</div>
<br />
<div class="button button-red disabled">I'm a disabled red button</div>
<br />
<div class="button button-green disabled">I'm a disabled green button</div>