#button:hover:before
изменит псевдоэлемент в ответ на зависание кнопки.Однако, если вы хотите сделать что-нибудь нетривиальное только с псевдоэлементом, вам лучше поместить фактический элемент в ваш HTML.Псевдоэлементы довольно ограничены.
Хотя CSS не позволяет стилизовать элементы на основе элементов, которые следуют за ними, обычно можно создать что-то с таким же базовым эффектом, поместив: hover на родительский узел, т.е.:
<div id="overbutton">
<div id="buttonbefore"></div>
<div id="button"></div>
</div>
#overbutton {
margin-top: 25px;
position: relative;
}
#buttonbefore {
position: absolute;
background-color: blue;
width: 25px;
height: 25px;
top: -25px;
}
#overbutton:hover #buttonbefore {
// set styles that should apply to buttonbefore on button hover
}
#overbutton:hover #buttonbefore:hover {
// unset styles that should apply on button hover
// set styles that should apply to buttonbefore on buttonbefore hover
}