Я построил квадрат, окружив его четырьмя многоугольниками (в форме трапеции). Мне нужно изменить его цвет в последовательности, щелкнув по нему.
Я не смог найти подобную проблему в Интернете.но я попытался изменить zIndex
на мыши снова и снова, но это не было хорошим решением.
Проблема, которую вы можете проверить здесь https://jsfiddle.net/d9Lh31sv/1/ Даже если многоугольник html показывает его как прямоугольник, и они находятся друг над другом по бокам, как вы видите на этом изображении ![Focus](https://i.stack.imgur.com/0BceO.png)
Интересно, есть ли способ, когда событие щелчка может уважать только свой предел многоугольника .. Заранее спасибо.
var objTrapezium = document.getElementsByClassName('trapezium');
if (objTrapezium) {
for (var i = 0; i < objTrapezium.length; i++) {
objTrapezium[i].onclick = function() {
var _Color = this.firstChild.nextSibling.attributes.fill.value;
_Color = _Color=="none" ? "grey" : _Color =="grey" ? "red": _Color =="red" ? "green": _Color =="green" ?"blue": _Color =="blue" ? "grey": "";
this.firstChild.nextSibling.attributes.fill.value = _Color;
};
objTrapezium[i].onmouseover = function() {
this.style.zIndex = 9999;
this.style.backgroundColor = "lightsteelblue";
}
objTrapezium[i].onmouseout = function(){
this.style.zIndex = 1;
this.style.backgroundColor = "transparent";
}
}
}
.trapezium{
position: relative;
}
.square{
left: 202px;
width: 73px;
height: 73px;
top: 102px;
}
.bottom{
left: 53px;
top: 175px;
z-index: 1;
}
.left{
transform: rotate(90deg);
left: -243px;
top: 102px;
}
.right{
transform: rotate(-90deg);
left: -315px;
top: 101px;
}
.top{
transform: rotate(-180deg);
left: 129px;
top: -48px;
}
<div>
<svg class="trapezium square">
<rect stroke="black" fill="none" width="73" height="73" />
</svg>
<svg class="trapezium bottom" height="72" width="217">
<polygon stroke="black" fill="none" points="0,72 72,0 144,0 216,72" />
</svg>
<svg class="trapezium left" height="72" width="217">
<polygon stroke="black" fill="none" points="0,72 72,0 144,0 216,72" />
</svg>
<svg class="trapezium right" height="72" width="217">
<polygon stroke="black" fill="none" points="0,72 72,0 144,0 216,72" />
</svg>
<svg class="trapezium top" height="72" width="217">
<polygon stroke="black" fill="none" points="0,72 72,0 144,0 216,72" />
</svg>
</div>