Я пытаюсь создать своего рода диаграмму Венна, которая будет использоваться для навигации позже.
У меня есть три пересекающихся эллипсоида, созданные с помощью фигур CSS.Каждый эллипсоид, а также их два пересечения, будут отдельными звеньями позже.Кроме того, когда вы наводите курсор на них, они должны появиться в соответствии с transform: scale(1.3)
.
Моя проблема в том, что я использую эллипсоиды, которые частично прозрачны с :after
, чтобы создать пересечения, что создает проблему при наведении на них, потому что условие :hover
срабатывает при наведении курсора в любом месте на частичнопрозрачный эллипсоид, а не только :after part
.Это означает, что непересекающиеся области не подлежат перемещению, потому что им мешает другой невидимый эллипсоид.
Я думаю, что пример прояснит ситуацию.
Вот код:
CSS:
.venn-container{position: relative; left: 0;}
.cat_one{
width: 400px;
height: 200px;
background: red;
border-radius: 200px / 100px;
position: absolute;
float: left;
opacity: 0.5;
}
.cat_two{
width: 400px;
height: 200px;
background: green;
border-radius: 200px / 100px;
position: absolute;
float: left;
left: 240px;
opacity: 0.5;
}
.cat_three{
width: 400px;
height: 200px;
background: blue;
border-radius: 200px / 100px;
position: absolute;
float: left;
left: 480px;
opacity: 0.5;
}
.int1{
background: transparent;
width: 400px;
height: 200px;
border-radius: 200px / 100px;
position: relative;
opacity: 0.5;
overflow: hidden;
float: left;
}
.int1:after{
background: black;
position: absolute;
content: '';
border-radius: 200px / 100px;
width: 400px;
height: 200px;
left: 240px;
}
.int1:hover{
transform: scale(1.3);
left: -35px;
}
.int2{
background: transparent;
width: 400px;
height: 200px;
border-radius: 200px / 100px;
position: relative;
opacity: 0.5;
overflow: hidden;
float: left;
left: 80px;
}
.int2:after{
background: black;
position: absolute;
content: '';
border-radius: 200px / 100px;
width: 400px;
height: 200px;
left: -240px;
}
.int2:hover{
transform: scale(1.3);
left: 115px;
}
HTML:
<div class="venn-container">
<div class="cat_one"></div>
<div class="cat_two"></div>
<div class="cat_three"></div>
<div class="int1"></div>
<div class="int2"></div>
</div>
А вот скрипка: https://jsfiddle.net/y3Lvmuqg/2/
Я бы хотел, чтобы :hover
срабатывал только на пересечениях, а затем сделал cat_one
и cat_two
перемещаемыми вне пересечений.
Я не знаю, есть ли способ, которым я делаю, это лучшее, и я открыт для предложений.