我试图在css属性box
上添加悬停效果,该属性正在使用css创建饼图。我想在悬停上添加不透明度更改,以使其更具交互性。
在创建伪类:hover
时,它目前没有任何作用。我相信是由于要使用background: linear-gradient
以获得饼图外观。
我尝试通过使用:before
类并向该伪类添加rgba背景,然后向其添加:hover
效果来解决此问题,这对我的显示也没有影响
这是我尝试过的代码片段:
.box {
--v:calc( ((18/5) * var(--p) - 90)*1deg);
width:100px;
height:100px;
display:inline-block;
border-radius:50%;
background: linear-gradient(var(--v), #ffffff 50%,transparent 0) 0 /calc(100% - var(--s)*100%), linear-gradient(var(--v), #002F65 50%,transparent 0) 0 /calc(var(--s)*100%), linear-gradient(to right, #ffffff 50%,#002F65 0);
}
.box:before {
width: 78px;
height: 78px;
display: inline-block;
border-radius: 50%;
background: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.8))
}
.box:hover:before {
opacity: 1
}
<div class="box" style="--p:45;--s:0"></div>
答案 0 :(得分:0)
.box:hover:before {
opacity: 1;
}
不透明度值1表示默认值,因此,如果将其值降低为“ 0.5”,则将为您带来淡入淡出效果。此外,值0将为您提供透明效果。因此,您可以选择0到1之间的值。
.box:hover:before {
content: '';
opacity: 0.5;
}
要在使用:before
时查看结果,应添加content:'';
属性。
.box {
--v:calc( ((18/5) * var(--p) - 90)*1deg);
width:100px;
height:100px;
display:inline-block;
border-radius:50%;
background: linear-gradient(var(--v), #ffffff 50%,transparent 0) 0 /calc(100% - var(--s)*100%), linear-gradient(var(--v), #002F65 50%,transparent 0) 0 /calc(var(--s)*100%), linear-gradient(to right, #ffffff 50%,#002F65 0);
}
.box:before {
/* added 1 line of code; changed width, height, and border's value */
content: '';
width:100px;
height:100px;
border-radius: 50%;
display: inline-block;
background: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.8));
}
.box:hover:before {
content: '';
opacity: 0.5;
}
<div class="box" style="--p:45;--s:0"></div>
如果您希望整个饼褪色,可以尝试一下
.box:hover{
content: '';
opacity: 0.5;
}