Я построил квадрат, окружив его четырьмя многоугольниками (в форме трапеции). Мне нужно изменить его цвет в последовательности, щелкнув по нему.
Я не смог найти подобную проблему в Интернете.но я попытался изменить zIndex
на мыши снова и снова, но это не было хорошим решением.
Проблема, которую вы можете проверить здесь https://jsfiddle.net/d9Lh31sv/1/ Даже если многоугольник html показывает его как прямоугольник, и они находятся друг над другом по бокам, как вы видите на этом изображении
Интересно, есть ли способ, когда событие щелчка может уважать только свой предел многоугольника .. Заранее спасибо.
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>