Я сделал это изображение с помощью SVG. Вот рабочий пример:
https://jsfiddle.net/9y723z5c/1/
Теперь вы можете увидеть открытое поле с текстом Определить значение. Это тот эффект наведения, который мне нужен. По умолчанию все окна закрыты, но я хочу открывать каждое окно, например поле Определить значение, когда я нахожу на него курсор.
Код SVG открытого окна приведен ниже:
<g id = "Group-10">
<text x = "400" y = "200" fill = "red" style = "font-size : 20px; width : 500px;">Decide Value</text>
<polygon id = "Stroke-14" fill = "#FF4691" points = "472.301332 231.804779 501.852722 214.74142 531.404111 231.803671 501.857151 248.86703"></polygon>
<polygon id = "Stroke-15" fill = "#FC1874" points = "543.406769 243.803228 543.406769 277.926624 513.854272 294.988875 513.855379 260.866587"></polygon>
<polygon id = "Stroke-16" fill = "#B81154" points = "472.299671 255.803228 472.359465 289.998598 501.85549 306.99109 501.85549 272.867694"></polygon>
</g>
К сожалению, понятия не имею, как это сделать :(



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для этого есть очень хорошие библиотеки, но вам придется приложить некоторые усилия для их изучения (правда, совсем немного). Библиотека называется Snap.svg, другая на самом деле не является библиотекой, это плагин для дальнейшего облегчения использования библиотеки, плагин - состояния-привязки-анимации. Это значительно упрощает анимацию SVG с участием в библиотеке. Их API действительно простой и мощный. Я использовал его, чтобы создать эффект выпадающего меню-гамбургера, превращающегося в крестик вперед и назад за считанные минуты.
class = "box". Дайте каждому многоугольнику соответствующий класс top, left и right..box.transform для каждого многоугольника на :hover над группой.pointer-events: all для группы .box. Таким образом, эффект наведения будет активирован, как только указатель окажется над фоном.transition между состояниями..box {
pointer-events: all;
}
.box > polygon {
transition: transform 0.3s;
}
.background {
opacity: 0.1;
fill: #ff056a;
}
.box .top {
fill: #ff4691;
}
.box:hover .top {
transform: translate(0, -12px);
}
.box .right {
fill: #fc1874;
}
.box:hover .right {
transform: translate(10.4px, 6px);
}
.box .left {
fill: #b81154;
}
.box:hover .left {
transform: translate(-10.4px, 6px);
}<svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 150 150" height = "150px" width = "150px">
<g class = "box">
<g class = "background">
<polygon points = "105.233,43.9505 60.2853,18 15.3382,43.9505 15.3382,95.8503 60.2853,121.801 105.233,95.8503" />
<polygon points = "120.027,35.4088 60.2853,0.916406 0.543312,35.4088 0.543312,104.392 60.2853,138.884 120.027,104.392" />
</g>
<polygon class = "top" points = "89.838,52.836 60.286,69.9 30.73,52.838 60.282,35.774" />
<polygon class = "right" points = "60.285,104.022 60.286,69.9 89.838,52.836 89.838,86.96" />
<polygon class = "left" points = "30.79,87.031 30.73,52.838 60.286,69.9 60.285,104.022" />
</g>
</svg>Измените значение непрозрачности при наведении: .box:hover .background { opacity: 1; }. Опять же, определение перехода возможно.
Понятно. Спасибо за вашу огромную помощь.
Just Supper Dupper :) Вау, но может ли этот фон быть ярким, плавным и снова стать менее ярким? Я имею в виду светлый цвет фона пинга.