Если вы измените способ размещения элементов SVG, так что каждый узел .projectElement
является родственным элементом, то вы можете получить желаемый эффект.
Проблема в том, что CSS окружает каждый вложенный узел своим родителем, поэтому при наведении курсора на дочерний элемент вы также наводите курсор на его родительский элемент.
Использование родных братьев вместо предков позволяет CSS рассматривать каждый элемент в своем собственном контексте.
.projectElement:hover > rect {
width:100px;
}
<html>
<body>
<svg>
<g class="projectGroup">
<g class="projectElement">
<rect width="10" height="10" y="0" style="fill:rgb(0,0,255);" />
</g>
<g class="projectElement">
<rect width="10" height="10" y="15" style="fill:rgb(0,0,255);" />
</g>
<g class="projectElement">
<rect width="10" height="10" y="30" style="fill:rgb(0,0,255);" />
</g>
</g>
</svg>
</body>
</html>